基于 Unity3D 发布新应用版本时,如何实现“更新接口”?
我收到了AppGallery审核组的消息:“我们发现应用启动后HMS中没有调用检测更新接口”。
我发现的唯一文件是在此链接中的 Android Studio 中实现:更新应用程序
基于 Unity3D 发布新应用版本时,如何实现“更新接口”?
我收到了AppGallery审核组的消息:“我们发现应用启动后HMS中没有调用检测更新接口”。
我发现的唯一文件是在此链接中的 Android Studio 中实现:更新应用程序
应用启动后或用户主动查看是否有更新版本时,调用HMS Core SDK相关API查看AppGallery是否有更新版本。如果是这样,显示一个弹出窗口,询问用户是否更新应用程序。
实现该功能的关键步骤如下:
用户触发更新检查,例如,通过启动应用程序或在更新检查页面上手动执行检查。
应用程序调用JosApps.getAppUpdateClient
请求初始化AppUpdateClient
实例。
AppUpdateClient client = JosApps.getAppUpdateClient(this);
HMS Core SDK将AppUpdateClient
当前应用的实例返回给应用。
应用程序调用该AppUpdateClient.checkAppUpdate
方法来请求更新检查。
public void checkUpdate() {
AppUpdateClient client = JosApps.getAppUpdateClient(this);
client.checkAppUpdate(this, new UpdateCallBack(this));
}
HMS Core SDK在AppGallery上查询最新的应用版本信息。
AppGallery 将应用版本信息发送回 HMS Core SDK。
HMS Core SDK通过回调将检查结果发送给应用。
应用在回调结果中检查方法ApkUpgradeInfo
返回的实例,onUpdateInfo
并检查是否有更新。
private static class UpdateCallBack implements CheckUpdateCallBack {
private WeakReference<MainActivity> weakMainActivity;
private UpdateCallBack(MainActivity apiActivity) {
this.weakMainActivity = new WeakReference<MainActivity>(apiActivity);
}
public void onUpdateInfo(Intent intent) {
if (intent != null) {
MainActivity apiActivity = null;
if (weakMainActivity != null && weakMainActivity.get() != null){
apiActivity = weakMainActivity.get();
}
// Obtain the update status code. Default_value indicates the default return code when status cannot be obtained, which is determined by the app.
int status = intent.getIntExtra(UpdateKey.STATUS, DEFAULT_VALUE);
// Error code. You are advised to record it.
int rtnCode = intent.getIntExtra(UpdateKey.FAIL_CODE, DEFAULT_VALUE);
// Failure information. You are advised to record it.
String rtnMessage = intent.getStringExtra(UpdateKey.FAIL_REASON);
Serializable info = intent.getSerializableExtra(UpdateKey.INFO);
// Check whether the app has an update by checking whether info obtained is of the ApkUpgradeInfo type.
if (info instanceof ApkUpgradeInfo) {
// Call the showUpdateDialog API to display the update pop-up. The demo has an independent button for displaying the pop-up. Therefore, this API is not called here. For details, please refer to the checkUpdatePop() method.
if (apiActivity != null) {
apiActivity.showLog("There is a new update");
apiActivity.apkUpgradeInfo = (ApkUpgradeInfo) info;
}
}
if(apiActivity != null) {
apiActivity.showLog("onUpdateInfo status: " + status + ", rtnCode: " + rtnCode + ", rtnMessage: " + rtnMessage);
}
}
}
}
AppUpdateClient.showUpdateDialog
方法来请求为用户显示更新弹出窗口。public void checkUpdatePop(boolean forceUpdate) {
AppUpdateClient client = JosApps.getAppUpdateClient(this);
client.showUpdateDialog(this, apkUpgradeInfo, forceUpdate);
Log.i(TAG, "checkUpdatePop success");
}
HMS Core SDK为用户显示更新弹窗。
用户在更新确认页面上选择更新应用程序。
HMS Core SDK向AppGallery发送请求下载最新的应用安装包。
AppGallery 将应用包返回给HMS Core SDK。下载完成后HMS Core SDK开始安装应用。
有关更多详细信息,请查看此文档。