У меня есть приложение в магазине Google Play. Когда доступна версия обновления, более старая версия станет непригодной для использования, то есть, если пользователи не обновят приложение, они не войдут в приложение. Как я могу заставить пользователей обновить приложение, когда станет доступна новая версия?
102
Ответы:
Я согласен с точкой зрения Скотта Хельма в другом ответе здесь. Но в некоторых экстремальных ситуациях (проблемы с безопасностью, критические изменения API ...), когда вам абсолютно необходимо, чтобы пользователи обновили, чтобы продолжить использование приложения, вы можете предоставить простой API управления версиями. API будет выглядеть так:
versionCheck API:
Параметры запроса:
int appVersion
отклик
boolean forceUpgrade
boolean recommendUpgrade
Когда ваше приложение запускается, вы можете вызвать этот API, который передает текущую версию приложения, и проверить ответ на вызов API управления версиями.
Если
forceUpgrade
естьtrue
, показать всплывающее диалоговое окно с параметрами или позволить пользователю выйти из приложения, или перейти в Google Play Store , чтобы обновить приложение.В противном случае , если
recommendUpgrade
естьtrue
, отобразить всплывающее диалоговое окно с параметрами для обновления или продолжения использования приложения.Даже при наличии этой возможности принудительного обновления вы должны продолжать поддерживать более старые версии, если в этом нет крайней необходимости.
источник
попробуйте это: сначала вам нужно сделать запрос на ссылку playstore, получить оттуда текущую версию и затем сравнить ее с вашей текущей версией.
источник
Вы не должны прекращать поддержку более старой версии, как только выходит новая версия. Это приведет к ужасному пользовательскому опыту. Я не знаю ни одного поставщика программного обеспечения, который бы делал это по уважительной причине.
Что произойдет, если пользователь не может или не хочет обновлять в это время? Они просто не могут использовать ваше приложение, и это плохо.
Google не предоставляет никаких опций для отслеживания версий, поэтому вам придется использовать собственную. Достаточно простой веб-службы для возврата текущей действующей версии, которую может проверить ваше приложение. Затем вы можете обновить версию, и приложение узнает, что она устарела. Я бы рекомендовал использовать это только для того, чтобы ваши пользователи знали, что есть обновление, быстрее, чем это зависит от Google Play. На самом деле его не следует использовать для предотвращения работы приложения, просто чтобы предложить пользователю обновить его.
источник
Решение от команды Google
Начиная с Android 5.0, это легко сделать с помощью нового механизма обновлений Google Play In App. Требования заключаются в том, чтобы иметь библиотеку Play Core версии 1.5.0+ и использовать idstribution App Bundles вместо apks.
Библиотека предоставляет вам 2 разных способа уведомить пользователей об обновлении:
Гибкость, когда пользователи могут продолжать использовать приложение, пока оно обновляется в фоновом режиме.
Немедленно - экран блокировки, который не позволяет пользователю войти в приложение, пока он не обновит его.
Следующие шаги по его реализации:
Все эти шаги по реализации подробно описаны на официальном сайте: https://developer.android.com/guide/app-bundle/in-app-updates
источник
Ответы Скотта и Майкла верны. Разместите службу, которая предоставляет минимальный номер версии, которую вы поддерживаете, и сравните ее с установленной версией. Надеюсь, вам никогда не придется использовать это, но это спасение, если есть какая-то версия, которую вы обязательно должны убить из-за серьезной ошибки.
Я просто хотел добавить код, что делать дальше. Вот как вы затем запускаете Google Play Intent и переносите их в свою новую версию в магазине после того, как пользователю предложили обновить.
Вам следует пересмотреть свой дизайн, если вам нужно принудительно обновлять каждый выпуск.
источник
Google представил библиотеку обновлений в приложении ( https://developer.android.com/guide/app-bundle/in-app-updates ), она работает на Lollipop + и дает вам возможность запрашивать у пользователя обновление с красивым диалоговое окно (ГИБКИЙ) или с обязательным полноэкранным сообщением (НЕМЕДЛЕННО).
Вам нужно реализовать последнее. Вот как это будет выглядеть:
Я рассмотрел весь код в этом ответе: https://stackoverflow.com/a/56808529/5502121
источник
Официально Google предоставляет для этого Android API.
Обновление API уже доступно - https://developer.android.com/guide/app-bundle/in-app-updates
источник
Я настоятельно рекомендую проверить функциональность Firebase Remote Config для этого.
Я реализовал это с помощью параметра app_version_enabled с условием «Отключить версии Android», которое выглядит так:
По умолчанию для параметра установлено значение «true», но для параметра Disabled Android Versions установлено значение false. В моем регулярном выражении для отключенных версий Android вы можете добавить больше отключенных версий, просто указав другую
|{version name}
в этих скобках.Затем я просто проверяю, говорит ли конфигурация, что версия включена или нет - у меня есть действие, которое я запускаю, вынуждая пользователя выполнить обновление. Я проверяю только два места, где приложение может быть запущено извне (мое действие по умолчанию для запуска и действие по обработке намерений). Поскольку Remote Config работает на основе кеша, он не будет немедленно захватывать «отключенные» версии приложения, если не прошло необходимое время для того, чтобы кеш стал недействительным, но это не более 12 часов, если вы собираетесь их рекомендуемое значение срока действия кеша.
источник
проверить код версии локального и игрового магазина apk
реализовать класс для проверки версии
диалоговое окно для обновления
макет диалога
источник
Лучше определить наш собственный процесс для обновления.
Android и iOS: если доступна последняя версия приложения, будет отображаться предупреждение как «Доступна последняя версия с дополнительными функциями. Для обновления нажмите кнопку обновления» (предупреждение с помощью кнопки «Upgarde» и «Нет. Спасибо»). Затем приложение будет перенаправлено на playstore / Appstore, и он откроет последнюю версию.
Перед процессом обновления убедитесь, что вы выполнили правильный процесс миграции базы данных, если есть какие-либо изменения схемы базы данных.
источник
Для принуждения пользователя приложения к обновлению, если обновление доступно на рынке, вы должны сначала проверить версию приложения на рынке и сравнить ее с версией приложения на устройстве. Если они разные, возможно, доступно обновление. В этом посте я записал код для получения текущей версии маркета и текущей версии на устройстве и сравнения их между собой. Я также показал, как показать диалог обновления и перенаправить пользователя на страницу обновления. Посетите эту ссылку: https://stackoverflow.com/a/33925032/5475941 Просто убедитесь, что в диалоговом окне вы показываете только кнопку обновления пользователя и не показываете ему кнопку отмены. В этом случае он будет вынужден выполнить обновление, прежде чем он сможет использовать приложение.
источник
Здесь обязательно стоит упомянуть о скором выпуске In-app Updates API .
источник
Рекомендуется использовать удаленную конфигурацию для версии приложения и всегда проверять при запуске, является ли текущая версия приложения такой же, как удаленная версия, или нет, если не принудительное обновление из магазина приложений.
Простая логика счастливого кодирования ..
https://firebase.google.com/docs/remote-config/android
источник
Вы можете использовать встроенные обновления основной библиотеки Play, чтобы решить эту проблему. Вы можете проверить наличие обновлений и установить их, если они доступны.
Обновления внутри приложения несовместимы с приложениями, использующими файлы расширения APK (файлы .obb). Вы можете выбрать гибкую загрузку или немедленные обновления, которые Google Play позаботится о загрузке и установке обновления за вас.
Обратитесь к этому ответу https://stackoverflow.com/a/58212818/7579041
источник
вы можете сделать это, выполнив сопоставление между номером версии, который хранится в приложении в переменной, и аналогично текущая версия приложения хранится на стороне сервера, и каждый раз, когда пользователь открывает приложение, следует отправлять первый запрос, чтобы проверить, что, если он нашел сопоставление ничего не делает, просто позволяет пользователю использовать ваше приложение, иначе запускать намерение в игровой магазин Google или открывать окно веб-просмотра для вашего приложения (window.open (" https://play.google.com/store/apps/details?id= package_name ", '_system', 'location = yes');) и там у них автоматически будет кнопка с запросом обновления, что делает для вас магазин Google Play, если у вас нет автоматических обновлений.
источник
Вы можете уведомить своих пользователей о том, что для обновления доступна новая версия текущего приложения. Также, если это условие выполняется, вы можете заблокировать вход в приложение.
Пожалуйста, посмотрите, дает ли это вам решение.
источник
Что ж, может быть много решений этой проблемы, таких как очистка кода версии со страницы приложения (страница приложения Google Play) и т. Д.
Но я собираюсь показать вам окончательное решение, которое не будет стоить ни копейки и будет работать как по волшебству.
панели Firebase Remote Config.
Сравните его с кодом текущей версии приложения, который вы можете получить с помощью следующего кода
}
Если полученный код версии больше, чем текущая версия, покажите AlertDialog с просьбой обновить приложение. В противном случае приложение уже обновлено.
Итак, всякий раз, когда вы развертываете новую версию, вам нужно поместить этот код новой версии в панель конфигурации Firebase Remote.
Вы можете прочитать весь учебник о том, как заставить пользователей обновлять приложение с помощью Firebase Remote Config.
источник
Google выпустил обновления в приложении для библиотеки Play Core.
Я реализовал легкую библиотеку, чтобы легко внедрять обновления в приложении. По следующей ссылке вы можете найти пример того, как заставить пользователя выполнить обновление.
https://github.com/dnKaratzas/android-inapp-update#force-updates
источник
var activeVersion = "3.9.2";
var currentVersion = "3.9.1";
var activeVersionArr = activeVersion.split ("."); var currentVersionArr = currentVersion.split (".");
var compareArray = JSON.stringify (activeVersionArr) == JSON.stringify (currentVersionArr);
если (compareArray) {вернуть ложь; }
if (! compareArray) {for (var i = 0; i <activeVersionArr.length; i ++) {
if (activeVersionArr [i]! == currentVersionArr [i]) {
if (activeVersionArr [i]> currentVersionArr [i]) { вернуть истину; } else {вернуть ложь; }
}}}
источник