Plattformauthentifizierung für Android-Spiele

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

Das SDK für die Play-Spieldienste v2 bietet eine Reihe von Verbesserungen, die die Anzahl der Nutzer erhöhen, die in Ihrem Spiel authentifiziert werden, und die Entwicklung erleichtern:

  • Verbesserungen für Nutzer:
    • Nachdem ein Standardkonto ausgewählt wurde, werden Nutzer authentifiziert, ohne dass sie mit einer Aufforderung interagieren müssen.
    • Nutzer müssen die Play Spiele App nicht mehr herunterladen, um sich mit den Play-Spieldiensten zu authentifizieren oder ein neues Konto zu erstellen.
    • Nutzer können ihre Play-Spieldienste-Konten für mehrere Spiele jetzt auf einer einzigen 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 Spiele-Dienste – Anmeldung V2 durchführen.

Abhängigkeit hinzufügen

Fügen Sie die SDK-Abhängigkeit für die Play-Spieldienste der Datei build.gradle auf Stammebene Ihrer App 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-Spieldienste-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 die String-Ressourcenreferenz @string/game_services_project_id mit der Projekt-ID der Spieledienste Ihres Spiels als Wert. Die Projekt-ID der Spieldienste finden Sie in der Google Play Console auf der Seite Konfiguration unter dem Namen Ihres Spiels.

  2. Fügen Sie in Ihrer res/values/strings.xml-Datei einen String-Ressourcenverweis hinzu und legen Sie Ihre Projekt-ID als Wert fest. In der Google Play Console finden Sie Ihre Projekt-ID 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 die Spieler-ID abrufen.

Rufen Sie GamesSignInClient.isAuthenticated() auf, um den Authentifizierungsversuch zu überprüfen, 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 eine Schaltfläche mit dem Play Spiele-Symbol anzuzeigen oder dem Nutzer einen Anmeldebildschirm mit einer Schaltfläche mit dem Play Spiele-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 die Schaltfläche drückt. Nachdem Sie überprüft haben, ob 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()
  }
);