当 Playstore 上有新更新并且设备上的当前应用版本低于 Playstore 上的应用版本时,这些方法将始终返回 true。要确定更新是灵活的还是立即的,我们需要在远程配置中为灵活或立即更新设置一个标志,例如 {"upgradeType":0/1} 其中 0 = FLEXIBLE 和 1 = IMMEDIATE。目前我们在 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 值是我们从远程配置中获得的特定类型更新的值。