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

Я создал приложение для Android, которое теперь находится на Play Market. Время от времени я делаю обновления, и я хочу, чтобы пользователи узнали, что доступна новая версия.

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

Solutions Collecting From Web of "Как уведомлять пользователей об обновлении Android-приложения?"

Вам не нужно ничего делать для этого. Поскольку вы упомянули, что используете Android Play, уведомление об обновлении позаботится Google Play.

Вам нужно просто обновить APK с более высоким versionCode и Google Play должен сделать все остальное.

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

Если вы хотите, чтобы пользователь узнал об обновлении при запуске приложения, просто создайте метод утилиты (внутри метода onCreate вашего основного / первого действия), который проверяет, доступна ли более новая версия в Google Play. Если это так, отобразите диалоговое окно предупреждения с соответствующим сообщением и намерение, которое откроет ваше приложение в Google Play, когда пользователь нажмет на кнопку с положительным нажатием диалогового окна предупреждения. Если вы регулярно обновляете приложение, пользователь будет постоянно получать этот диалог оповещения при каждом запуске приложения и, следовательно, может раздражаться. Таким образом, это не лучший подход.

Если вы хотите, чтобы пользователь получал уведомление по телефону (а не когда пользователь запускает приложение), вы можете использовать класс AlarmManager для планирования фоновой службы, которая проверяет наличие обновлений через равные промежутки времени. Если служба обнаруживает, что обновление действительно доступно, опубликуйте уведомление с намерением, которое открывает ваше приложение в Google Play.

Конечно, другой подход заключается в том, чтобы оставить его в самой ОС. Если пользователь не установил предпочтение «Автоматическое обновление» для вашего приложения, пользователь будет регулярно получать уведомление об обновлении, доступном как для вашего, так и для любых других приложений. Но не все пользователи предоставляют справочные данные на своих устройствах, поэтому это не является полностью надежным.

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

На мой взгляд, вы должны создать PreferenceActivity , у которого есть предпочтение как «Регулярно проверяйте обновления», который можно установить из вашего приложения. Если он установлен, сделайте необходимое в своей службе. Возможно, даже дать пользователю возможность выбрать период, после которого служба будет проверять наличие обновления.

Надеюсь, это поможет!

Это зависит от каждого владельца телефона, если она хочет получать уведомления о новых версиях в Google Play, и это зависит от производителя каждого телефона, если по умолчанию это будет включено.

Если вы, однако, находитесь в ситуации, когда вам «требуется», чтобы пользователь обновлял новую версию, чтобы быть совместимой с какой-либо формой протокола, или у вас есть аналогичный пример использования, где у вас есть серверный компонент, вы можете сообщить об этом Пользователь конфликта потенциальной версии в пользовательском интерфейсе на основе информации о том, что является последней версией.

Эта информация может быть захвачена прямо из игры Google, однако, как сказал @Yahel в этом вопросе, google play – закрытая система без официального API, и вам, возможно, придется полагаться на непредсказуемый недокументированный API. Здесь есть неофициальная библиотека API .

Это оставляет только один вариант, который должен содержать эту информацию на вашем собственном сервере. Если у вас уже есть серверный сервер, это может быть тривиально. Просто поместите последнюю версию в XML-файл и пройдите через регулярные промежутки времени от вашего кода. Если код версии устарел, активируйте уведомление в своем пользовательском интерфейсе. Вот пример реализации для этого.

Я надеюсь, что это было полезно 🙂

Используйте это: https://www.push-link.com/

Google Play уведомит ваших пользователей о том, что приложение имеет обновление через панель уведомлений.

Если вы сами настроили систему уведомлений, вероятным результатом будет то, что, хотя пользователь будет уведомлен об этом раньше, когда он или она отправится в Google Play для установки обновления, он пока не будет доступен. Это связано с тем, что с момента публикации «приложения / обновления» и времени до появления в Play. Сообщая пользователям, что есть обновление, когда обновление недоступно, это может привести к путанице и разочарованию.

Мой совет: придерживайтесь системы уведомлений об обновлении Google и не беспокойтесь о попытке получить обновление пользователей на 15 минут раньше.

Некоторые люди используют Android Cloud-to-Device Messaging (C2DM) для уведомления своих пользователей об обновлениях. Я не думаю, что буду беспокоиться, так как я думаю, что Google Play очень хорошо уведомляет меня об обновлениях, и внедрение C2DM добавляет совершенно новое измерение для написания приложения (потому что для этого требуется серверный компонент). Но, возможно, вы хотите предложить своим пользователям более четкое уведомление об обновлении, чем вы получаете из Google Play.

@ Ответ Davek804 выше неверен. Android: versionCode представляет собой целочисленное значение, представляющее версию кода приложения, по сравнению с другими версиями, поэтому использование «1.5b» неверно. Вместо этого используйте «15» (или «150»)

