¿Cómo notificar a los usuarios sobre una actualización de la aplicación de Android?

Creé una aplicación para Android que ahora está en Play Market. De vez en cuando, le hago actualizaciones y me gustaría hacerles saber a los usuarios que hay una nueva versión disponible.

¿Cómo puedo enviar una notificación de actualización a los usuarios de la aplicación?

No necesita hacer nada específico para esto. Como mencionó que está usando Android Play, la notificación de actualización está a cargo de Google Play.

Solo debe actualizar la APK con una versionCode superior de versionCode y Google Play debería hacer el rest.

Depende del propietario de cada teléfono si desea que Google Play le notifique sobre las nuevas versiones, y depende del fabricante de cada teléfono que esto se habilite de manera predeterminada.

Sin embargo, si se encuentra en una situación en la que “requiere” que el usuario actualice la nueva versión para ser compatible con algún tipo de protocolo o si tiene un caso de uso similar similar donde tiene un componente de servidor en alguna parte, es posible que desee notificar al usuario de un posible conflicto de versión en la interfaz de usuario basado en información sobre cuál es la última versión.

Esta información puede obtenerse directamente de google play, sin embargo, como @Yahel señaló en esta pregunta, google play es un sistema cerrado sin API oficial, y es posible que deba confiar en una API no documentada e impredecible. Hay una biblioteca de API no oficial aquí .

Esto deja solo una opción, que es mantener esta información en su propio servidor. Si ya tiene un servidor, esto podría ser trivial. Simplemente coloque la última versión en un archivo XML y retírelo a intervalos regulares de su código. Si el código de la versión está desactualizado, active la notificación en su UI. Aquí hay una implementación de ejemplo para hacer eso.

Espero que esto haya sido útil 🙂

Puede hacerlo de muchas maneras, dependiendo de cuándo desea que el usuario pueda ver que hay una actualización disponible.

Si desea que el usuario sepa sobre la actualización cuando se inicia la aplicación, solo cree un método de utilidad (dentro del método onCreate de su actividad principal / primera) que verifique si hay una versión más nueva disponible en Google Play. Si lo hace, muestre un cuadro de diálogo de alerta con un mensaje relevante y un Intento que abre su aplicación en Google Play cuando el usuario hace clic en el botón positivo del cuadro de diálogo de alerta. Si está actualizando la aplicación regularmente, el usuario seguirá recibiendo este diálogo de alerta cada vez que se inicie la aplicación y, por lo tanto, puede irritarse. Por lo tanto, este no es el mejor enfoque.

Si desea que el usuario reciba una notificación por teléfono (y no cuando el usuario inicia la aplicación), puede usar la clase AlarmManager para progtwigr un servicio en segundo plano que verifique una actualización a intervalos regulares. Si el servicio encuentra que una actualización está realmente disponible, publique una notificación con la intención de abrir su aplicación en Google Play.

Por supuesto, otro enfoque es dejarlo en el sistema operativo en sí. Si el usuario no ha configurado la preferencia de “Actualización automática” para su aplicación, el usuario recibirá una notificación regularmente sobre una actualización disponible para usted, así como para cualquier otra aplicación. Pero no todos los usuarios habilitan datos de fondo en sus dispositivos, por lo que esto no es completamente confiable.

Al final, debe respetar las preferencias de los usuarios. Si el usuario no desea actualizar automáticamente la aplicación, o no desea ver un cuadro de diálogo persistente cada vez que inicia su aplicación, no avise al usuario sobre la actualización.

En mi opinión, debe crear una actividad de PreferenceActivity que tenga una preferencia como “Buscar actualizaciones regularmente”, que se puede configurar desde su aplicación. Si está configurado, haga lo necesario en su propio servicio. Incluso se puede dar al usuario la opción de seleccionar el período después del cual el servicio buscará una actualización.

¡Espero que esto ayude!

Google Play notificará a sus usuarios que la aplicación tiene una actualización a través de la barra de notificaciones.

Si configura usted mismo un sistema de notificación, lo más probable es que, aunque el usuario reciba una notificación antes, cuando vaya a Google Play para instalar la actualización, todavía no esté disponible. Esto se debe a que hay un retraso desde el momento en que “publicas” una aplicación / actualización y el tiempo hasta que aparece en Play. Decirles a los usuarios que hay una actualización cuando la actualización no está disponible solo generaría confusión y frustración.

Mi consejo: quédate con el sistema de notificación de actualizaciones de Google y no te preocupes por intentar que los usuarios reciban una actualización 15 minutos antes.

