文档管理中心
指南联运服务联运应用开发应用升级

应用升级

场景介绍

在应用启动完成后或用户在应用中主动检查应用新版本时,应用需要调用HMS Core SDK的升级接口检测华为应用市场是否有新版本应用。如果需要升级,HMS Core SDK将拉起升级提示框提示用户在华为应用市场升级应用。

您在调用AppUpdateClient.showUpdateDialog方法时传入强制更新按钮参数mustBtnOne的取值不同会带来不同的用户体验。

  • 当mustBtnOne参数传入true时:若您在AppGallery Connect中升级应用的版本时选择了强制升级,用户只能选择立即更新。

    若不选择强制升级,用户可以不立即更新应用而继续使用老版本的应用。

  • 当mustBtnOne参数传入false时:若您在AppGallery Connect中升级应用的版本时选择了强制升级,用户可以选择立即更新或者选择退出应用。若不选择强制升级,用户可以不立即更新应用而继续使用老版本的应用。

    说明

    请务必保证您的客户端中补充“退出应用”按钮的逻辑处理,否则会导致强制更新失效。

前提条件

开发步骤

本功能涉及的关键开发步骤如下:

  1. 调用JosApps.getAppUpdateClient方法初始化AppUpdateClient对象,并调用AppUpdateClient.checkAppUpdate方法请求检查应用是否有更新。
    收起
    自动换行
    深色代码主题
    复制
    1. public void checkUpdate() {
    2. AppUpdateClient client = JosApps.getAppUpdateClient(this);
    3. client.checkAppUpdate(this, callback);
    4. }
  1. SDK通过回调方式将检查结果返回给应用,应用从回调结果中onUpdateInfo方法返回的ApkUpgradeInfo实例确认应用是否有更新。如果有新版本,则调AppUpdateClient.showUpdateDialog方法请求拉起升级提示页面
    收起
    自动换行
    深色代码主题
    复制
    1. private static class Callback implements CheckUpdateCallBack {
    2. private WeakReference<Context> mContextWeakReference;
    3. public Callback(Context context) {
    4. mContextWeakReference = new WeakReference<>(context);
    5. }
    6. @Override
    7. public void onUpdateInfo(Intent intent) {
    8. if (intent != null) {
    9. // 更新状态信息
    10. int status = intent.getIntExtra(UpdateKey.STATUS, -99);
    11. Log.i(TAG, "check update status is:" + status);
    12. // 返回错误码
    13. int rtnCode = intent.getIntExtra(UpdateKey.FAIL_CODE, -99);
    14. // 返回失败信息
    15. String rtnMessage = intent.getStringExtra(UpdateKey.FAIL_REASON);
    16. // 强制更新应用时,弹出对话框后用户是否点击“退出应用”按钮
    17. boolean isExit = intent.getBooleanExtra(UpdateKey.MUST_UPDATE, false);
    18. Log.i(TAG, "rtnCode = " + rtnCode + "rtnMessage = " + rtnMessage);
    19. Serializable info = intent.getSerializableExtra(UpdateKey.INFO);
    20. // 如果info属于ApkUpgradeInfo类型,则拉起更新弹框
    21. if (info instanceof ApkUpgradeInfo) {
    22. Context context = mContextWeakReference.get();
    23. if (context != null) {
    24. // showUpdateDialog接口中最后一个字段传入不同取值会带来不同的用户体验,具体请参考本文档的场景描述,此处以false为例
    25. JosApps.getAppUpdateClient(context).showUpdateDialog(context,(ApkUpgradeInfo) info,false);
    26. }
    27. Log.i(TAG, "check update success and there is a new update");
    28. }
    29. Log.i(TAG, "check update isExit=" + isExit);
    30. if (isExit) {
    31. // 是强制更新应用,用户在弹出的升级提示框中选择了“退出应用”,处理逻辑由您自行控制,这里只是个例子
    32. System.exit(0);
    33. }
    34. }
    35. }
    36. @Override
    37. public void onMarketInstallInfo(Intent intent) {
    38. }
    39. @Override
    40. public void onMarketStoreError(int i) {
    41. }
    42. @Override
    43. public void onUpdateStoreError(int i) {
    44. }
    45. }

在 指南 中进行搜索
请输入您想要搜索的关键词