Cómo cancelar el registro de GCM después de desinstalar la aplicación

He configurado GCM en mi aplicación. Quiero anular el registro del dispositivo de GCM cada vez que el usuario desinstale la aplicación.

Tengo el código como

Intent unregIntent = new Intent("com.google.android.c2dm.intent.UNREGISTER"); unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); startService(unregIntent); 

Pero donde tenemos que poner este código ..?

Gracias.

No se puede llamar a unregister desde GCM mientras se desinstala, porque no hay ningún método llamado mientras el usuario desinstala la aplicación.

Cuando envíe una notificación de inserción, GCM comprobará si el usuario tiene su aplicación, si el usuario ha desinstalado la aplicación GCM anotará lo mismo y le informará como parte de la respuesta para el empuje.

Usted tiene que comprobar esto en su servidor. No puede hacerlo desde el código de la aplicación, ya que no hay forma de saber cuando el usuario está desinstalando la aplicación.

Consulte: Implementar IDs canónicos. Referencia: https://developers.google.com/cloud-messaging/http#request

Un ID de registro canónico se define como el ID del último registro solicitado por la aplicación. Éste es el ID que el servidor debe utilizar al enviar mensajes al dispositivo.

Si más adelante intenta enviar un mensaje utilizando un ID de registro diferente, GCM procesará la solicitud como de costumbre, pero incluirá el ID de registro canónico en el campo registration_id de la respuesta. Asegúrese de reemplazar el ID de registro almacenado en su servidor con este ID canónico, ya que eventualmente el ID que está utilizando dejará de funcionar.

Referencia: https://stuff.mit.edu/afs/sipb/project/android/docs/google/gcm/adv.html#canonical

Si el ID canónico no es 0, tiene un registro duplicado.

Digamos, por ejemplo, que tiene 2 registros en su base de datos:

Registro_a

Registration_B

Cuando envíe una notificación de inserción, su servidor obtendrá responder con algo similar a esto:

 {"multicast_id":########,"success":1,"failure":0,"canonical_ids":1,"results": [{"registration_id":"new_id_registration_id","message_id":"0:########"}]} {"multicast_id":######### ,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:################"}]} 

Guarde estos datos en una matriz. Observe que el primero tiene un "canonical_ids": 1. Esto significa que había un duplicado. Así que para saber qué registro en su base de datos es el antiguo. Sólo busque "registration_id" en el anterior y guarde el valor del índice. Este valor de índice apunta al registro antiguo en su base de datos.

En el ejemplo anterior, registration_A sería el antiguo registration_id.

Obtenga todos los registros de su base de datos. A continuación, elimínelo en función del valor de índice recuperado. O puede actualizarlo. Eso depende de cómo configurar su base de datos.

¡Buena suerte!

  • Android parse push notificación y nuevo GCM generar token de dispositivo equivocado y analizar notificación push no funciona
  • usando la daga para inyectar la base de datos junto con el gcm que recuperará datos de la base de datos
  • Migración de GCM 2.0 a API de InstanceID de GCM 3.0
  • Android: errores de difusión no ordenados con GCM
  • GCM Clave para aplicaciones de navegador (con referers) estado inactivo
  • GCM - Mensaje de error "Se produjo un error desconocido al procesar la solicitud. Inténtelo de nuevo "al crear un nuevo proyecto
  • Proyecto de API carece de ID de proyecto en Google Developers Console
  • Cómo agrupar las notificaciones de Android como whatsapp?
  • ¿Cómo enviar un GCM de alta prioridad?
  • Obtener INVALID_SENDER en un dispositivo mientras está trabajando con otro GCM android
  • Cómo crear clave API para GCM?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.