appUpdateInfo.isUpdateTypeAllowed (AppUpdateType.IMMEDIATE) 在 Android 应用内更新 API 中的作用是什么?

What purpose does appUpdateInfo.isUpdateTypeAllowed (AppUpdateType.IMMEDIATE) serve in Android In-App Update API?

我关注 Android 中的应用内更新 API 已经有一段时间了,但我找不到与以下行相关的内容:

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)

--

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)

isUpdateTypeAllowed() 方法已在 Android 文档中的以下代码片段中使用:https://developer.android.com/guide/app-bundle/in-app-updates#update_readiness。此外,上述两个方法调用 return 在所有情况下都是正确的,我无法找到上述两个方法调用中任何一个的情况 return false.

如果您的 UpdateAvailability 为 UPDATE_AIVALABLE,这些方法可能 return 为真。 请先确保这是真的:

appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE

当 playstore 上有新的更新并且设备上的当前应用程序版本低于 playstore 上的应用程序版本时,这些方法将始终 return 为真。 要确定更新是灵活的还是立即的,我们需要在远程配置中为灵活或立即更新设置一个标志,如 {"upgradeType":0/1},其中 0 = 灵活,1 = 立即。 目前,我们在 Playstore 控制台中没有任何选项可以在发布构建时为 FLEXIBLE 或 IMMEDIATE 更新设置标志,因此现在我们可以使用远程配置设置标志并确定更新是 FLEXIBLE 还是 IMMEDIATE,将来 Playstore 可能会提供设置标志以识别更新类型的选项。

代码:

val jsonObject=JSONObject(FirebaseConfig().getStringConfig(RemoteConfigConstants.KEY_APP_UPGRADE))
updateFlag = jsonObject.getInt(JsonConstants.UPGRADE_TYPE)

private fun checkForInAppUpdate() {
        appUpdateManager = AppUpdateManagerFactory.create(this)
        appUpdateManager.appUpdateInfo.addOnSuccessListener {
            if ((it.updateAvailability() === UpdateAvailability.UPDATE_AVAILABLE)) 
        {
                if (updateFlag == 0 && it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                    requestUpdate(it)
                    appUpdateManager.registerListener(this@HomeActivity)
                } else if (it.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                    requestUpdate(it, AppUpdateType.IMMEDIATE)
                }
            }
        }
    }

这里的 updateFlag 值是我们从远程配置获取的特定更新类型的值。

我已经在 Google 问题跟踪器 here 中提出了这个问题,我确实收到了 Google 开发人员的回复,如下所示:

It is up to the developer to choose which type of update is invoked. The mode is determined by the app in code. Please see https://developer.android.com/guide/app-bundle/in-app-updates#start_update

我已经在 GoIbibo 移动应用程序中集成 in-app 更新 api,现在 运行 完美。文档有这种歧义。因此,无论您想要灵活还是立即更新,您都应该编写自己的逻辑。

我遇到过 appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE) 或 appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE) 在我的设备上没有网络连接时返回 false 即使更新可用.