Aby uzyskać dostęp do funkcji usług gier Google Play, Twoja gra musi podać konto uwierzytelnionego gracza. W tej dokumentacji opisujemy, jak zaimplementować w grze bezproblemowe uwierzytelnianie.
Pakiet SDK usług gier Play w wersji 2 wprowadza szereg ulepszeń, które zwiększają liczbę użytkowników uwierzytelnionych w Twojej grze i ułatwiają tworzenie gier:
- Ulepszenia dla użytkowników:
- Po wybraniu konta domyślnego użytkownicy są uwierzytelniani bez konieczności interakcji z prośbą.
- Użytkownicy nie muszą już pobierać aplikacji Gry Play, aby uwierzytelnić się w usługach gier Play lub utworzyć nowe konto.
- Użytkownicy mogą teraz zarządzać kontami usług gier Play w wielu grach z poziomu jednej strony.
- Ulepszenia dla deweloperów:
- Kod klienta nie musi już obsługiwać uwierzytelniania ani wylogowywania, ponieważ logowanie jest automatycznie wywoływane po uruchomieniu gry, a zarządzanie kontem odbywa się w ustawieniach systemu operacyjnego.
Nowa integracja klienta
W tej sekcji pokazujemy, jak przeprowadzić nową integrację klienta z logowaniem się w usługach gier Play w wersji 2.
Dodawanie zależności
Dodaj zależność pakietu SDK usług gier Play do pliku build.gradle na poziomie głównym aplikacji. Jeśli używasz Gradle, możesz dodać lub zaktualizować zależność w ten sposób:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Definiowanie identyfikatora projektu
Aby dodać do aplikacji identyfikator projektu pakietu SDK usług gier Play, wykonaj te czynności:
W pliku
AndroidManifest.xmlaplikacji dodaj do elementu<application>ten element<meta-data>i jego atrybuty:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Zdefiniuj odwołanie do zasobu tekstowego
@string/game_services_project_id, używając jako wartości identyfikatora projektu usług gier. Identyfikator projektu usług gier znajdziesz w Konsoli Google Play na stronie Konfiguracja pod nazwą gry.W pliku
res/values/strings.xmldodaj odwołanie do zasobu tekstowego i ustaw jako wartość identyfikator projektu. W Konsoli Google Play identyfikator projektu znajdziesz na stronie Konfiguracja pod nazwą gry. Na przykład:<!-- 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>
Inicjowanie pakietu SDK
Zainicjuj pakiet SDK usług gier Play w wywołaniu zwrotnym onCreate(..) klasy Application.
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Pobieranie wyniku uwierzytelniania
Po uruchomieniu gra zawsze będzie próbować uwierzytelnić użytkownika. Aby uwierzytelnić użytkownika, musisz sprawdzić, czy uwierzytelnianie się powiodło, a następnie pobrać jego identyfikator gracza.
Aby sprawdzić próbę uwierzytelnienia, wywołaj GamesSignInClient.isAuthenticated() i użyj addOnCompleteListener, aby pobrać wyniki. Na przykład:
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().
}
});
Zapobieganie automatycznemu tworzeniu profilu
W pliku manifestu możesz wyłączyć automatyczne wyświetlanie próśb o utworzenie profilu. Dzięki temu użytkownicy bez profilu usług gier Play mogą nadal wczytywać grę bez wyświetlania prośby o utworzenie profilu usług gier Play. Więcej informacji znajdziesz w artykule Opcje tworzenia profilu.
Aby korzystać z tej funkcji, musisz spełnić te warunki:
- Na żadnym z kont Google zalogowanych na urządzeniu nie ma profilu usług gier Play.
- Twoja gra jest zintegrowana z pakietem SDK usług gier Play
com.google.android.gms:play-services-games-v2:21.0.0lub nowszym.
Aby zapobiec automatycznemu wyświetlaniu próśb o utworzenie profilu, wykonaj te czynności:
W pliku
AndroidManifest.xmldodaj do elementu<application>tagcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONw elemencie<meta-data>i jego atrybuty:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Ustawienie tej flagi na true informuje usługi gier Play, że Twoja gra będzie obsługiwać proces tworzenia profilu. W związku z tym usługi gier Play nie będą automatycznie wyświetlać interfejsu tworzenia profilu użytkownikom na urządzeniu, którzy nie mają profilu usług gier Play.
Gdy wywołasz dowolny interfejs API usług gier Play, kod
GamesClientStatusCodes.SIGN_IN_REQUIREDstanu wskazuje, że wywołanie nie powiodło się, ponieważ nie można było automatycznie uwierzytelnić użytkownika z powodu braku profilu usług gier Play.Dzięki temu użytkownicy bez profilu usług gier Play mogą korzystać z zaimplementowanych metod uwierzytelniania bez natychmiastowego wyświetlania prośby o utworzenie profilu usług gier Play. Tworzenie profilu można rozpocząć, wywołując
GamesSignInService.signin().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. } } });
Po dodaniu tagu wyciszania użyj okna
logcat, aby sprawdzić, czy został dodany. Dane wyjściowelogcatzawierają komunikat podobny do tego: „Game opted out of automatic profile creation prompt (using manifest)” (Gra zrezygnowała z automatycznego wyświetlania prośby o utworzenie profilu – używa manifestu).