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.

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.

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.

  • Cómo crear clave API para GCM?
  • ¿Puede alguien explicar la diferencia entre GCM y Google Pub / Sub
  • ¿Cómo implementar múltiples notificaciones push de GCM en una sola aplicación?
  • Cómo reproducir el archivo de sonido cuando se dispara GCMIntentService onMessage?
  • ¿Funcionará GCM Network Manager en dispositivos que no sean de Play?
  • ¿Puedo usar el servicio técnico con socket-io?
  • El servidor GCM de Google devuelve Error no autorizado 401
  • Google Cloud Messaging sin conectividad de datos de trabajo
  • Google Cloud Messaging - CCS (XMPP) vs servidor HTTP
  • Múltiples oyentes de GCM que utilizan GcmListenerService
  • Gestión de escenarios de Notificación de empuje en iOS y Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.