Wie kann ich verhindern, dass sich die Play Game-Dienste beim Start automatisch anmelden?
Google bietet die BaseGameUtils
Bibliothek, und empfehlen Sie uns verlängert BaseGameActivity
. Jedoch, diese Klasse macht das Spiel automatisch anmelden, wenn das Spiel gestartet wird. Wenn die Spieler nicht wollen oder keine Verbindung zu seinem Google-Konto, dies kann sehr zeitaufwendig am Anfang des Spiels.
So dass ich nicht wollen, diese Funktion. Stattdessen möchte ich, um eine Schaltfläche "anmelden". Der player angeschlossen ist, nur wenn er auf diesen button klicken. Und von diesem Moment an, jedes mal, wenn der Spieler beginnt das Spiel, ist er automatisch mit seinem Google-Konto ohne Klick auf einen button. Wie kann ich dies tun?
InformationsquelleAutor der Frage Hải Phong | 2014-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, ich habe es herausgefunden, standardmäßig ist die maximale auto-sign-in-Zeiten ist 3was bedeutet, dass, wenn der Benutzer bricht die 3-mal, dann die app wird nie wieder (es sei denn, Sie löschen die app-Daten) automatisch anmelden. Es ist gespeichert in
GameHelper.java
Und es bietet auch eine Funktion, um diese maximale Anzahl
Also, wenn Sie nicht möchten, dass automatische Unterzeichnung-im Versuch, alleeinfach diese Funktion aufrufen,
Dies ist, wenn Sie nicht möchten, reicht BaseGameActivity
Oder, wenn Sie verlängert BaseGameActivity
InformationsquelleAutor der Antwort Hải Phong
In der
GameHelper.java
Datei dort ist ein boolean-Attribut namensmConnectOnStart
dass es standardmäßig auf true gesetzt ist. Ändern Sie einfach es zufalse
statt:Zusätzlich gibt es eine Methode zur Verwaltung dieses Attribut von außerhalb der Klasse:
Können Sie die oben genannte Methode nutzen, um zu passen Sie Ihre Zeichen in den Prozess.
In meinem Fall, ähnlich wie Sie, ich möchte nicht auf die automatische Verbindung zum ersten mal. Aber wenn der Benutzer unterzeichnet wurde, vor, ich will auto verbinden. Um dies möglich zu machen, änderte ich den
getGameHelper()
Methode, die sich in derBaseGameActivity
Klasse:Jedes mal,
getGameHelper()
Methode wird aufgerufen, ausonStart()
imBaseGameActivity
. Im code oben, habe ich nur noch die gemeinsame Vorliebe zu halten, wenn der Benutzer unterzeichnet, in der vor. Und rief diesetConnectOnStart()
Verfahren nach diesem Fall.Schließlich, vergessen Sie nicht die
"WAS_SIGNED_IN"
(oder etwas anderes, wenn Sie definiert, die mit unterschiedlichen Namen), gemeinsame Einstellung auf true, wenn der Benutzer initiiert sign-in-Prozess. Sie können dies tun, in deronSignInSucceeded()
Methode in derBaseGameActivity
Klasse.Hoffe, dies wird Ihnen helfen. Viel Glück.
InformationsquelleAutor der Antwort osmangokalp
Habe ich es wie folgt, ich weiß nicht, ob dies ist der beste Weg, es zu tun. Ich änderte den GameHelper Klasse, so speichert er die Einstellung in den Gemeinsamen Einstellungen:
Sehen https://github.com/playgameservices/android-samples/blob/master/FAQ.txt Linie 54, warum Sie sich anmelden, automatisch
InformationsquelleAutor der Antwort Stefan Braspenning
Call
getGameHelper().setConnectOnStart(false);
von onCreateInformationsquelleAutor der Antwort Крум Илиев
Eigentlich ist der code von Google funktioniert genau so wie Sie reden, im zweiten Absatz.
Den Helfer.setup-Methode erstellt die Kunden
onStart sieht bei einer internen booleschen für auto-sign-in. Wenn der Benutzer zuletzt verbunden war (und der Benutzer nicht Abmelden, oder es war kein Fehler im zu trennen), dann wird es versuchen zu re-etablieren anmelden.
beginUserInitiatedSignIn wird das auto-sign-in-boolean ob erfolgreich eine Verbindung initiiert wird,
onStop wird nur dann beenden, die verbindungen ordnungsgemäß, es wird nicht zurückgestellt boolean
Also nur So, dass der Benutzer die Zeichen in den Prozess, wenn die app gestartet wird, wenn beginUserInitiatedSignIn ist irgendwie aufgerufen wird, bevor das drücken einer Taste.
Stellen Sie sicher, dass Ihre beginUserInitiatedSignIn, ist nicht in der onStart-Methode, noch ist es genannt werden, außer durch andere Mittel, als wenn Ihre Anmelde-Schaltfläche geklickt wird, und der Benutzer NICHT angemeldet ist.
Aus der BaseGameUtil Klasse
InformationsquelleAutor der Antwort user2346305