GCM SERVICE_NOT_AVAILABLE auf Android 2.2
Bin ich immer die Fehlermeldung "SERVICE_NOT_AVAILABLE" auf meinem GoogleCloudMessaging.register () - Aufruf auf ein Android 2.2-Gerät.
Ich Schreibe eine app, die verwendet GoogleCloudMessaging mit der neuen Google-Play-Dienste. Implementiert habe ich es mit den Richtlinien auf der Android-website und meine Quelle enthält eine Menge Fehler zu überprüfen und-handling-code, wie machen Sie sicher, dass die Google Play Services installiert ist oder aktualisiert werden. Der GCM Registrierung code implementiert auch eine exponential backoff, wie google, wie vorgeschlagen, zu implementieren, zu handhaben, die SERVICE_NOT_AVAILABLE Fehler.
Ich getestet habe, meine Anwendung auf einer Vielzahl von Geräten, einschließlich ICS, JB, Wabe und sogar 2.3.x-Geräte. Der GCM Registrierung funktioniert und ich bin in der Lage, zum senden von Nachrichten über GCM. Allerdings auf einem 2.2-Gerät bin ich immer ein SERVICE_NOT_AVAILABLE Fehler auf der GoogleCloudMessaging.register () - Aufruf auch mit dem exponentiellen backoff im Ort.
Dem Gerät, das GCM ist Versagen auf eine Samsung SGH-I896, um genau zu sein und hat das Telefon 2 google-Konten auf. Ich habe gelesen, dass dieser Fehler möglicherweise verursacht durch eine falsch eingestellte Zeit, aber die Zeit ist auf automatisch. Das Telefon ist nicht mit veralteten und ausgeführt wird samsung stock ROM.
Ich habe auch versucht, Neustart des Geräts sowie die Neuinstallation der Google Play Dienste ohne Glück. Jede Hilfe zu diesem Thema wird sehr geschätzt werden.
EDIT: ich habe versucht zu implementieren GCM mit dem alten gcm.jar und GCMRegistrar und es landete auf dem Gerät. Allerdings habe ich kaum Bedenken das eine gute Lösung für das problem als Google aufgehört hat, das dieses Verfahren unterstützt, soweit ich weiß.
EDIT2: Siehe die akzeptierte Antwort.
InformationsquelleAutor der Frage idunnololz | 2013-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erlebte ich das gleiche problem. GCM funktioniert gut auf meinem Tablet mit Android 4.04, aber erhielt immer eine SERVICE_NOT_AVAILABLE auf meinem smartphone läuft Android 2.3.
Fand ich folgende Problemumgehung nicht verwenden (so weit ich weiß) alle deprecated-Klassen. Fügen Sie die Aktion "com.google.android.c2dm.Absicht.REGISTRIERUNG", um die GCMBroadcastReceiver in Ihrem manifest. Dies wird es ermöglichen, zu erhalten, die registration_id in Ihrem GCMBroadcastReceiver.
Nach, dass Ihre GCMBroadcastReceiver erhalten zu können registration_id:
Obwohl ich immer noch ein SERVICE_NOT_AVAILABLE Fehler kann ich mit der registration_id in meinem GCMBroadcastReceiver und ich bin in der Lage, das senden von Nachrichten an mein smartphone. Ziemlich seltsam, aber es funktioniert für mich.
InformationsquelleAutor der Antwort marnaish
Dieser Fehler ist auch mir aufgefallen, aber er Tat es, weil ich versuchte, mich zu registrieren, in die GCM durch eine firewall meiner Firma. Und in den Unterlagen, die ich gefunden:
Einmal öffnete ich die ports oder versucht von einem anderen Netz, klappt es.
InformationsquelleAutor der Antwort Edison Spencer
SERVICE_NOT_AVAILABLE kann verursacht werden, durch eine alte oder fehlende GooglePlayServices.
Verwenden GooglePlayServicesUtil prüfen Sie die version und bei falscher redirect auf den Markt, so dass Benutzer können manuell installieren Sie es - wird dieses Update die SERVICE_NOT_AVAILABLE und auch alle Verbesserungen erhalten
und bug-fixes ( und neue bugs :-).
Wenn Sie dies nicht tun - es gibt keinen Punkt in mit register(), die Methode erwartet, dass die matching-Spiel-Dienst, um das Ergebnis abzurufen. Es erzeugt die gleiche Sendung, für die Abwärtskompatibilität. Mit dem REGISTER der Absicht, direkt oder veraltet-Bibliothek wird auch weiterhin funktionieren - ich würde vorschlagen, mit der Absicht, GCMRegistrar ist gebunden an die alte Umsetzung in GoogleServicesFramework (es hat einen Anruf auf Vorsatz.setPackage(GSF_PACKAGE)), also kann es nicht davon profitieren alle fixes.
Haben die neueste version von GCM - mithilfe GooglePlayServicesUtil Umgang mit Geräten, die nicht die automatische install - können helfen, nicht nur für die Registrierung.
InformationsquelleAutor der Antwort Costin Manolache
Nach dem Lesen der post von marnanishich habe versucht den code unten, und ich habe erfolgreich habe meine Aktivität zu erhalten, ist eine Registrierung. Fügen Sie einfach diese:
in Ihrem AndroidManifest.xml
InformationsquelleAutor der Antwort Erik Zivkovic
Für die Zeit, bis Google diesen Fehler beheben kann oder jemand bietet eine bessere Lösung, die ich verwende eine hybrid-Lösung, wo Sie verwenden Google Player Dienste für die ersten paar Male (mit exponential backoff), sondern wechseln Sie zu GCMRegistrar danach.
InformationsquelleAutor der Antwort idunnololz
So, es ist eine andere Sache aufpassen, dass ausgelöst me up.
Ich hatte es gut funktioniert in emulator + mit test-Anwendung, aber dann hatte ich Probleme, der Bereitstellung auf tatsächlichen Geräten.
Konsequent wurde immer die SERVICE_NOT_AVAILABLE Fehler, und Griff zu einem ähnlichen Ansatz wie die Antwort oben:
Dieser Art gearbeitet.
Aber es dauerte eine merkwürdig lange Zeit, diese Informationen zu erhalten, und in eine warte-Schleife hatte ich auch, es würde immer NUR abrufen, NACHDEM ich gegeben hatte, und ließ die Dinge gehen.
Dies hat mir denken, dass es möglicherweise eine andere Ursache für die SERVICE_NOT_AVAILABLE msg.
Dies ist der code, den ich tun musste, um die Abruf/Registrierung mit GCM:
Die wichtigste Sache zu suchen hier ist die Letzte Zeile.
"Clever/betrügen" Art und Weise zu blockieren, die asynchrone ein-aus-thread führt.
Es stellt sich heraus, das IST das, was das problem verursacht.
Sobald ich nur hatte:
Lass es Durchlaufen, und der Algorithmus/code-Arbeit mit der Berichterstattung und nicht brauchen die Registrierungs-id gleich ist, dann war es in Ordnung. Ich brauchte nicht einmal die Bedienungsanleitung broadcast receiver, es funktionierte einfach, wie es sein sollte.
InformationsquelleAutor der Antwort CasualT
Wenn die markierte Antwort wird nicht für Sie arbeiten (so war es bei mir), überprüfen Sie die person, die vor Ihrem Gerät, vielleicht schütteln Sie Sie und aktivieren Sie dann die internet-Verbindung. Arbeitete für mich 😉
Ohne internet, erhalten Sie die gleiche Ausnahme und den Nachmittag verbrachte ich jagen komplexe Probleme mit dem service....
InformationsquelleAutor der Antwort philip
Ich hatte das gleiche problem, aber es passiert war, auf allen Geräten. Es hat mich für immer zu finden, mein problem, aber ich dachte, ich würde post, falls es passt jemand anderes Fall. Hier ist eine vereinfachte version meines Problems:
Wenn ich die zweite AsyncTask mit einer Rückkehr über get(), würde ich in den GCM 'SERVICE_NOT_AVAILABLE" mit jedem mal, obwohl, ich könnte noch abrufen die registration-id aus dem GcmBroadcastReceiver onReceive(). Allerdings, wenn ich ausführen:
des GCM-würde empfangen der Registrierungs-id, ohne Frage.
InformationsquelleAutor der Antwort MoreThanCarbon
Ich weiß, dies ist eine alte post, aber ich hatte gerade das gleiche problem, zwar war alles richtig eingestellt. Die SERVICE_NOT_AVAILABLE Fehler, die immer auftauchen. Nachdem ich auf Einstellungen => apps => Google Play-servises, und löschen Sie den cache und entfernen Sie die Daten, es hat funktioniert.
InformationsquelleAutor der Antwort APvG