Какую цель выполняет appUpdateInfo.isUpdateTypeAllowed (AppUpdateType.IMMEDIATE) в API-интерфейсе обновления приложений для Android? - PullRequest
7 голосов
/ 30 мая 2019

Я уже давно следую за обновлением API в приложениях для Android, и мне не удается найти какую-либо релевантность следующей строки:

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)

-

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)

Этот isUpdateTypeAllowed () метод использовался в приведенном ниже фрагменте кода в документации Android: https://developer.android.com/guide/app-bundle/in-app-updates#update_readiness. Более того, два вышеупомянутых вызова метода возвращают true во всех случаях, и я не могу найти случай, для которого любой из двух вышеупомянутых вызовов метода возвращает false.

Ответы [ 3 ]

1 голос
/ 28 июня 2019

Эти методы всегда возвращают значение 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 - это значение, которое мы получаем из удаленной конфигурации для определенного типа обновления.

0 голосов
/ 16 июля 2019

Я уже поднимал эту проблему в Google Issue Tracker здесь и получил от разработчиков Google следующий ответ:

Разработчик должен выбрать, какой тип обновления вызывать. Режим определяется приложением в коде. Пожалуйста, смотрите https://developer.android.com/guide/app-bundle/in-app-updates#start_update

Я уже встроил api-обновление в приложение в мобильное приложение GoIbibo, и теперь оно работает отлично. Документация имела эту двусмысленность. Поэтому вы должны написать свою собственную логику, хотите ли вы Гибкое или Немедленное Обновление.

0 голосов
/ 04 июня 2019

Эти методы могут возвращать true, если ваша UpdateAvailability UPDATE_AIVALABLE. Пожалуйста, сначала убедитесь, что это правда:

appUpdateInfo.updateAvailability () == UpdateAvailability.UPDATE_AVAILABLE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...