Algunas personas usan la mensajería de nube a dispositivo de Android (C2DM) para notificar a los usuarios de las actualizaciones. No creo que me moleste, ya que creo que Google Play hace un buen trabajo notificándome sobre las actualizaciones, y la implementación de C2DM agrega una nueva dimensión a la escritura de una aplicación (porque requiere un componente de servidor). Pero tal vez desee ofrecer a sus usuarios una notificación de actualización más completa que la que obtiene de Google Play.

La respuesta de @ Davek804 anterior es incorrecta. android: versionCode es un valor entero que representa la versión del código de la aplicación, en relación con otras versiones, por lo que usar “1.5b” no es correcto. Use “15” (o “150”) en su lugar

También hay un enfoque muy bueno para verificar la versión y notificar al usuario en la aplicación o cuando desea actualizar la aplicación por la fuerza si puede decidir la primera conexión de su aplicación con el servidor. En la respuesta de la primera solicitud puede enviar el La versión actual de la aplicación almacenada en su servidor y luego en el cliente puede tomar la acción adecuada. Ventajas de este enfoque:
1-Sin solicitud adicional para la versión no.
2-También es aplicable si está descargando la aplicación que no sea el playstore de google.
3: también puede usar esta idea si desea verificar la versión en el funcionamiento particular de su aplicación, excepto la transacción (si agrega una nueva puerta de enlace de pago).

No sé si quieres caminar más millas. Puedes probar google appengine, que sirve el número de versión de tu aplicación y permite que la aplicación de Android compruebe el apéndice para ver si hay una nueva versión cuando se inicia la aplicación. De esta forma, no importa si tu aplicación está en el mercado de Google Play ni en la tienda de aplicaciones de Amazon, ni si está instalada en el teléfono sin esas dos mediante la carga lateral. No es muy difícil configurar appengine solo para servir la versión de su aplicación en json. Reemplaza la cadena “Hello World” con el nombre de la versión de tu aplicación …

Esto puede ser usando un servicio web simple, solo que esta es una de las formas de lograrlo.

es decir, cuando el lanzamiento de la aplicación llegue a ese servicio web con la versión actual de la aplicación del usuario y en el servidor, debe verificar si hay alguna versión nueva disponible o no (debe mantener la versión más reciente de la aplicación) y enviar la respuesta correspondiente a el usuario. Si hay alguna versión más reciente disponible, solicite al usuario que descargue la versión más nueva de la aplicación y, si no hay disponible una versión más nueva, permita que el usuario continúe.

Espero que al menos algo te sea útil.

Encontré una buena solución para su problema: digamos que desea verificar las actualizaciones de la versión manualmente al inicio de la aplicación y notificar a los usuarios la nueva actualización.

Paso 1: Descargue android-market-api (¡no el archivo .jar, el proyecto completo!)

Paso 2: después de importarlo para eclipsar, escriba en su actividad el siguiente código:

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

ahora, tenemos que modificar MarketService.java, porque parece estar roto.

Paso 3: reescribe el método de callback y agrega los siguientes métodos

 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(); } 

Si desea probarlo, modifique la cadena de googlePlayversion a una versión superior a la local.

El método de comparación de fonts que utilicé es de ¿Cómo se comparan dos cadenas de versiones en Java?

Hay dos modelos que se utilizan básicamente para abordar el problema.

 Pull Based Push Based 

Depende de la architecture o el diseño de un sistema particular que determine si se utiliza un mecanismo de extracción o de empuje.

Para el modelo basado en extracción, solo realiza una solicitud HTTP al servidor afectado con respecto a la nueva versión de la aplicación. La versión actual de la aplicación no se puede guardar en SQLLite en la aplicación de Android. Esto se puede dar al servidor y la nueva versión se puede verificar en el servidor.

Para el mecanismo de inserción, puede utilizar el servicio de notificación push C2DM, cuyos detalles se encuentran en http://code.google.com/android/c2dm/.

Generalmente, cuando carga una nueva aplicación en Google Play, la mayoría de los usuarios reciben una notificación sobre una actualización, algunos la descargan automáticamente en su dispositivo, según la configuración que tengan. Si realmente desea hacer una notificación desde su aplicación para solicitar su actualización (para que todos reciban la notificación, cualquiera que sea su configuración de Google Play, deberá crear un servicio web que devuelva el número de la versión más nueva. puede comparar eso dentro de su aplicación y publicar una notificación. Puede usar Google App Engine ( https://developers.google.com/appengine/ ) porque eso funciona con eclipse y java, que probablemente ya tenga. No lo recomendaría. este enfoque, ya que crea mucho trabajo para que usted pueda proporcionar algo que la mayoría de los usuarios ya tienen.

  

Cuando vuelva a cargar su aplicación en Google Play, si estos dos atributos han cambiado desde la carga anterior, Google Play enviará notificaciones automáticamente a los usuarios que hayan instalado su aplicación. Este es el archivo AndroidManifest.