Z tego przewodnika dowiesz się, jak przenieść kod klienta z usług gier Play od wersji 1 do 2.
Nowy pakiet SDK zawiera cztery główne zmiany, które mają ułatwić logowanie się, warto wiedzieć:
- Logowanie następuje automatycznie po uruchomieniu gry. Zamiast
za pomocą pakietu
GoogleSignInClient
pakietu SDK GoogleSignIn, możesz użyćGamesSignInClient.isAuthenticated()
, aby pobrać wynik funkcji automatycznej próby zalogowania się. - Klasy z fabryki klienta nie będą już potrzebować obiektu
GoogleSignInAccount
zostały przekazane. Nie można żądać dodatkowych zakresów protokołu OAuth (GAMES_LITE
będzie żądania wysyłane automatycznie). - Tokeny uwierzytelniania są teraz udostępniane za pomocą
GamesSignInClient.requestServerSideAccess()
w usługach gier Play SDK. - Usunęliśmy metodę wylogowania i nie będziemy już wymagać posiadania konta w grze aby zalogować się w usługach gier Play lub się z nich wylogować.
Dodatkowo w Twojej grze będą się pojawiać dodatkowe logowania ze względu na automatyczne po uruchomieniu gry. Dlatego zalecamy przejrzenie zarządzaniem limitem, aby mieć pewność, że gra nie przekroczy limitu do limitu żądań logowania.
Kierowanie na nowe repozytorium SDK Maven
Jeśli używasz systemu kompilacji Gradle, możesz to zrobić, zmieniając
zależność od artefaktu com.google.android.gms:play-services-games-v2:+
w
pliku build.gradle
modułu. Na przykład:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Inicjowanie pakietu SDK
Zainicjuj pakiet SDK Gier Play w wywołaniu zwrotnym onCreate(..)
swojego żądania
Application
zajęcia. Na przykład:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Usuń połączenia związane z logowaniem i wylogowywaniem się
Jeśli nie określasz żadnych dodatkowych zakresów, migracja przypadku użycia powinna nie jest prosty.
Usuń wywołania logowania przy użyciu interfejsu GoogleSignIn API. Zalogowanie należy wykonywać przy uruchamianiu gry. Zamiast tego słuchaj wyników Próba automatycznego logowania za pomocą konta
GamesSignInClient.isAuthenticated()
.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(). } });
Ponieważ zarządzanie kontem zostało wyłączone, wszystkie wezwania do wylogowania zostały usunięte w ustawieniach systemu operacyjnego i aplikacji Gry Play.
Jeśli gracz się zalogował, usuń przycisk logowania przez Gry Play z gry. Jeśli użytkownik nie zaloguje się w momencie uruchomienia gry, może opcjonalnie wyświetlać przycisk z ikoną Gier Play; uruchomi proces logowania za pomocą metody
GamesSignInClient.signIn()
.Po sprawdzeniu, czy użytkownik jest zalogowany, możesz pobrać identyfikator odtwarzacza, aby go zidentyfikować.
.PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Usuń zależność z interfejsem GoogleSignIn API, jeśli nie jest już używany.
Zaktualizuj nazwy klas klientów
Podczas tworzenia klientów (np. LeaderboardsClient
lub AchievementsClient
) używaj PlayGames.getFooClient()
zamiast Games.getFooClient()
.
Żądanie dostępu po stronie serwera
Żądając dostępu po stronie serwera, używaj zasady GamesSignInClient.requestServerSideAccess()
, a nie GoogleSignInAccount.getServerAuthCode()
.
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
.requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
/*forceRefreshToken=*/ false)
.addOnCompleteListener( task -> {
if (task.isSuccessful()) {
String serverAuthToken = task.getResult();
// Send authentication code to the backend game server to be
// exchanged for an access token and used to verify the
// player with the Play Games Services REST APIs.
} else {
// Failed to retrieve authentication code.
}
});
Usuń dodatkowe zakresy
W usługach gier Play w wersji 2 nie możesz żądać żadnych dodatkowych zakresów. Jeśli musisz jeszcze poprosić o dodatkowe zakresy, zalecamy skorzystanie z Pakiet SDK do logowania Google wraz z usługami gier Play.
Migracja z GoogleApiClient
W przypadku starszych integracji Twoja gra może zależeć od
Odmiana interfejsu GoogleApiClient API w pakiecie SDK usług gier Play. To było
wycofany pod koniec 2017 roku
i zastąpione przez „bezpołączenia” klientów. Aby przeprowadzić migrację, możesz zastąpić
Klasa GoogleApiClient
z odpowiednikiem „bez połączenia”. Dodatkowo
musisz postępować zgodnie z instrukcjami na tej stronie, aby zmienić wersję gry z 1 na 2.
Oto mapowanie typowych klas:
com.google.android.gms.games.achievement.Achievements ->
com.google.android.gms.games.AchievementsClient
com.google.android.gms.games.leaderboard.Leaderboard ->
com.google.android.gms.games.LeaderboardsClient
com.google.android.gms.games.snapshot.Snapshots ->
com.google.android.gms.games.SnapshotsClient
com.google.android.gms.games.stats.PlayerStats ->
com.google.android.gms.games.PlayerStatsClient
com.google.android.gms.games.Players ->
com.google.android.gms.games.PlayersClient
com.google.android.gms.games.GamesStatusCodes ->
com.google.android.gms.games.GamesClientStatusCodes