接入 SDK 之后,您可以根据业务需求,设置升级白名单,使用 SDK 进行升级检测、并提示用户。
设置白名单
设置白名单用户 ID:
MPLogger.setUserId("您的白名单ID");
检测新版本
快速检测新版本,并弹框提示:
说明仅快速显示升级弹框,不包含强制升级逻辑,若您需要强制升级,请使用自定义升级来进行实现。
MPUpgrade mMPUpgrade = new MPUpgrade(); mMPUpgrade.fastCheckNewVersion(activity, drawable);
快速检测新版本,仅返回检测结果:
MPUpgrade mMPUpgrade = new MPUpgrade(); // 同步方法,子线程中调用 int result = mMPUpgrade.fastCheckHasNewVersion(); if (result == UpgradeConstants.HAS_NEW_VERSION) { // 有新版本 } else if (result == UpgradeConstants.HAS_NO_NEW_VERSION) { // 没有新版本 } else if (result == UpgradeConstants.HAS_SOME_ERROR) { // 错误 }
获取升级详细信息
调用 fastGetClientUpgradeRes
方法获取更多详细信息:
MPUpgrade mMPUpgrade = new MPUpgrade();
// 同步方法,子线程中调用
ClientUpgradeRes clientUpgradeRes = mMPUpgrade.fastGetClientUpgradeRes();
返回的示例显示新版本号、下载地址等信息,其中部分参数含义如下:
downloadURL
:下载地址guideMemo
:升级信息newestVersion
:最新版本resultStatus
:升级模式202 为单次提醒
204 为多次提醒
203/206 为强制更新
fileSize
:待下载的文件大小
其它自定义检测
更多定制,参考以下操作示例:
实现
MPaaSCheckCallBack
接口,用于响应升级 SDK 发出的请求,如弹出提示框:MPUpgrade mMPUpgrade = new MPUpgrade(); mMPUpgrade.setUpgradeCallback(new MPaaSCheckVersionService.MPaaSCheckCallBack() { ......... });
调用
MPUpgrade.checkNewVersion
方法检测升级信息。MPUpgrade
内部封装了MPaaSCheckVersionService
的调用;您也可以定制实现。有关MPaaSCheckVersionService
和MPaaSCheckCallBack
的介绍,请参见 API 说明。
自定义安装包下载目录(10.1.60 及以上版本支持)
配置如下:
File dir = getApplicationContext().getExternalFilesDir("自定义目录");
MPUpgrade mpUpgrade = new MPUpgrade();
mpUpgrade.setDownloadPath(dir.getAbsolutePath());
同时在 file_path.xml
中添加以下配置:
// external-files-path 对应 getExternalFilesDir 的目录
// 请使用与您自定义的目录对应的元素,如果您不清楚该如何选择,请搜索“适配 File Provider”
<external-files-path
name="download"
path="自定义目录" />
处理强制升级解析包失败的问题
部分 rom 在强制升级后,会出现解析包失败问题。发生该问题的原因是,在部分 rom 中,安装包时会访问相应的 App 进程。而强制升级会强制结束 App 进程,所以导致解析包失败。虽然这种 rom 定制行为本身是不符合原生 Android 的行为,但您仍可以通过以下方式进行解决:设置 UpgradeForceExitCallback
,在 needForceExit
返回 false
即可。
实现回调。
public class UpgradeForceExitCallbackImpl implements UpgradeForceExitCallback { @Override public boolean needForceExit(boolean forceExitApp, MicroApplicationContext context) { // 返回 false,就不强制杀掉进程,不会有安装包解析失败问题;返回 true,需要对进程的退出进行处理,会走到下面 doForceExit 方法中。 return false; } @Override public void doForceExit(boolean forceExitApp, MicroApplicationContext context) { // 如果需要关闭进程,则需要上面 needForceExit 返回 true,然后在本方法内关闭进程。 } }
设置回调。
MPUpgrade mpUpgrade = new MPUpgrade(); mpUpgrade.setForceExitCallback(new UpgradeForceExitCallbackImpl());
重要使用同一
MPUpgrade
实例设置回调或请求升级。设置回调后可以避免解析包失败问题,但升级组件将不再自动帮您杀进程。因此当用户没有点击 安装 而是返回到应用的时候,请您设置不可取消的弹框遮盖层,以防止用户绕过强制升级。