In diesem Leitfaden wird beschrieben, wie du deinen Clientcode aus den Play-Spieldiensten migrierst. v1 bis v2.
Das neue SDK enthält vier wichtige Änderungen zur Steigerung des Anmeldeerfolgs. beachten Sie Folgendes:
- Die Anmeldung wird automatisch ausgelöst, wenn Ihr Spiel gestartet wird. Anstelle von
GoogleSignIn SDK-
GoogleSignInClient
für die Anmeldung verwenden, können SieGamesSignInClient.isAuthenticated()
, um das Ergebnis der automatischen Anmeldeversuchen. - Für Client Factory-Klassen wird kein
GoogleSignInAccount
-Objekt mehr benötigt übergeben wurde. Zusätzliche OAuth-Bereiche können nicht angefordert werden (GAMES_LITE
wird automatisch angefordert. - Authentifizierungs-Token werden nun bereitgestellt mithilfe von
GamesSignInClient.requestServerSideAccess()
in den Play-Spieldiensten SDK. - Die Abmeldemethode wird entfernt und wir benötigen kein In-Game mehr um dich bei den Play-Spieldiensten an- oder abzumelden.
Außerdem sind aufgrund der automatischen sich anmelden, wenn das Spiel startet. Daher sollten Sie Ihre Kontingentverwaltung, um sicherzustellen, das Kontingent für Log-in-Anfragen.
Auf das neue SDK-Maven-Repository ausrichten
Wenn Sie das Gradle-Build-System verwenden,
Abhängigkeit vom Artefakt com.google.android.gms:play-services-games-v2:+
in
in der build.gradle
-Datei Ihres Moduls. Beispiel:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
SDK initialisieren
Initialisiere das Play Spiele SDK im onCreate(..)
-Callback deines
Klasse Application
. Beispiel:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
An- und Abmeldeanrufe entfernen
Wenn Sie keine zusätzlichen Bereiche angeben, sollte die Migration Ihres Anwendungsfalls ist ganz einfach.
Entfernen Sie Anmeldeaufrufe mithilfe der GoogleSignIn API. Die Anmeldung beim Start des Spiels durchgeführt werden. Hören Sie stattdessen auf das Ergebnis der automatischer Anmeldeversuch mit
GamesSignInClient.isAuthenticated()
.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(). } });
Abmeldung alle Anrufe entfernen, da die Kontoverwaltung jetzt aktiviert ist in den Einstellungen für das Betriebssystem und die Play Spiele App festgelegt.
Wenn sich der Spieler erfolgreich angemeldet hat, entfernen Sie die Anmeldeschaltfläche in Play Spiele. aus deinem Spiel. Wenn der Nutzer sich beim Start des Spiels nicht anmeldet, kann optional weiterhin eine Schaltfläche mit dem Play Spiele-Symbol anzeigen und Lösen Sie den Anmeldevorgang mit
GamesSignInClient.signIn()
aus.Nachdem du überprüft hast, ob der Nutzer angemeldet ist, kannst du die Spieler-ID abrufen, um den Nutzer zu identifizieren.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Entfernen Sie Ihre 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
Verwenden Sie GamesSignInClient.requestServerSideAccess()
statt GoogleSignInAccount.getServerAuthCode()
, wenn Sie serverseitigen Zugriff anfordern.
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 weitere Bereiche anfordern müssen, dann empfehlen wir, die Methode Google Log-in SDK neben den Play-Spieldiensten.
Migration von GoogleApiClient
Bei älteren Integrationen hängt dein Spiel möglicherweise davon ab,
GoogleApiClient API-Variante des Play Games Services SDK Dies war
Ende 2017 eingestellt
und durch „verbindungslos“ ersetzt. Kundschaft. Für die Migration können Sie den
GoogleApiClient
-Klasse mit einem Äquivalent „verbindungslos“. Anschließend führen Sie
folgen Sie der Anleitung auf dieser Seite, um Ihr Spiel von v1 zu v2 zu migrieren.
Hier ist eine Zuordnung gängiger 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