【问题标题】:Android In-app update API -> Immediate update problemAndroid 应用内更新 API -> 立即更新问题
【发布时间】:2019-05-23 11:28:34
【问题描述】:

开始尝试In-app updates。一切似乎都很完美。

但是...当进入一些边缘情况时,例如,在下载更新的过程中取消更新的过程,API 出于某种原因停止按预期工作。

示例:我开始我的活动并在 onResume() 中做第一件事,我这样做:

//In app update code. Only works for Android 5.0 and above.
if (Build.VERSION.SDK_INT >= 21) {
    AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);
    Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
    appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
                    if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE) {
                        try {
                            appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, this, 1333);
                        } catch (IntentSender.SendIntentException e) {
                            e.printStackTrace();
                        }
                    } else if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                        // If an in-app update is already running, resume the update.
                        try {
                            appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE,this, 1333);
                        } catch (IntentSender.SendIntentException e) {
                            e.printStackTrace();
                        }
                    }
    });
 }

当我点击更新按钮并出现更新屏幕时,我立即取消更新。它使用 onActivityResult 返回请求代码 (1333) 和结果代码 (STATUS_UNKNOWN = 0) 。我在那个 if 语句中调用了 finish(),因为这是一个必须更新的关键更新。

现在的问题是,当第二次进入应用时,再次触发 onActivityResult,没有显示来自应用内更新 API 的任何对话框,只是在 onActivityResult 回调中返回请求/结果代码。

有类似问题的人吗?

【问题讨论】:

  • 是的,几天前我也遇到了同样的问题。 SDK 目前似乎不支持这种情况。只有一件事可能会有所帮助 - 您可以在 AppUpdateManager 实例上使用 registerListener (InstallStateUpdatedListener listener),并在 installState 中收听特定的 installStatus - int 代码 6 对应于 CANCELLED 状态,其中我发现为用户设置替代更新流程很方便
  • 所以我必须立即更新。下面是我在 onActivityResult 中的代码 if (requestCode == IMMEDIATE_UPDATE_APP_REQUEST_CODE) { if (resultCode == RESULT_CANCELED) { //user has cancelled ask again showImmediateUpdateUI(); } } 但下次不会显示更新对话框。有什么选择?
  • 似乎存在针对同一问题的开放错误。 issuetracker.google.com/issues/133092990 。根据评论,它的 Play-store 问题将在接下来的 w 周内发布。
  • 是的,@VanKhulup 问题出在 SDK 的某个地方,我不想为我的用户采用一些解决方法。 Mangesh,感谢您链接到官方支持票证(想自己打开但没有时间)。
  • 有没有人为这个用例找到解决方案?

标签: android google-play-services in-app-update


【解决方案1】:

似乎存在针对同一问题的开放错误。 https://issuetracker.google.com/issues/133092990 。根据评论,它的 Play-store 问题将在接下来的几周内发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2021-09-10
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多