全部产品
云市场

使用 SDK

更新时间:2020-04-28 16:55:23

接入 SDK 之后,您就可以根据业务需求,使用 SDK 进行升级检测、并提示用户。根据更新种类,可以分为非强制更新和强制更新。

非强制更新

  • 快速检测新版本,并弹框提示:
    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
    其中 resultStatus 字段代表升级模式:

    • 202 为单次提醒。
    • 204 为多次提醒。
    • 203/206 为强制更新。
  • 更多定制,参考以下操作示例:

    1. 实现 MPaaSCheckCallBack 接口,用于响应升级 SDK 发出的事情,如弹出提示框:
      1. MPUpgrade mMPUpgrade = new MPUpgrade();
      2. mMPUpgrade.setUpgradeCallback(new MPaaSCheckVersionService.MPaaSCheckCallBack() {
      3. .........
      4. });
    2. 调用 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 实例设置回调或请求升级。
  • 设置回调后可以避免解析包失败问题,但升级组件将不再自动帮您杀进程。因此当用户没有点击 安装 而是返回到应用的时候,请您自行设置不可取消的弹框遮盖层,以防止用户绕过强制升级。

相关链接