Plattformauthentifizierung für Android-Spiele

Damit Ihr Spiel auf die Funktionen der Google Play Games-Dienste zugreifen kann, muss es das Konto des authentifizierten Spielers angeben. In dieser Dokumentation wird beschrieben, wie Sie eine nahtlose Authentifizierung in Ihrem Spiel implementieren.

Das Play Games-Dienste v2 SDK bietet eine Reihe von Verbesserungen, durch die mehr Nutzer in Ihrem Spiel authentifiziert werden können und die die Entwicklung erleichtern:

  • Verbesserungen für Nutzer:
    • Nachdem Nutzer ein Standardkonto ausgewählt haben, werden sie authentifiziert, ohne dass sie auf eine Aufforderung reagieren müssen.
    • Nutzer müssen die Play Games App nicht mehr herunterladen, um sich bei den Play Games-Diensten zu authentifizieren oder ein neues Konto zu erstellen.
    • Nutzer können ihre Play Games-Dienste-Konten für mehrere Spiele jetzt auf nur einer Seite verwalten.
  • Verbesserungen für Entwickler:
  • Der Clientcode muss den Authentifizierungs- oder Abmeldevorgang nicht mehr verarbeiten, da die Anmeldung automatisch beim Start des Spiels ausgelöst wird und die Kontoverwaltung in den Betriebssystemeinstellungen erfolgt.

Neue Clientintegration

In diesem Abschnitt wird beschrieben, wie Sie eine neue Clientintegration mit Play Games-Dienste-Anmeldung v2 durchführen.

Abhängigkeit hinzufügen

Fügen Sie die Abhängigkeit für das Play Games-Dienste SDK der Datei build.gradle Ihrer App auf Stammebene hinzu. Wenn Sie Gradle verwenden, können Sie die Abhängigkeit so hinzufügen oder aktualisieren:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Projekt-ID definieren

So fügen Sie Ihrer App die Projekt-ID des Play Games-Dienste SDK hinzu:

  1. Fügen Sie in der Datei AndroidManifest.xml Ihrer App dem Element <application> das folgende <meta-data>-Element und die folgenden Attribute hinzu:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    Definieren Sie den Verweis auf die String-Ressource @string/game_services_project_id mit der Games-Dienste-Projekt-ID Ihres Spiels als Wert. Die Games-Dienste-Projekt-ID finden Sie in der Google Play Console auf der Seite Konfiguration unter dem Namen Ihres Spiels.

  2. Fügen Sie in der Datei res/values/strings.xml einen Verweis auf die String-Ressource hinzu und legen Sie Ihre Projekt-ID als Wert fest. Die Projekt-ID finden Sie in der Google Play Console auf der Seite Konfiguration unter dem Namen Ihres Spiels. Beispiel:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

SDK initialisieren

Initialisieren Sie das Play Games SDK im onCreate(..)-Callback Ihrer Application-Klasse.

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

Authentifizierungsergebnis abrufen

Wenn Ihr Spiel gestartet wird, wird immer versucht, den Nutzer zu authentifizieren. Um den Nutzer zu authentifizieren, müssen Sie bestätigen, dass die Authentifizierung erfolgreich war, und dann dessen Spieler-ID abrufen.

Rufen Sie GamesSignInClient.isAuthenticated() auf, um den Authentifizierungsversuch zu bestätigen, und verwenden Sie addOnCompleteListener, um die Ergebnisse abzurufen. Beispiel:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Wenn der Nutzer sich beim Start des Spiels nicht authentifizieren möchte, empfehlen wir, weiterhin einen Button mit dem Play Games-Symbol anzuzeigen oder dem Nutzer einen Anmeldebildschirm mit einem Button mit dem Play Games-Symbol als eine der Authentifizierungsoptionen zu präsentieren und zu versuchen, den Nutzer noch einmal zu authentifizieren, indem Sie GamesSignInClient.signIn() aufrufen, wenn der Nutzer auf den Button drückt. Nachdem Sie überprüft haben, dass der Nutzer authentifiziert ist, können Sie die Spieler-ID abrufen, um den Nutzer zu identifizieren. Beispiel:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);