Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

Как правильно сделать проверку обновлений версии приложения?

#java #android


Есть такое приложение GetTaxi так вот когда есть доступное обновление, то при открытии
приложения появляется pop-up и сообщает юзеру о доступном обновлении.

Я знаю что play market тоже предлагает обновления, но ведь это все регулируется настройками
и можно отключить автоматическое обновление, нотификациию и все прочие.

Так вот я думаю сделать так, когда есть новый versionCode сохранять его значение
на сервере, а приложение каждый раз при запуске отправляет запрос на сервер и проверяет
совпадает ли цифра с цифрой на сервере, если нет то показываем pop up и прикрепляем ссылку

Вот такая идея)

Я не уверен что такое решение самое правильное поэтому интерисуюсь здесь

Спасибо 
    


Ответы

Ответ 1



Есть готовый библиотеки для такого(дофига). Просто поищи на гитхабе. Первая ссылка на гитхабе: https://github.com/rampo/UpdateChecker Нужно еще подключить апаче в градл так как с 23 версией появились изменения apply plugin: 'com.android.application' android { ... useLibrary 'org.apache.http.legacy' ... }

Ответ 2



Вполне нормальное решение. А всплывающий диалог сделать setCancelable(false) и по кнопке ок открывать плэй маркет. Только нужно убедиться, что плэймаркет уже опубликовал версию, иначе казус выйдет =)

Ответ 3



Вариант с проверкой новой версии приложения со своего сервера является довольно гибким, но в самом простом случае (когда версия приложения не зависит от устройства) наиболее рациональным решением я считаю проверку версии именно из Google Play. Получить текущую версию приложения из Google Play можно, например, так: private class GetNewVersionCodeTask extends AsyncTask { @Override protected String doInBackground(Void... params) { String newVersion; try { newVersion = Jsoup.connect("link_to_your_app_in_google_play") .timeout(30*1000) .userAgent("Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") .referrer("https://www.google.ru") .get() .select("div[itemprop=softwareVersion]") .get(0) .text(); } catch (IOException e) { return null; } return newVersion; } @Override protected void onPostExecute(String newVersion) { super.onPostExecute(newVersion); if (newVersion != null) { Toast.makeText(getApplicationContext(), newVersion, Toast.LENGTH_SHORT).show(); } else { // some actions } } } Здесь для простоты реализована связка AsyncTask + Jsoup, но, разумеется, Вы можете воспользоваться средствами, которые наиболее привычны для Вас.

Комментариев нет:

Отправить комментарий