更新:
用户打开应用程序并需要更新,然后我们想显示一个带有按钮的弹出窗口,该按钮将用户直接带到 AppGallery,可以从那里安装最新版本。
联合运营服务提供更新应用的能力。您的应用可以调用HMS Core SDK的更新接口,查看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通过回调将检查结果发送给应用。
应用在回调结果中检查onUpdateInfo方法返回的ApkUpgradeInfo实例,并检查是否有更新。
private static class UpdateCallBack implements CheckUpdateCallBack {
private ManinActivity apiActivity;
private UpdateCallBack(GameApiActivity apiActivity) {
this.apiActivity = apiActivity;
}
public void onUpdateInfo(Intent intent) {
if (intent != null) {
// 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.
apiActivity.showLog("There is a new update");
apiActivity.apkUpgradeInfo = (ApkUpgradeInfo) info;
}
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开始安装应用。
您可以使用华为应用市场提供的徽章服务统计应用市场应用下载量,为用户提供静默安装服务。
当用户在频道中点击您的徽章时,用户将被重定向到您在 AppGallery 上的应用详情页面。用户可以点击安装以自动下载并安装您的应用程序。
制作徽章
- 登录 AppGallery Connect 并点击In-app distribution。
- 单击制作徽章选项卡。
- 单击添加并通过按关键字或应用 ID 搜索来添加应用。(您只能为已发布的应用制作徽章。)
- 设置徽章类型,显示徽章,频道名称和推荐人。推荐人是可选的。如果需要归因统计,则需要设置该参数。
- 单击生成徽章以获取徽章及其链接。