Ich bekomme SERVICE NICHT während der GCM-Registrierung verfügbar.GCM-Registrierung: SERVICE NICHT im Mobilfunknetz verfügbar
Seltsames Verhalten ist, dass der Code in Ordnung ist, wenn Gerät auf Wifi ist. Fehler fast immer (90% mal) wenn es im Mobilfunknetz ist.
Internet auf mobilen Daten funktioniert gut, und andere Server-Operationen funktionieren, obwohl sie im Vergleich zu Wifi etwas langsamer sind.
Ich habe versucht, eine einfache Schleife hinzuzufügen (nicht exponentiell warten), um nach einem Schlafintervall erneut versuchen, aber kein Glück.
Moment ich switch Wifi auf den Vorgang (GCM Registrierung) erfolgreich ist.
Bitte helfen.
**** Aktualisieren Weitere Informationen ** **: Ich habe die GCM Demo auf meinem Gerät getestet und es hat auch das gleiche Problem. Fehler bei mobilen Daten, funktioniert gut bei Wifi. Gerät, bei dem es fehlschlägt, ist Anmerkung 3, Zielversion ist 4.4.2. Seltsamer gleiche Code funktioniert gut auf einem anderen Gerät (Version 2.3.6)
GCM Registrierung
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");
}
Manifest XML
<!-- 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" />
Broadcast-Receiver
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);
}
}
}
verwenden diesen Link http: //Paketüberfluss.com/questions/17188982/how-to-fix-google-Cloud-Messaging-Registrierung-Fehler-Service-nicht verfügbar – Yogendra
Problem behoben. Auf meinem Handy wurde in den Google-Diensten "Hintergrunddaten beschränken" aktiviert. Aus diesem Grund waren "Google Services Framework" oder "Google Play-Dienste" nicht verfügbar, wenn Wifi deaktiviert war. Sobald ich die Einschränkung entfernt habe, habe ich gut gearbeitet! – Mahesh
@Mahesh Ich habe Hintergrunddaten deaktiviert, aber immer noch das gleiche Problem, wie Sie gemeldet haben. Wenn ich richtig bin, beziehe ich mich auf Einstellungen> Datennutzung> Optionsmenü> Hintergrunddaten beschränken. – Gem