GCM de Android enviado correctamente pero no recibido en algunos dispositivos
En el lado del servidor, estoy utilizando la biblioteca del servidor GCM 1.0.2 proporcionada por Google. Por el lado del cliente, configuré GCM como se indica en la documentación oficial .
Mi problema es que todo funciona bien en la mayoría de los dispositivos, pero en pocos dispositivos, el empuje no se recibe.
- Android GCM 403 error no autorizado con PHP
- Registrar GCM de un proyecto de biblioteca
- Com.google.android.c2dm.intent.REGISTRATION está desaconsejado?
- Mensajería en la nube de Google: limitación de 100 remitentes múltiples
- Notificaciones push de Android: cómo obtener la identificación del dispositivo
if (case1) message = new Message.Builder() .timeToLive(0) .collapseKey("0") .delayWhileIdle(false) .addData("msg", msg).build(); else if (case2) message = new Message.Builder() .collapseKey("2") .addData("msg", msg).build(); else message = new Message.Builder().addData("msg", msg).build(); Result result = sender.sendNoRetry(message, regId); System.out.println("Message ID:"+result.getMessageId()); System.out.println("Failed:" + result.getErrorCodeName());
Por lo que puedo ver de las pruebas con el código anterior, no hay error. El ID del mensaje está presente, pero el nombre del código de error es nulo (que es un signo de empuje exitoso ).
He probado casi todos los escenarios. Probado con TTL, tecla de colapso, retardo mientras encendido y apagado.
¿Cuáles son algunos casos que pueden causar bloquear (?) GCM push? ¿Y cómo puedo resolver esto?
EDITAR
No tengo ni idea de por qué, pero la solución temporal a continuación resuelto mi problema.
En GcmIntentService # onHandleIntent acaba de eliminar
GcmBroadcastReceiver.completeWakefulIntent(intent);
Esta línea libera el servicio de vigilia. Tengo curiosidad, ya que en otros dispositivos, los mensajes push se envían continuamente incluso cuando no se ha eliminado esta línea.
Esto no es una solución porque este documento indica que debo llamar a completeWakeFulIntent después de cada trabajo. También, mi método drenará la batería perceptiblemente.
¿Cualquier sugerencia?
- Necesito sugerencias para enviar notificaciones push
- GCM no recibe el mensaje de abajo Android 4
- ¿Alguna vez cambia un ID de dispositivo Android de GCM?
- ¿Por qué mi actividad siempre muestra el mismo conjunto de datos de una notificación de GCM?
- Confusión de registro Android GCM
- Mensajes de GCM no se entregan
- ¿Es bueno usar sólo GCM para el desarrollo de aplicaciones de chat para android ditching XMPP?
- El emulador de Android no recibe notificaciones push
- Asegúrate de haber configurado correctamente tu
SENDER ID
que recibiste de Google. - Asegúrate de que tu dispositivo se haya registrado correctamente en el servicio GCM de Google.
- Asegúrate de enviar el empuje al ID de registro correcto que hayas recibido de Google. Y que no recibió un error del servicio GCM de Google.
- ¿Ha establecido
delay_while_idle = 1
? Esto significa que el mensaje no llegará al dispositivo si está inactivo (apagado, sin conexión, pantalla bloqueada, etc.). Cambie adelay_while_idle = 0
si desea que su permiso wakelock haga alguna diferencia. Por favor, lea más aquí . - Algunas veces se necesita tiempo para que el empuje llegue (pero nunca demasiado tiempo, entonces hay un problema). Comprueba cuál es el "tiempo de vida" del empuje que has enviado.
¿Tienes la versión correcta de Playstore para recibir la notificación? ¿Has iniciado sesión con una cuenta de Google funcional en esos dispositivos?
También tuve un problema cuando "detener la Fuerza" de una aplicación, no puedes recibir notificaciones en ninguna aplicación después de una "parada de la fuerza" (empieza con android 3.1) así que ten cuidado con eso también.
Si usted está utilizando wifi, puede ser el bloqueo de firewall de Internet el gcm. Intenta utilizar Internet con tu tarjeta SIM móvil.
Lista de verificación
- Asegúrate de que Google Play Store se actualiza a la última versión
- Asegúrese de que no hay ninguna configuración de todo el sistema para las notificaciones que están bloqueando
- Vaya a la aplicación en el Administrador de aplicaciones y desmarque / vuelva a consultar "Notificaciones"
- Si en Wifi, cambiar la conexión Wifi a un AP diferente (si es posible)
- Reiniciar el dispositivo
- Instale 'Push Notification Fixer' (Instale este Fixer)
La configuración de la notificación de primera ejecución puede ser molestamente arbitraria y requiere que el dispositivo sea "pateado" de una o más de estas maneras.
- Imagen giratoria. Animación de la lista o rotación animada? (Androide)
- Java.lang.IllegalStateException: ActionBarImpl sólo se puede utilizar con un diseño de ventana de decoración compatible