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 die Anmeldung oder Abmeldung nicht mehr verarbeiten, da die Anmeldung beim Start des Spiels automatisch ausgelöst wird und die Kontoverwaltung in den Betriebssystemeinstellungen erfolgt.

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

So fügen Sie Ihrer App die Projekt-ID des Play Games Services 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 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 res/values/strings.xml-Datei eine Stringressourcenreferenz 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.

Rufe GamesSignInClient.isAuthenticated() auf, um den Anmeldeversuch zu bestätigen, und verwende 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 Starten des Spiels nicht anmeldet, können Sie optional weiterhin eine Schaltfläche mit dem Play Spiele-Symbol anzeigen und versuchen, den Nutzer noch einmal anzumelden, indem Sie GamesSignInClient.signIn() aufrufen, wenn der Nutzer 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()
  }
);