Registro de GCM: SERVICIO NO DISPONIBLE en la red móvil
Estoy recibiendo el SERVICIO NO DISPONIBLE durante el registro de GCM.
Comportamiento extraño es que el código funciona bien cuando el dispositivo está en Wifi. Falla casi siempre (90% veces) cuando está en la red móvil.
- Enviar notificación GCM a un dispositivo sin conexión
- ¿Puede Google Cloud Messaging trabajar con Facebook?
- Difundir una notificación a todos los dispositivos registrados
- IllegalArgumentException al agregar una API de mensajería en la nube a GoogleApiClient
- Google Cloud Messaging (GCM) y la caducidad de registration_id, ¿cómo lo sabré?
Internet en datos móviles está funcionando bien, y otras operaciones de servidor están funcionando, aunque son un poco más lento en comparación con Wifi.
Traté de añadir un bucle simple (no exponencial esperar) para seguir intentando después de un intervalo de sueño, pero no hay suerte.
Momento de conmutar Wifi en la operación (GCM registro) tiene éxito.
Por favor ayuda.
**** Actualización Más información ** **: He probado la demostración GCM en mi dispositivo y también tiene el mismo problema. No funciona en los datos móviles, funciona bien en Wifi. El dispositivo donde está fallando es la Nota 3, la versión de destino es 4.4.2. Extrañamente mismo código funciona bien en otro dispositivo (versión 2.3.6)
Registro de GCM
try { String sDeviceID=null; if (checkPlayServices()) { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); sDeviceID = getRegistrationId(context); if (sDeviceID==null) { for(int i=0;i<60;i++){ try{ sDeviceID= gcm.register(SENDER_ID); break; }catch(IOException e){ Thread.sleep(2000); continue; } } // Persist the regID - no need to register again. storeRegistrationId(context, sDeviceID); } sDeviceID = getRegistrationId(context); if (sDeviceID==null) { error=true; throw new Exception("GCM Error"); }
XML de manifiesto
<!-- Receives the actual messages. --> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <!-- Receives the registration id. --> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.planetapp.schoolink" /> </intent-filter> </receiver> <service android:name="com.planetapp.schoolink.GCMIntentService" />
Receptor de radiodifusión
public class GCMBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("++++++++++++ON RECEIVE"); String regId = intent.getExtras().getString("registration_id"); if(regId != null && !regId.equals("")) { /* Do what ever you want with the regId eg. send it to your server */ System.out.println("++++++++++++ID RECEIVED++++++++++++"+regId); } }
}
- Caducidad del registro de Google Cloud Messaging
- GCM 3.0 - gcm no muestra automáticamente la notificación con el parámetro de notificación
- Las campañas de empuje de Facebook (Beta) no funcionan
- GcmListenerService no se llama Cuando la aplicación está en segundo plano
- ¿Qué significa gcm.notification.e = 1, en la carga de notificación push en Android?
- ¿Por qué necesito agregar el archivo de configuración a mi proyecto para configurar gcm correctamente?
- Configuración de Server Side para Google Cloud Messaging
- OnRegistered () de GCMIntentService nunca llamado
OP resolvió su problema y escribió la solución en el comentario. Solución:
Issue resolved. On my mobile, "Google Services" had setting "Restrict background data" checked. This was the reason why "Google Services Framework" or "Google Play Services" was not available when Wifi was turned off. Once I removed the restriction, I started working fine !
Ir a la configuración
Busque el uso de datos
Busque "Servicios de Google Play"
Cuando ingresa a otra pantalla:
- Menú
- Restringir BackgroundData (Comprobar si está marcado y desmarcarlo.)
Si utiliza amulator android, el servicio no estará disponible
- MoveCamera y animateCamera no funcionan la segunda vez
- Android: Volley: ¿Por qué volley imageLoader debe ser invocado desde el hilo principal?