#java #android #google_play
Есть необходимость: при очередном запуске приложения определять - появилась ли новая версия приложения в маркете? Как программно можно определить номер версии приложения из Google Play Маркета? Текущую версию определяю так: int currrentVersionCode = getPackageManager().getPackageInfo("com.packagename",0).versionCode; Подскажите, кто сталкивался с этим.
Ответы
Ответ 1
Старый способ - распарсить страницу: public class VersionChecker extends AsyncTask{ String newVersion; @Override protected String doInBackground(String... params) { try { newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + "package name" + "&hl=en") .timeout(30000) .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") .referrer("http://www.google.com") .get() .select("div.hAyfc:nth-child(4) > span:nth-child(2) > div:nth-child(1) > span:nth-child(1)") .first() .ownText(); } catch (IOException e) { e.printStackTrace(); } return newVersion; } Bызов: VersionChecker versionChecker = new VersionChecker(); String latestVersion = versionChecker.execute().get(); Новый способ - использовать Firebase Remote Config: Создать Firebase проект. Скачать google_play_service.json и добавить в свой проект. Создать ключ, к примеру, android_latest_version_code В коде: public void initializeFirebase() { if (FirebaseApp.getApps(mContext).isEmpty()) { FirebaseApp.initializeApp(mContext, FirebaseOptions.fromResource(mContext)); } final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); config.setConfigSettings(configSettings); } И сама проверка: int playStoreVersionCode = Integer.parseInt(FirebaseRemoteConfig.getInstance().getString("android_latest_version_code")); PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0); int currentAppVersionCode = pInfo.versionCode; if(playStoreVersionCode > currentAppVersionCode){ // показывать окно, что есть новое обновление } Единственный минус - ключ android_latest_version_code в Firebase вам нужно будет ручками каждый раз обновлять. Ещё, как вариант - где-то у себя это хранить. К примеру, мы в своих играх такие вещи храним в json файле на сервере. Игра при старте получает этот json (где помимо актуальной версии ещё и куча других нужных нам вещей есть). Ответ 2
Пардон, но мб проще подцепить облачный ресурс - тот же firebase. При запуске читаете некоторую константу из firebase. Ключи менять каждый раз не нужно. Обновил версию в playmarket - написал новую строку в firebase.
Комментариев нет:
Отправить комментарий