¿Cómo evitar que algunos usuarios actualicen la aplicación del mercado de Android?

Tenemos una aplicación, que puede ser descargada de forma gratuita, pero funciona con datos pagados y con licencia. Algunos usuarios compran la versión particular de los datos mientras que otros compran derecho a utilizar los datos más recientes durante algún período de tiempo. Ahora, a medida que la aplicación evoluciona, finalmente deja de soportar datos anteriores a alguna fecha. Por lo tanto, obviamente, los usuarios que tienen los datos de licencia, pero no hay licencia para los nuevos datos no quieren actualizar. Pero si publicamos una nueva versión en el mercado, lo verían y si se actualizan, tendrán problemas para volver a bajar a la versión que realmente funciona para ellos.

Así que podemos de alguna manera instruir la aplicación del mercado para no ofrecer actualizaciones para el usuario en particular o algún hack para lograr ese fin?

En la actualidad utilizamos mecanismos completamente independientes en el mercado para vender y verificar las licencias de los datos, pero podríamos considerar diferentes mecanismos (como el soporte de facturación de Android en la aplicación o algo así) si pudiera ayudar a resolver el problema.

La forma en que lo veo, tiene dos opciones para "deshabilitar" las actualizaciones:

  • Utilice una clave de firma diferente: esto evitará la instalación sin la eliminación de la aplicación anterior, pero las notificaciones de actualización seguirán apareciendo (creo)
  • Utilice un nombre de paquete diferente – esto evitará las actualizaciones ya que es una aplicación completamente independiente en lo que respecta al mercado, y también tiene el efecto secundario de que las versiones antiguas todavía están disponibles para los usuarios que tienen licencia para esa versión de datos.

La segunda opción puede ser una mejor coincidencia ya que puede implementar actualizaciones si es necesario para correcciones de errores, pero también puede garantizar que las versiones completamente nuevas no se detecten como una actualización.


EDITAR:

Totalmente de acuerdo en que las opciones anteriores son engorrosos y realmente no resolver el problema tal cual.

Como mencionaste sin embargo, puedes usar la facturación en la aplicación , pero dada la naturaleza de tus necesidades, tendrías que usar compras no administradas, lo que significa que necesitarás alguna infraestructura para administrar la autorización de compras e impedir que la gente compre la misma licencia. muchas veces.

Supongo que ya tienes mucha de esa infraestructura en lugar de manejar la distribución de los datos sin embargo.

¿Los datos no pueden contener un número de "versión de formato" al comienzo del archivo?

A continuación, puede programar la aplicación para leer los archivos de la versión 1, una nueva aplicación necesita más campos en el origen de datos, por lo que crear datos de la versión 2, lo que agrega campos adicionales, la versión 1 aplicación ve los datos necesita una aplicación más reciente, Para actualizar.

La aplicación de la versión 2 debería saber leer los archivos de la versión 1 y los de la versión 2 (tal vez crear una interfaz de lectores e implementar cargadores para las diferentes versiones de los archivos).

Tendrás que manejar los datos que faltan en archivos v1 / old en el cargador en la aplicación v2. La carga de archivos antiguos es la mejor manera para el cliente, ya que la aplicación no debería dejar de funcionar después de una actualización.

Si guarda una copia de los datos de cada formato, puede ejecutar rápidamente pruebas para comprobar que el cargador de la nueva versión puede cargar cada archivo correctamente, además si la aplicación tiene un error allí no tendrá que corregir varias versiones de la aplicación, solo la actual .

Ok. Vi uno de los carteles sugiere que tienes una manera de leer los datos antiguos.
Primero que es probablemente la mejor opción pero como usted dice sus apps un lío. Debe invertir un poco de tiempo en la migración de sus datos de lectura / escritura a una capa de abstracción. El dolor que su tener en un proyecto (probablemente menos de 4 años de edad) sólo va a empeorar.

Bueno .. así que aquí es cómo he tratado con él en aplicaciones de larga vida.

Cree una ruta de migración. Cree una nueva llamada de clase Migrate. En él tienen varias funciones para convertir la versión del archivo de n a n-1 convert_1_to_2 (fileName) {comprobar la versión y actualizar datos.) Convert_2_to_3 (fileName) …

Sospecho que usted tiene su código antiguo, y podría escribir un método para convertir un bit de datos a la siguiente .. Cuando se añaden nuevas características a los datos, a continuación, crear un nuevo convertido .. Ningún conocimiento de los anteriores sería Necesario, y todo sería bonito y autónomo. Incluso podría tener sub migraciones, así que a lo largo del ciclo de dev, podría haber convert_3a_to_3b.

Ahora … puede archivar la versión original de los datos en caso de que el usuario quiera volver.

Si se accede a los datos de forma remota, es posible que la aplicación incluya la versión o algún hash de sí mismo al solicitarla. Y luego filtrar los datos proporcionados sobre la base de esa información.

Si ya tiene la compra integrada en la aplicación y la infraestructura para soportarla, solo busque nuevos datos cuando se actualice la aplicación. Si el usuario ha adquirido la licencia para los datos actuales, sírvase proporcionarla. De lo contrario, siga utilizando los datos existentes.

Vine con una opción que el mercado contendrá un instalador que descargará e instalará otro .apk contiene el núcleo de la aplicación localmente.

Ya tenemos un diálogo de instalador en la aplicación para descargar los datos y el usuario tiene que ingresarlo al usar la aplicación por primera vez, por lo que también puede ser responsable del núcleo de la aplicación.

No puedes evitar que los usuarios descarguen la nueva versión de una aplicación que ya tienen. Puede registrar una nueva aplicación o revisar la versión y los datos de usuario mediante programación.

  • Nombres de paquetes para dominios que terminan en .do
  • Diseño de una aplicación para Android sólo para tablets
  • Google Play prueba la facturación en la aplicación con la versión beta abierta
  • ¿Cómo abrir Google Play Store directamente desde mi aplicación de Android?
  • ID de publicidad de Google Play? ¿Nuevas políticas para desarrolladores de Google Play?
  • Detectar si el usuario ha calificado la aplicación en Android
  • No se pudo iniciar sesión. Compruebe la conexión de red e inténtelo de nuevo.
  • Android: cómo distribuir la aplicación pagada cuando se paga Google Play no está disponible en mi país
  • ¿Es la GPLv2 compatible con la iOS App Store y Android Market?
  • ¿Es posible obtener una vista previa de una página de mercado de aplicaciones antes de publicarla?
  • Ampliación del certificado de aplicación de Android después de su vencimiento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.