2014-04-05 12 views
5

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); 

     } 
    } 

}

+0

verwenden diesen Link http: //Paketüberfluss.com/questions/17188982/how-to-fix-google-Cloud-Messaging-Registrierung-Fehler-Service-nicht verfügbar – Yogendra

+1

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

+1

@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

Antwort

-1

Wenn Sie android amulator verwenden, wird nicht Service

4

OP zur Verfügung aufgelöst sein Problem und schrieb Lösung in Kommentar. Lösung:

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 !

Gehen Sie zu Einstellungen

Suchen Sie nach Datennutzung

enter image description here

Geben Sie für "Google Play-Dienste"

enter image description here

Wenn Sie auf einen anderen Bildschirm eingeben:

  1. Menü
  2. BackgroundData einschränken (Überprüfen Sie, ob es aktiviert ist, und deaktivieren Sie es.)

enter image description here

+0

Wie überprüft man diese Einstellung in Nexus 5 – Megha

+0

Wo ist das Panel "Google-Dienste"? –

+0

Vielen Dank ..... Ich habe das gleiche Problem und leide an zwei Tagen ... Danke Mann –

Verwandte Themen