Zur Anmeldung mit den Play-Spieldiensten (Version 2) migrieren

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:

  1. Die Anmeldung wird automatisch ausgelöst, wenn Ihr Spiel gestartet wird. Anstelle von GoogleSignIn SDK-GoogleSignInClient für die Anmeldung verwenden, können Sie GamesSignInClient.isAuthenticated(), um das Ergebnis der automatischen Anmeldeversuchen.
  2. 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.
  3. Authentifizierungs-Token werden nun bereitgestellt mithilfe von GamesSignInClient.requestServerSideAccess() in den Play-Spieldiensten SDK.
  4. 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 die Anmeldung beim Start des Spiels. 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.

  1. 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().
      }
    });
    
  2. Abmeldung alle Anrufe entfernen, da die Kontoverwaltung jetzt aktiviert ist in den Einstellungen für das Betriebssystem und die Play Spiele App festgelegt.

  3. 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.

  4. 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()
      }
    );
    
  5. 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 mit einem „verbindungslosen“ Äquivalent. Anschließend führen Sie müssen Sie der Anleitung auf dieser Seite folgen, 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