Android In-App update API возвращает 0 как доступныйVersionCode и updateAvailability как 1 (UPDATE_NOT_AVAILABLE)

Я пытаюсь реализовать API обновления в приложении, следуя in- app-update-api, при отладке приложения с более ранней версией, чем версия магазина воспроизведения, AppUpdateInfo возвращает availableVersionCode как 0 и updateAvailability как 1 (UPDATE_NOT_AVAILABLE), Примечание: я использовал то же имя пакета и тот же ключ подписи для запуска сборки

Заранее спасибо!


comment
Вы нашли решение этой проблемы?   -  person Kunal    schedule 06.06.2019
comment
Да, я только что загрузил apk в приложение бета-версии в игровом магазине и проверил более раннюю версию релиза apk на моем устройстве.   -  person Moorthy    schedule 07.06.2019


Ответы (3)


Наиболее вероятная причина в том, что Play Store на вашем устройстве еще не узнал о новом обновлении.

После выпуска обновления в Play Developer Console информация об этом обновлении не сразу достигает всех устройств; Некоторое фоновое задание Play Store на устройстве отвечает за периодическую проверку обновлений для установленных приложений и обновление кэшированной информации на устройстве.

«Но я хочу протестировать поведение на моем устройстве сейчас, я не хочу ждать завершения фонового задания, прежде чем смогу протестировать. Могу ли я принудительно обновить этот кеш?»

Да, взгляните на последний пункт раздела "Устранение неполадок" здесь: https://developer.android.com/guide/app-bundle/in-app-updates#troubleshoot Чтобы обновить кеш, вам необходимо: закрыть Play Store; снова открыть его; перейдите в приложение «Мои приложения и игры».

"Моим ли пользователям тоже нужно это делать?"

Нет: ваши пользователи могут просто дождаться запуска фонового задания.

person Alessandro Dovis    schedule 30.05.2019
comment
Можете ли вы сказать нам, работает ли он и для выпуска внутреннего тестового трека? - person Kunal; 06.06.2019
comment
Я имею в виду, будет ли availableVersionCode выбирать из внутреннего выпуска тестовой версии или он будет получать значения только из опубликованной общедоступной версии? - person Kunal; 06.06.2019
comment
Если ваша учетная запись включена во внутреннюю тестовую программу, она сможет обновиться до версии, которая была загружена на внутреннюю тестовую версию. - person Alessandro Dovis; 11.06.2019
comment
Я задал вопрос здесь stackoverflow.com/questions/56581300/ Не могли бы вы нам помочь? - person Kunal; 13.06.2019

По крайней мере, вы должны загрузить приложение из Play Store. Это потому, что устройство должно знать точную информацию о приложении.

person Arda    schedule 20.12.2019

У меня тоже была точно такая же проблема, и я ее решил. Вы должны проверить, какой контекст вы передаете для создания AppUpdateManager. Похоже, вам нужно передать глобальный контекст приложения при создании AppUpdateManager.

Поэтому, если вы просто передаете этот или какой-либо другой контекст активности, измените его на глобальный контекст приложения.

Из

AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);

to

AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(getApplicationContext());

Согласно контексту документации, это контекст приложения для вашего приложения.

введите описание изображения здесь

person Katherine_lee    schedule 24.05.2019
comment
Привет! Я работал над этой функцией Play и считаю, что не имеет значения, используете ли вы здесь ApplicationContext или Activity. Я хотел бы больше узнать о том, действительно ли переключение на контекст приложения решило вашу проблему (удивительно), или, возможно, благодаря достаточно долгому ожиданию мое решение сработало. - person Alessandro Dovis; 30.05.2019
comment
Извините, но в моем случае переключение контекста действительно решило проблему. И у меня было приложение, которое обновилось несколько недель назад, когда я тестировал этот код. Довольно странно, если ваш комментарий правильный ... - person Katherine_lee; 25.06.2019
comment
Я снова проверил свой код и обнаружил, что передаю неверный параметр, если просто использую this для ссылки на контекст приложения. Подводя итог, мое решение действительно сработало, но не потому, что AppUpdateManager требует глобального контекста приложения, а потому, что я просто передал неверный параметр в API. - person Katherine_lee; 25.06.2019
comment
@Katherine_lee, но API только принимает контекст. Как вы могли передать неправильный параметр, если единственными компилируемыми параметрами являются либо Activity, либо ApplicationContext? - person urgentx; 01.07.2019
comment
Согласно документации это должен быть контекст приложения. - person atabouraya; 01.06.2021