Ich entwickle ein Spiel für Android mit Google Play Game Services und verwende Xamarin. Ich mache meine Tests mit einem Genymotion Android Emulator. Ich bin auf ein Problem gestoßen, das bei der Implementierung von Google Play oder Xamarin als Bug zu gelten scheint.
Wenn ich bei einem Google-Konto abmelde , ruft der IGoogleApiClient.IsConnected () weiterhin true auf (obwohl ich dies getan habe) eindeutig nur abgemeldet). Wenn ich dann versuche, dieses API-Objekt zu verwenden, erhalte ich Ausnahmen wie:
java.lang.SecurityException: Beim Aufruf der API nicht angemeldet
Der folgende Code führt zum Beispiel zur obigen Ausnahme, wenn er nach dem Abmelden ausgeführt wird:
%Vor%Ich melde mich im Google Play Games-Posteingang (Match-Picker) ab; wie in den folgenden Bildern gezeigt.
Wer ist schon einmal darauf gestoßen? Fehle ich etwas? Haben Sie irgendwelche Work-Arounds?
Hinweis: Dies tritt nur auf, wenn Sie sich über die Google-Benutzeroberfläche abmelden. Wenn ich den Nutzer manuell mit etwas wie mGoogleApiClient.Disconnect()
unterzeichne, tritt das Problem nicht auf; mGoogleApiClient.IsConnected()
gibt jetzt (wie erwartet) false zurück.
Um den angemeldeten Zustand synchronisiert zu halten, MÜSSEN Sie onActivityResult korrekt implementieren.
Das sollte wie folgt aussehen:
HINWEIS: Das ist Java-Code, ich bin mir nicht sicher, wie genau das mit Xamarin aussehen wird, aber hoffentlich sollten Sie es herausfinden können:)
%Vor%HINWEIS: Stellen Sie sicher, dass Sie den Code mit dem von Ihnen verwendeten Anforderungscode ersetzen. Möglicherweise müssen Sie auch nach mehreren Anforderungscodes suchen.
Wenn Sie gameHelper-Klassen aus der BaseGameUtils-Bibliothek verwenden (es ist einfacher zu verwenden), können Sie den obigen Code folgendermaßen ändern:
%Vor%Tags und Links android xamarin google-play-services google-play-games monogame