No recibe el mensaje de GCM mientras el dispositivo android está conectado a WIFI
Fondo
Estoy trabajando en una aplicación para Android que utiliza Google Cloud Messaging (nueva GCM-API, no C2DM obsoleto) para enviar mensajes de envío a sincronización a todos los dispositivos registrados.
Desde que usé la documentación oficial, mi implementación de cliente funciona casi exactamente igual que el ejemplo de Google. Como servidor, utilizo un simple script PHP ejecutándose en localhost cuya única tarea es enviar mensajes de envío a sincronización a GCM.
- ¿Cómo enviar notificaciones a Android desde php?
- ¿Qué significa gcm.notification.e = 1, en la carga de notificación push en Android?
- Notificación push de Android GCM para aplicaciones de localización
- No recibe la notificación push de GCM en MI teléfono si se cancela la aplicación
- Dispositivo específico que no recibe notificaciones de Google Cloud Messaging
La cuestión
Todo funciona bien siempre y cuando mis dispositivos estén conectados a Internet a través de redes celulares como UMTS (el servidor envía notificaciones a GCM> GCM envía la notificación al dispositivo tan pronto como está en línea> la notificación se muestra en el dispositivo).
Pero cuando el dispositivo está conectado al WIFI, no se recibirán más mensajes GCM (aunque Google envía un "éxito" -replicar a mi servidor PHP). Debido a la siguiente respuesta ya he comprobado si mi router bloquea algunos puertos pero no lo hace.
Tuve el mismo problema de recibir mensajes push, a pesar de que el servidor GCM responde "Success", debido a la privacidad wifi. Cuando utilicé mi wifi de la compañía, no pude recibir el mensaje en móvil, puesto que fueron bloqueados puerto del servidor de GCM.
Curiosamente mi implementación ya ha estado trabajando con WIFI …
Por favor, hágamelo saber si tiene alguna idea de cómo podría resolver este problema. ¡Gracias por la ayuda!
Respuesta de Google al enviar mensajes de GCM desde PHP:
{ "multicast_id":4677038582377051331, "success":1, "failure":0, "canonical_ids":0, "results":[{"message_id":"0:1406364179145476%6ce83c64d7d6c7e2"}] }
Hallazgo muy loco:
El problema se resolvió cuando llamé al script PHP que envía mis mensajes GCM desde el teléfono inteligente y ya que todo funciona bien. De todos modos gracias por ayudar. Todos los derechos reservados
INSINUACIÓN
¡Mientras tanto, este "nuevo" GCM-API está obsoleto! Estoy usando el último GCM-API (publicado en el verano de 2015) ahora. Desde la actualización nunca he enfrentado este problema de nuevo. La nueva API, incluyendo InstanceId-API es muy recomendable desde mi punto de vista, por lo que veo es un más estable que el viejo GCM.
- ¿Existe un equivalente GCM de Android para el servicio de comentarios de emisión Push de iOS?
- Gcm canonical id debe ser actualizado o no
- GCM no recibe mensajes en android 2.3.6 pero funciona en android 4.1.2
- No puede enviar mensajes desde el servidor: Google Cloud Messaging
- Cómo ejecutar GcmListenerService en primer plano
- Google Cloud Messaging no funciona en dispositivos 4.1.2 en una red corporativa
- Notificaciones Push de XMPP (Openfire)
- GCM con el receptor de difusión personalizado
Necesita abrir los puertos 5228 – 5230 para que GCM funcione correctamente.
Compruebe lo siguiente:
Note: If your organization has a firewall that restricts the traffic to or from the Internet, you'll need to configure it to allow connectivity with GCM. The ports to open are: 5228, 5229, and 5230. GCM typically only uses 5228, but it sometimes uses 5229 and 5230. GCM doesn't provide specific IPs. It changes IPs frequently. We recommend against using ACLs but if you must use them, take a broad approach such as the method suggested in this support link.
Si su empresa Wifi no permite estos puertos, entonces no podrá recibir GCM.
Espero eso ayude
Si el servicio funcionó para usted en algún momento de su dispositivo "identificación de registro" podría ser cambiado o simplemente mal.
Si nunca funcionó para usted y después de comprobar que el ID de registro de su dispositivo es el mismo que le está enviando a Google la carga útil de la solicitud, compruebe su Receptor de difusión y el servicio de intención de GCM que despierta su dispositivo porque si esta implementación falla Tu aplicación no recibirás ningún mensaje aunque la solicitud sea recibida por Google como estás señalando.
Versión de GCM obsoleta
¡Mientras tanto, este "nuevo" GCM-API está obsoleto! Estoy usando el último GCM-API (publicado en el verano de 2015) ahora. Desde la actualización nunca he enfrentado este problema de nuevo. La nueva API, incluyendo InstanceId-API es muy recomendable desde mi punto de vista, por lo que veo es un más estable que el GCM-API anterior.
- Actividad de manipulación que gira en Android
- Cómo bloquear los botones de Android / teléfono de código (bloqueo de pantalla)?