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.
- Excepción Android Registro de mensajería de Google Cloud
- Haga clic en la notificación GCM para no abrir la actividad deseada en Android Kitkat
- El registro de GCM no funcionó en mi emulador
- Servidor para la notificación de empuje de GCM a android en C #
- Problemas para mantener vivo el mensaje de Google Cloud
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.
- ¿Son confiables las notificaciones push de Android?
- ¿Por qué un permiso de GCM no se concede en Android 6?
- Pasar parámetros a GcmTaskService
- GCM, Android, iOS, utilizando la misma ID de remitente y clave de servidor / clave de autorización
- Interfaz de usuario personalizada para una notificación de GCM
- El ID de registro se convierte en "NotRegistered" sin ninguna razón
- Google Cloud Messaging envía notificaciones a todos los dispositivos
- Notificación de Android- Mostrar mensaje completo
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)?