Anmeldung für Android-Spiele

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

Das Play Games Services v2 SDK bietet eine Reihe von Verbesserungen, mit denen die Anzahl der Nutzer, die in Ihrem Spiel angemeldet sind, erhöht und die Entwicklung erleichtert wird:

  • Verbesserungen für Nutzer:
    • Nachdem ein Standardkonto ausgewählt wurde, werden Nutzer angemeldet, ohne mit einem Prompt interagieren zu müssen.
    • Nutzer müssen die Play Spiele App nicht mehr herunterladen, um sich mit den Play-Spieldiensten anzumelden oder ein neues Konto zu erstellen.
    • Nutzer können jetzt ihre Play-Spieldienste-Konten für mehrere Spiele über eine einzige Seite verwalten.
  • Verbesserungen für Entwickler:
    • Der Clientcode muss den Anmelde- oder Abmeldevorgang nicht mehr verarbeiten, da die Anmeldung automatisch ausgelöst wird, wenn das Spiel beginnt, und die Kontoverwaltung in den Betriebssystemeinstellungen verwaltet wird.

Neue Clientintegration

In diesem Abschnitt wird gezeigt, wie Sie eine neue Clientintegration mit der Anmeldung in Play-Spieldiensten v2 vornehmen.

Abhängigkeit hinzufügen

Fügen Sie der Datei build.gradle Ihrer App auf Stammebene die Abhängigkeit vom Play Game Services SDK 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

Führe die folgenden Schritte aus, um deiner App die Projekt-ID des Play Games Services SDK hinzuzufügen:

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

    <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 Stringressourcenreferenz @string/game_services_project_id mit der Projekt-ID der Play-Spieldienste Ihres Spiels als Wert. Sie finden die Projekt-ID Ihrer Play-Spieldienste unter dem Namen Ihres Spiels auf der Seite Konfiguration in der Google Play Console.

  2. Fügen Sie in der Datei res/values/strings.xml eine String-Ressourcenreferenz 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);
}

Anmeldeergebnis abrufen

Beim Starten Ihres Spiels wird immer versucht, den Nutzer anzumelden. Um den Nutzer zu authentifizieren, musst du prüfen, ob er sich erfolgreich angemeldet hat, und dann seine Player-ID abrufen.

Um den Anmeldeversuch zu bestätigen, rufen Sie GamesSignInClient.isAuthenticated() auf 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 {
    // Disable your integration with Play Games Services or show a
    // login button to ask  players to sign-in. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Wenn sich der Nutzer beim Start des Spiels nicht anmelden möchte, kannst du optional weiterhin eine Schaltfläche mit dem Play Spiele-Symbol anzeigen und versuchen, den Nutzer noch einmal anzumelden, indem er GamesSignInClient.signIn() aufruft, wenn er die Schaltfläche drückt.

Nachdem du überprüft hast, dass der Nutzer angemeldet ist, kannst du die Player-ID abrufen, um den Nutzer zu identifizieren. Beispiel:

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