Существует также очень хороший подход для проверки версии и предоставления пользователю уведомления о приложении или когда вы хотите принудительно обновить приложение, если вы можете решить первое подключение вашего приложения к серверу. В ответе первого запроса вы можете отправить Текущую версию приложения, хранящуюся на вашем сервере, а затем на стороне клиента вы можете предпринять соответствующие действия. Преимущества этого подхода:
1-нет дополнительного запроса на версию №.
2-Он также применим, если вы загружаете приложение, отличное от игрового магазина Google.
3 – вы также можете использовать эту идею, если хотите проверить версию при конкретной операции ex-транзакции приложения (если вы добавите новый платежный шлюз).

Не знаю, хотите ли вы пройти дополнительные мили. Вы можете попробовать google appengine, которые обслуживают номер версии для вашего приложения, и позволяют андроидному приложению проверять приложение, чтобы узнать, есть ли новая версия при запуске приложения. Таким образом, не имеет значения, находится ли ваше приложение на игровом рынке google или в магазине приложений amazon, или если оно установлено на телефоне без этих двух устройств с помощью боковой загрузки. Не очень сложно настроить appengine только для обслуживания вашей версии приложения в json. Замените строку «Hello World» на имя версии приложения …

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

Т.е. когда когда-либо запуск приложения ударил этот веб-сервис с текущей версией пользовательского приложения и на сервере, вам нужно проверить, доступна ли какая-либо новая версия или нет (необходимо поддерживать самую последнюю версию приложения) и отправить соответствующий ответ Пользователь. Если доступна какая-либо более новая версия, попросите пользователя загрузить новейшую версию приложения, и если новая версия не доступна, то разрешите пользователю продолжить.

Надеюсь, что что-то должно быть полезно для вас.

Существуют две модели, которые в основном используются для решения проблемы.

 Pull based Push Based 

Его значение зависит от архитектуры или дизайна конкретной системы, которая определяет, используется ли механизм на основе тяги или нажатия.

Для модели на основе pull вы просто делаете один HTTP-запрос соответствующему серверу относительно новой версии приложения. Текущая версия приложения no может быть сохранена в SQLLite в приложении для Android. Это может быть предоставлено серверу, и новая версия может быть проверена на нем на сервере.

Для механизма push вы можете использовать услугу уведомления C2DM push, подробности которой указаны на странице http://code.google.com/android/c2dm/.

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

Шаг 1: Загрузите android-market-api (не файл .jar, полный проект!)

Шаг 2. После импорта в eclipse напишите в своей деятельности следующий код:

 MarketService ms = new MarketService(activity); ms.level(MarketService.REVISION).checkVersion(); 

Теперь нам нужно изменить MarketService.java, потому что он, кажется, сломан.

Шаг 3: перепишите метод обратного вызова и добавьте следующие методы

 protected void callback(String url, JSONObject jo, AjaxStatus status){ if(jo == null) return; String googlePlayversion = jo.optString("version", "0"); String smartphone_version = ""; PackageInfo pInfo; try { pInfo = act.getPackageManager().getPackageInfo(act.getPackageName(), 0); smartphone_version = pInfo.versionName; } catch (NameNotFoundException e) {} boolean new_version_avaible = compare(smartphone_version, googlePlayversion); if(new_version_avaible){ showUpdateDialog(jo); } } private static boolean compare(String v1, String v2) { String s1 = normalisedVersion(v1); String s2 = normalisedVersion(v2); int cmp = s1.compareTo(s2); String cmpStr = cmp < 0 ? "<" : cmp > 0 ? ">" : "=="; System.out.printf("result: "+"'%s' %s '%s'%n", v1, cmpStr, v2); if(cmpStr.contains("<")){ return true; } if(cmpStr.contains(">")||cmpStr.contains("==")){ return false; } return false; } public static String normalisedVersion(String version) { return normalisedVersion(version, ".", 4); } public static String normalisedVersion(String version, String sep, int maxWidth) { String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version); StringBuilder sb = new StringBuilder(); for (String s : split) { sb.append(String.format("%" + maxWidth + 's', s)); } return sb.toString(); } 

Если вы хотите протестировать его, измените строку googlePlayversion на более высокую версию, чем ваша локальная.

Исходный метод сравнения, который я использовал, – это: Как вы сравниваете две версии Strings в Java?

Обычно, когда вы загружаете новое приложение в Google, большинство пользователей получают уведомление об обновлении, некоторые из них будут автоматически загружать приложение на свое устройство, в зависимости от настроек, которые у них есть. Если вы серьезно хотите сделать уведомление из своего приложения, чтобы попросить их обновить (чтобы все получали уведомление, независимо от настроек Google Play, вам нужно будет сделать веб-службу, которая вернет номер последней версии. Затем вы можете сравнить это внутри своего приложения и опубликовать уведомление. Вы можете использовать Google App Engine ( https://developers.google.com/appengine/ ), потому что это работает с eclipse и java, которые у вас, вероятно, уже есть. Этот подход, поскольку он создает много работы для вас, чтобы предоставить то, что уже получили большинство пользователей.

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1.5b" android:versionName="1.5b"> 

Когда вы повторно загрузите свое приложение в Google Play, если эти два атрибута были изменены из предыдущей загрузки, Google Play будет автоматически отправлять уведомления пользователям, которые установили ваше приложение. Это файл AndroidManifest.