In diesem Leitfaden wird beschrieben, wie Sie Ihren Clientcode von Play Spiele-Diensten v1 zu v2 migrieren.
Das neue SDK enthält vier wichtige Änderungen, mit denen die Wahrscheinlichkeit einer erfolgreichen Anmeldung erhöht wird.
- Die Anmeldung wird automatisch ausgelöst, wenn Ihr Spiel gestartet wird. Anstatt
GoogleSignInClient
desGoogleSignIn
SDKs für die Anmeldung zu verwenden, kannst duGamesSignInClient.isAuthenticated()
verwenden, um das Ergebnis des automatischen Anmeldeversuchs abzurufen. - Für Client-Factory-Klassen muss kein
GoogleSignInAccount
-Objekt mehr übergeben werden. Zusätzliche OAuth-Bereiche können nicht angefordert werden.GAMES_LITE
wird automatisch angefordert. - Authentifizierungstokens werden jetzt mithilfe von
GamesSignInClient.requestServerSideAccess()
im Play-Spieldienste-SDK bereitgestellt. - Die Abmeldemethode wird entfernt und wir benötigen keine In-Game-Schaltfläche mehr, um sich bei den Play-Spieldiensten an- oder abzumelden.
Außerdem kommt es bei Ihrem Spiel zu zusätzlichen Anmeldungen, da beim Start des Spiels eine automatische Anmeldung erfolgt. Daher sollten Sie Ihre Kontingentverwaltung prüfen, um sicherzustellen, dass Ihr Spiel das Kontingent für Anmeldeanfragen nicht überschreitet.
Ziel auf das neue Maven-Repository des SDK legen
Wenn Sie das Gradle-Buildsystem verwenden, können Sie die Abhängigkeit in der Datei build.gradle
Ihres Moduls zum com.google.android.gms:play-services-games-v2:+
-Artefakt ändern. Beispiel:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
SDK initialisieren
Initialisiere das Play Spiele SDK im onCreate(..)
-Callback deiner Application
-Klasse. Beispiel:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Anrufe zum Anmelden und Abmelden entfernen
Wenn Sie keine zusätzlichen Bereiche angeben, sollte die Migration Ihres Anwendungsfalls unkompliziert sein.
Entfernen Sie Aufrufe zur Anmeldung mit der GoogleSignIn API. Die Anmeldung erfolgt immer beim Starten des Spiels. Verwenden Sie stattdessen
GamesSignInClient.isAuthenticated()
, um das Ergebnis des automatischen Anmeldeversuchs abzuhören.GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity()); gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> { boolean isAuthenticated = (isAuthenticatedTask.isSuccessful() && isAuthenticatedTask.getResult().isAuthenticated()); if (isAuthenticated) { // Continue with Play Games Services } else { // Disable your integration with Play Games Services or show a // login button to ask players to sign-in. Clicking it should // call GamesSignInClient.signIn(). } });
Alle Aufforderungen zur Abmeldung wurden entfernt, da die Kontoverwaltung jetzt in den Einstellungen des Betriebssystems und der Play Spiele App enthalten ist.
Wenn der Spieler angemeldet ist, entfernen Sie die Anmeldeschaltfläche für Play Spiele aus Ihrem Spiel. Wenn sich der Nutzer beim Start des Spiels nicht anmeldet, können Sie optional weiterhin eine Schaltfläche mit dem Play Spiele-Symbol anzeigen und die Anmeldung mit
GamesSignInClient.signIn()
auslösen.Nachdem du überprüft hast, ob der Nutzer angemeldet ist, kannst du die Player-ID abrufen, um den Nutzer zu identifizieren.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Entfernen Sie die Abhängigkeit von der
GoogleSignIn
API, wenn sie nicht mehr verwendet wird.
Clientklassennamen aktualisieren
Verwenden Sie beim Erstellen von Clients (z.B. LeaderboardsClient
oder AchievementsClient
) PlayGames.getFooClient()
anstelle von Games.getFooClient()
.
Serverseitigen Zugriff anfordern
Verwende GamesSignInClient.requestServerSideAccess()
anstelle von GoogleSignInAccount.getServerAuthCode()
, wenn du serverseitigen Zugriff anforderst.
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
.requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
/*forceRefreshToken=*/ false)
.addOnCompleteListener( task -> {
if (task.isSuccessful()) {
String serverAuthToken = task.getResult();
// Send authentication code to the backend game server to be
// exchanged for an access token and used to verify the
// player with the Play Games Services REST APIs.
} else {
// Failed to retrieve authentication code.
}
});
Zusätzliche Bereiche entfernen
Mit Version 2 der Play-Spieldienste können Sie keine zusätzlichen Bereiche anfordern. Wenn Sie noch zusätzliche Bereiche anfordern müssen, empfehlen wir Ihnen, das Google Sign In SDK zusammen mit den Play Spiele-Diensten zu verwenden.
Migration von GoogleApiClient
Bei älteren Integrationen hängt Ihr Spiel möglicherweise von der GoogleApiClient API-Variante des Play-Spieldienste-SDK ab. Dieser Dienst wurde Ende 2017 eingestellt und durch „verbindungslose“ Clients ersetzt. Für die Migration können Sie die Klasse GoogleApiClient
durch ein Äquivalent ohne Verbindung ersetzen. Folgen Sie dann der Anleitung auf dieser Seite, um Ihr Spiel von Version 1 zu Version 2 zu migrieren.
Hier eine Zuordnung häufiger Klassen:
com.google.android.gms.games.achievement.Achievements ->
com.google.android.gms.games.AchievementsClient
com.google.android.gms.games.leaderboard.Leaderboard ->
com.google.android.gms.games.LeaderboardsClient
com.google.android.gms.games.snapshot.Snapshots ->
com.google.android.gms.games.SnapshotsClient
com.google.android.gms.games.stats.PlayerStats ->
com.google.android.gms.games.PlayerStatsClient
com.google.android.gms.games.Players ->
com.google.android.gms.games.PlayersClient
com.google.android.gms.games.GamesStatusCodes ->
com.google.android.gms.games.GamesClientStatusCodes