Aby uzyskać dostęp do funkcji Usług gier Google Play, gra musi udostępniać konto uwierzytelnionego gracza. W tej dokumentacji opisujemy, jak wdrożyć 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 uwierzytelniać się w usługach gier Play lub tworzyć nowe konto.
- Użytkownicy mogą teraz zarządzać kontami usług gier Play w przypadku wielu gier na jednej stronie.
- 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.
Integracja nowego klienta
W tej sekcji pokazujemy, jak przeprowadzić integrację nowego klienta z usługami Gier Play w wersji 2.
Dodawanie zależności
Dodaj zależność pakietu SDK usług gier Play do pliku build.gradlena 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:+"
}
Określ identyfikator projektu
Aby dodać do aplikacji identyfikator projektu pakietu SDK usług gier Play, wykonaj te czynności:
W pliku
AndroidManifest.xmlaplikacji dodaj ten element<meta-data>i atrybuty do elementu<application>:<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 w usługach gier znajdziesz pod nazwą gry na stronie Konfiguracja w Konsoli Google Play.W pliku
res/values/strings.xmldodaj odwołanie do zasobu tekstowego i ustaw identyfikator projektu jako wartość. W Konsoli Google Play identyfikator projektu znajdziesz pod nazwą gry na stronie Konfiguracja. 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 do 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);
}
Uzyskiwanie wyniku uwierzytelniania
Po uruchomieniu gry zawsze będzie podejmowana próba uwierzytelnienia użytkownika. Aby uwierzytelnić użytkownika, musisz sprawdzić, czy uwierzytelnianie się powiodło, a następnie uzyskać jego identyfikator gracza.
Aby zweryfikować próbę uwierzytelnienia, wywołaj GamesSignInClient.isAuthenticated()
i użyj addOnCompleteListener, aby pobrać wyniki. 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 konieczności tworzenia profilu usług gier Play. Więcej informacji znajdziesz w sekcji Opcje tworzenia profilu.
Aby korzystać z tej funkcji, musisz spełniać te warunki:
- Na żadnym z kont Google zalogowanych na urządzeniu nie ma profilu w Usługach gier Play.
- Twoja gra jest zintegrowana z pakietem SDK usług gier Play w wersji
com.google.android.gms:play-services-games-v2:21.0.0lub nowszej.
Aby zapobiec automatycznemu wyświetlaniu się promptów do tworzenia profilu, wykonaj te czynności:
W pliku
AndroidManifest.xmldodaj tagcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONw elemencie<meta-data>i atrybuty do elementu<application>:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Ustawienie tej flagi na wartość „true” informuje usługi gier Play, że 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ą jeszcze profilu w usługach gier Play.
Gdy wywołasz dowolny interfejs API usług gier Play, kod stanu
GamesClientStatusCodes.SIGN_IN_REQUIREDwskazuje, ż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 zastosowanych 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 wykluczenia użyj okna
logcat, aby sprawdzić, czy został on dodany. Dane wyjściowelogcatzawierają komunikat podobny do tego: „Gra zrezygnowała z automatycznego wyświetlania prośby o utworzenie profilu (przy użyciu pliku manifestu)”.