全部产品
云市场
云游戏

进阶指南

更新时间:2020-07-29 15:22:14

接入 SDK 之后,您可以根据业务需求,设置升级白名单,使用 SDK 进行升级检测、并提示用户。

设置白名单

  1. MPLogger.setUserId("您的白名单ID");

检测新版本

  • 快速检测新版本,并弹框提示:

    1. MPUpgrade mMPUpgrade = new MPUpgrade();
    2. mMPUpgrade.fastCheckNewVersion(activity, drawable);
  • 快速检测新版本,仅返回检测结果:

    1. MPUpgrade mMPUpgrade = new MPUpgrade();
    2. // 同步方法,子线程中调用
    3. int result = mMPUpgrade.fastCheckHasNewVersion();
    4. if (result == UpgradeConstants.HAS_NEW_VERSION) {
    5. // 有新版本
    6. } else if (result == UpgradeConstants.HAS_NO_NEW_VERSION) {
    7. // 没有新版本
    8. } else if (result == UpgradeConstants.HAS_SOME_ERROR) {
    9. // 错误
    10. }

获取升级详细信息

调用 fastGetClientUpgradeRes 方法获取更多详细信息:

  1. MPUpgrade mMPUpgrade = new MPUpgrade();
  2. // 同步方法,子线程中调用
  3. ClientUpgradeRes clientUpgradeRes = mMPUpgrade.fastGetClientUpgradeRes();

以下返回的示例显示新版本号、下载地址等信息:

ClientUpgradeRes

其中,

  • downloadURL:下载地址
  • guideMemo:升级信息
  • newestVersion:最新版本
  • resultStatus:升级模式
    • 202 为单次提醒
    • 204 为多次提醒
    • 203/206 为强制更新

其它自定义检测

更多定制,参考以下操作示例:

  • 实现 MPaaSCheckCallBack 接口,用于响应升级 SDK 发出的事情,如弹出提示框:

    1. MPUpgrade mMPUpgrade = new MPUpgrade();
    2. mMPUpgrade.setUpgradeCallback(new MPaaSCheckVersionService.MPaaSCheckCallBack() {
    3. .........
    4. });
  • 调用 MPUpgrade.checkNewVersion 方法检测升级信息。

    说明MPUpgrade 内部封装了 MPaaSCheckVersionService 的调用;您也可以自行定制实现。有关 MPaaSCheckVersionServiceMPaaSCheckCallBack 的介绍,请参见 API 说明

自定义安装包下载目录(10.1.60 及以上版本支持)

配置如下:

  1. File dir = getApplicationContext().getExternalFilesDir("自定义目录");
  2. MPUpgrade mpUpgrade = new MPUpgrade();
  3. mpUpgrade.setDownloadPath(dir.getAbsolutePath());

同时在 file_path.xml 中添加以下配置:

  1. // external-files-path 对应 getExternalFilesDir 的目录
  2. // 请使用与您自定义的目录对应的元素,如果您不清楚该如何选择,请搜索“适配 File Provider”
  3. <external-files-path
  4. name="download"
  5. path="自定义目录" />

处理强制升级解析包失败的问题

部分 rom 在强制升级后,会出现解析包失败问题。发生该问题的原因是,在部分 rom 中,安装包时会访问相应的 App 进程。而强制升级会强制结束 App 进程,所以导致解析包失败。虽然这种 rom 定制行为本身是不符合原生 Android 的行为,但您仍可以通过以下方式进行解决:设置UpgradeForceExitCallback,在 needForceExit 返回 false 即可。

  1. 实现回调。

    1. public class UpgradeForceExitCallbackImpl implements UpgradeForceExitCallback {
    2. @Override
    3. public boolean needForceExit(boolean forceExitApp, MicroApplicationContext context) {
    4. // 返回 false,就不强制杀掉进程,不会有安装包解析失败问题;返回 true,需要自行对进程的退出进行处理,会走到下面 doForceExit 方法中。
    5. return false;
    6. }
    7. @Override
    8. public void doForceExit(boolean forceExitApp, MicroApplicationContext context) {
    9. // 如果需要关闭进程,则需要上面 needForceExit 返回 true,然后在本方法内自行关闭进程。
    10. }
    11. }
  2. 设置回调。

    1. MPUpgrade mpUpgrade = new MPUpgrade();
    2. mpUpgrade.setForceExitCallback(new UpgradeForceExitCallbackImpl());

    注意

    • 使用同一 MPUpgrade 实例设置回调或请求升级。
    • 设置回调后可以避免解析包失败问题,但升级组件将不再自动帮您杀进程。因此当用户没有点击 安装 而是返回到应用的时候,请您自行设置不可取消的弹框遮盖层,以防止用户绕过强制升级。