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 die Authentifizierung oder den Abmeldevorgang nicht mehr verarbeiten, da die Anmeldung automatisch ausgelöst wird, wenn das Spiel gestartet 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:
Fügen Sie in der Datei
AndroidManifest.xmlIhrer App das folgende<meta-data>-Element und die Attribute dem<application>-Element 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_idmit der Spieldienste-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.Fügen Sie in der Datei
res/values/strings.xmleinen 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 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().
}
});
Automatisch ausgelöste Profilerstellung verhindern
Sie können Aufforderungen zur automatisch ausgelösten Profilerstellung über die Manifestdatei deaktivieren. So können Nutzer ohne Play Games-Dienste-Profil das Spiel weiterhin laden, ohne aufgefordert zu werden, ein Play Games-Dienste-Profil zu erstellen. Weitere Informationen finden Sie unter Optionen zur Profilerstellung.
Damit Sie diese Funktion nutzen können, müssen folgende Voraussetzungen erfüllt sein:
- Für keines der Google-Konten, mit denen sich Nutzer auf dem Gerät angemeldet haben, ist ein Play Games-Dienste-Profil vorhanden.
- Ihr Spiel ist in das Play Games-Dienste SDK
com.google.android.gms:play-services-games-v2:21.0.0oder höher eingebunden.
So verhindern Sie die automatisch ausgelösten Aufforderungen zur Profilerstellung:
Fügen Sie in der
AndroidManifest.xmlDatei dascom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONTag im<meta-data>Element und die Attribute dem<application>Element hinzu:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Wenn Sie dieses Flag auf „true“ setzen, wird den Play Games-Diensten mitgeteilt, dass Ihr Spiel die Profilerstellung übernimmt. Folglich wird die Benutzeroberfläche zur Profilerstellung für Nutzer auf dem Gerät, die kein Play Games-Dienste-Profil haben, nicht automatisch angezeigt.
Wenn Sie eine Play Games-Dienste API aufrufen, gibt der
GamesClientStatusCodes.SIGN_IN_REQUIREDStatuscode an, dass der Aufruf fehlgeschlagen ist, weil der Nutzer aufgrund des fehlenden Play Games-Dienste Profils nicht automatisch authentifiziert werden konnte.So können Nutzer ohne Play Games-Dienste-Profil mit den von Ihnen implementierten Authentifizierungsmethoden fortfahren, ohne sofort aufgefordert zu werden, ein Play Games-Dienste-Profil zu erstellen. Die Profilerstellung kann durch Aufrufen von
GamesSignInService.signin()initiiert werden.import com.google.android.gms.games.PlayGames; ... // Get the achievements client using Play Games services. AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity()); achievementsClient.getAchievementsIntent() .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { int statusCode = ((ApiException) exception).getStatusCode(); if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) { // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services. // Call GamesSignInService.signin() to prompt for // authentication at a suitable time which will trigger the // profile creation UI. // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status. } } });
Nachdem Sie das Unterdrückungstag hinzugefügt haben, prüfen Sie im Fenster
logcat, ob es hinzugefügt wurde. Dielogcat-Ausgabe enthält eine Meldung ähnlich der folgenden: „Game opted out of automatic profile creation prompt (using manifest)“ (Spiel hat die automatische Aufforderung zur Profilerstellung deaktiviert (über Manifest)).