android - 内部应用更新 : clientVersionStalenessDays() returning null when testing with internal app sharing

标签 android in-app-update internal-app-sharing

图书馆:

implementation 'com.google.android.play:core:1.7.3' 
implementation 'com.google.android.play:core-ktx:1.7.0'

附加信息:

有关应用程序更新和内部应用程序共享的所有其他内容对我都适用,如果我在 if 语句中几天不使用条件可用,我确实会收到提到更新的对话框。

1.) 我正在根据找到的文档实现应用更新 here .

      // Returns an intent object that you use to check for an update.
      val appUpdateInfoTask = appUpdateManager.appUpdateInfo

       // Checks whether the platform allows the specified type of update,
      // and checks the update priority.
        appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
            val daysAvailable = appUpdateInfo.clientVersionStalenessDays() ?: 0
            Toast.makeText(this, "Update availbable for $daysAvailable days", Toast.LENGTH_LONG).show()
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    && daysAvailable >= DAYS_FOR_FLEXIBLE_UPDATE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                startUpdate(appUpdateInfo, appUpdateManager, AppUpdateType.FLEXIBLE, REQUEST_CODE_UPDATE_FLEXIBLE)
            } else if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    && daysAvailable > DAYS_FOR_IMMEDIATE_UPDATE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                startUpdate(appUpdateInfo, appUpdateManager, AppUpdateType.IMMEDIATE, REQUEST_CODE_UPDATE_IMMEDIATE)
            }
        }

为了通过 Google Play 进行尝试,我使用了内部应用共享方法。所以我实际上在内部应用程序共享上上传了 3 个版本的应用程序。所以我点击第一个 apk,它的版本号为 v200,然后我点击版本 201 的链接,但根据指南,我没有点击安装。我等了 1 或 2 天,但 appUpdateInfo.clientVersionStalenessDays() 仍然返回 null,即使在我点击第二个版本的 apk 链接 (v201) 几天后也是如此。 我的第一个问题是,为什么这个方法总是为我返回 null,即使它知道有可用的更新?

2.) 我的第二个问题是关于 appUpdateInfo.clientVersionStalenessDays() 本身。假设今天是星期一,用户安装了 200 版,我们发布了 201 版,他可以在星期二使用。理论上,周四 appUpdateInfo.clientVersionStalenessDays() 应该返回 2(因为此用户有 2 天有更新可用)。但是他还是没有选择更新。然后在星期五我们发布了版本 202,他在星期六可以使用。星期天,上面的方法应该返回什么? 1 还是 5? **所以我的第二个问题基本上是,当有新版本可供用户使用时,此方法计数器会重置吗?当我们发布 v202 版本时它会重置吗? (此方法会检查版本 202 对他可用多长时间,还是只是一般更新?)。

如果我应该提供有关我的问题的任何其他信息,请告诉我。

最佳答案

它在内部应用程序共享中不起作用并返回 null。您可以检查构建版本,如果构建版本等于调试 - 使用模拟值

关于android - 内部应用更新 : clientVersionStalenessDays() returning null when testing with internal app sharing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63134939/

相关文章:

android - 内部应用分享显示下载错误 |从服务器检索信息时出错。 DF-DFERH-01

android - Google 内部应用共享 - 意外错误

android - 在折线图中显示更多 X 值

Android:具有两种背景颜色的按钮

java - Android 10 及更高版本上的即时应用内更新会在安装/重启后关闭应用

Android,当我使用应用内更新时发生 InstallException

android - 通过内部应用程序共享测试应用程序更新

java - 高效的图像调整大小

java - 向 ArrayList 添加单个元素会另外添加 11 个空元素吗?

android - 我们可以为内部应用共享设置更新优先级(在应用更新中测试)吗?