Problem bei der Anmeldung bei Google-Spielediensten (erster Versuch fehlgeschlagen, zweiter Erfolg)
Ich versuche gerade, mein Spiel (das libgdx verwendet) mit Google Game Services zu verbinden, um die Bestenliste / Erfolge usw. zu aktivieren, und sehe ein merkwürdiges Verhalten.
Problem
Wenn ich zum ersten Mal auf "Anmelden" tippe, wird das Dialogfeld zur Auswahl Ihres Google-Kontos angezeigt. Anschließend wird das Dialogfeld "Berechtigungskreise für Dienste abspielen" und anschließend der große Ladekreis angezeigt. Nach einer Weile wird ein Dialogfeld mit dem folgenden Fehler angezeigtUnbekanntes Problem mit Google Play-Diensten
Wenn ich auf 'Ok' tippe, um diesen Fehlerdialog zu schließen, und dann erneut auf die Schaltfläche "Anmelden" tippe, werde ich sofort erfolgreich angemeldet. Danach kann ich die Bestenliste usw. sehen.
Einzelheiten
Die Fehlerprotokolle, die ich sehe:
...
D: GameHelper: onActivityResult: req=RC_RESOLVE, resp=9001
D: GameHelper: onAR: responseCode=9001, so giving up.
D: GameHelper: killConnections: killing connections.
D: GameHelper: killConnections: all clients disconnected.
D: GameHelper: State change CONNECTING -> DISCONNECTED
D: GameHelper: Making error dialog for failure: SignInFailureReason(serviceErrorCode:SIGN_IN_REQUIRED(4),activityResultCode:9001)
D: GameHelper: Showing error dialog.
D: GameHelper: Notifying LISTENER of sign-in FAILURE (error)
I: ----- Sign in failed :( -----
///// Tap the 'sign in' button again ///////
I: ----- Begin sign in process... -----
D: GameHelper: Starting USER-INITIATED sign-in flow.
D: GameHelper: isGooglePlayServicesAvailable returned 0
D: GameHelper: beginUserInitiatedSignIn: starting new sign-in flow.
D: GameHelper: Starting connections.
D: GameHelper: State change DISCONNECTED -> CONNECTING
D: GameHelper: connectNextClient: requested clients: 1, connected clients: 0
D: GameHelper: Pending clients: 1
D: GameHelper: Connecting GamesClient.
D: GameHelper: onConnected: connected! client=1
D: GameHelper: Connected clients updated to: 1
D: GameHelper: connectNextClient: requested clients: 1, connected clients: 1
D: GameHelper: Pending clients: 0
D: GameHelper: All clients now connected. Sign-in successful!
D: GameHelper: All requested clients connected. Sign-in succeeded!
D: GameHelper: State change CONNECTING -> CONNECTED
D: GameHelper: Notifying LISTENER of sign-in SUCCESS
I: ----- Sign in success! -----
D: GameHelper: onActivityResult: req=3, resp=3
D: GameHelper: onActivityResult: request code not meant for us. Ignoring.
...
Da ich libgdx verwende, erweitere ich nichtBaseGameActivity
stattdessen erstelle ich eineGameHelper
manuell und stattdessen verwenden
// in @Override onCreate:
mGameHelper = new GameHelper(this);
mGameHelper.setup(this, GameHelper.CLIENT_GAMES);
mGamesClient = mGameHelper.getGamesClient();
// in @Override onStart:
mGameHelper.onStart(this);
// then, for the sign in button, using it:
mGameHelper.beginUserInitiatedSignIn();
Zusatzinformation
In den Protokollen wird außerdem Folgendes angezeigt:
E: The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
Ich bin mir jedoch nicht sicher, ob es damit zusammenhängt, wie ich es gelesen habe. Dies scheint mit Karte / GPS / Standort zu tun zu haben. Ich verwende keine Karten und kann mich anmelden. Daher bin ich mir nicht sicher, ob dieser Fehler relevant ist oder nicht (obwohl er sich ziemlich schlecht anhört!).
Aktualisieren / Bearbeiten: Nach dem Testen wurde dieser Fehler von AdMob verursacht (das ich in die Google-Dienste integriert habe). Obwohl der Fehler schlecht klingt, bleibt das seltsame Verhalten beim Deaktivieren von AdMob (kein Fehler mehr) gleich.
Ich denke, das Folgende ist das interessante Fehlerprotokoll, obwohl ich nicht viel Glück hatte, diesen Fehler zu googeln:
E/dalvikvm( 2618): Could not find class 'android.app.AppOpsManager', referenced from method axo.a
BEARBEITEN 2: Weitere Erkenntnisse!
Ich erhalte den gleichen Fehlerdialog, auch wenn ich nicht den gesamten Anmelde-Workflow durchlaufe.
Jede Hilfe wird großartig sein!
Hinweis:
Dies kann konsistent reproduziert werden. Melden Sie sich ab, und durch zweimaliges Tippen auf die Schaltfläche Anmelden wird das oben beschriebene Verhalten angezeigtIch habe dafür gesorgt, dass ich anrufeonActivityResult
wie in vorgeschlagenGoogle Play Game Services: Merkwürdiges AnmeldeverhaltenBin durch das Tutorial gegangen und habe die Beispiel-App (Typ A-Nummer) eingerichtet - und alles hat funktioniert.