2012-01-10 4 views
8

Descripción del problema:Cómo coger aplicación de desinstalar el dispositivo y dejar que el servidor sabe de esto (iOS/Android)

Tenemos un servicio que tiene aplicaciones para móviles principales del sistema operativo. Usamos notificaciones push. Cuando el usuario inicia sesión, almacenamos los datos de autorización de su dispositivo (digamos token) para su uso posterior en el servicio de inserción. El problema radica en unas pocas autorizaciones de dispositivos para un usuario y mantenerlas válidas cuando el usuario desinstala la aplicación.

Ejemplo:

di mi entrada al sistema a unas pocas personas, en el caso de probarlo. Se conectaron a través de la mafia. la aplicación y el sistema agregan automáticamente algunas autorizaciones de dispositivos en la base de datos (tokens). Entonces ahora tenemos N tokens de dispositivo para 1 usuario. De modo que si enviamos notificaciones automáticas, todos lo recibirán. Ahora, supongamos que aquellos que tienen aplicaciones instaladas quieren desinstalarlo. Sin desconexión, desinstalan la aplicación a través del administrador de aplicaciones. Y en este momento NO tenemos datos VÁLIDOS para el dispositivo autorizado. Y si tratamos de notificarlos, la notificación no se enviará a ninguna parte. Lo que está mal, y el trabajo inútil para el servidor. ¿Cómo hacer saber al núcleo que algunos de los datos almacenados ya no son válidos?

En breve, existe la posibilidad en Android/iOS de desencadenar el evento de eliminación de aplicaciones. Si la aplicación está siendo eliminada, el servidor de llamadas de la aplicación limpia los datos en el almacenamiento. O si la aplicación está abierta y el usuario la desinstala, ¿se disparará el disparador onDestroy()? ¿O alguna otra?

No soy desarrollador de iOS, no soy desarrollador de Android, solo conozco un poco sobre el segundo y nada sobre el primero. Cualquier consejo será apreciado. Gracias por adelantado.

+0

¿Alguna respuesta para iOS? – devdRew

+0

oh cierto, querías saber sobre eso. no funciona del todo igual, pero al final se te notificará sobre las aplicaciones instaladas cuando hayan fallado las notificaciones suficientes. actualizado la respuesta. – Jens

Respuesta

2

Eso depende del servicio de inserción que esté utilizando. Afaik, si está utilizando C2DM, el acto de desinstalar la aplicación lo anulará automáticamente de C2DM.

Editar:

Ah, y sobre IOS - que yo sepa que no directamente aplicaciones pista desinstalado, no obstante cuentan con un servicio fallido de notificación feedback que después de una secuencia de notificaciones fallidas (reportados por la dispositivo a la red de inserción) se lo notificará, permitiéndole limpiar después de una aplicación desinstalada.

+0

Tienes razón, estamos usando C2DM. Gracias, lo tengo. Una pregunta sobre C2DM: ¿envía notificaciones automáticas si la aplicación está cerrada? (no se ejecuta en segundo plano)? – devdRew

+0

@devdRew: Sí.C2DM invocará su 'BroadcastReceiver' registrado incluso si actualmente no se está ejecutando ningún componente de su aplicación. – CommonsWare

+1

Sí, enviará la notificación de inserción como intención de emisión (action = com.google.android.c2dm.intent.RECEIVE), por lo que no necesita estar en funcionamiento en todo momento. – Jens

4

No puedo hablar por iOS. No puede obtener el control cuando la aplicación se desinstala en Android.

+0

Bien, entendido, pero si la aplicación se ejecuta en segundo plano, y voy a desinstalarla, ¿se disparará el método Destroy()? – devdRew

+0

@devdRew: No confiaría en eso. Además, incluso si lo hace, no podrá distinguir entre una desinstalación y cualquier otro escenario en el que se invoque su 'onDestroy()'. – CommonsWare

+0

Gracias. Lo tengo. – devdRew

Cuestiones relacionadas