Эти методы всегда возвращают значение true, если имеется новое обновление для playstore и текущая версия приложения на устройстве меньше, чем версия приложения в playstore.Чтобы определить, является ли обновление гибким или немедленным, нам нужно установить флаг для FLEXIBLE или IMMEDIATE UPDATE в Remote Config, например {"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 - это значение, которое мы получаем из удаленной конфигурации для определенного типа обновления.