Aby można było uzyskać dostęp do funkcji usług gier Google Play, gra musi mieć dostęp do konta zalogowanego gracza. Z tej dokumentacji dowiesz się, jak wdrożyć w grze bezproblemowe logowanie.
Pakiet SDK Usług gier Play w wersji 2 zawiera wiele ulepszeń, które zwiększają liczbę użytkowników zalogowanych w Twojej grze i ułatwiają jej tworzenie:
- Ulepszenia dla użytkowników:
- Po wybraniu konta domyślnego użytkownicy są zalogowani bez konieczności interakcji z prośbą.
- Użytkownicy nie muszą już pobierać aplikacji Gry Play, aby logować się w usługach gier Play ani tworzyć nowego konta.
- Użytkownicy mogą teraz zarządzać swoimi kontami usług gier Play w wielu grach na jednej stronie.
- Ulepszenia dla deweloperów:
- Kod klienta nie musi już obsługiwać procesu logowania ani wylogowywania, ponieważ logowanie jest uruchamiane automatycznie po uruchomieniu gry, a zarządzanie kontem odbywa się w ustawieniach systemu operacyjnego.
Nowa integracja klienta z logowaniem w usługach gier Play w wersji 2
W tej sekcji dowiesz się, jak przeprowadzić nową integrację klienta z logowaniem w usługach gier Play w wersji 2.
Dodawanie zależności od pakietu SDK usług gier Play
Dodaj zależność z pakietu SDK usług gier Play do pliku build.gradle
na poziomie głównym aplikacji. Jeśli korzystasz z narzędzia Gradle, możesz dodać lub zaktualizować brak dostępu w ten sposób:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Określanie identyfikatora projektu w usługach gier Play
Aby dodać do aplikacji identyfikator projektu z pakietu SDK usług gier Play, wykonaj te czynności:
W pliku
AndroidManifest.xml
aplikacji dodaj do elementu<application>
ten element<meta-data>
i 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 ciągu znaków
@string/game_services_project_id
, używając jako wartości identyfikatora projektu w usługach gier gier. Identyfikator projektu w usługach gier znajdziesz pod nazwą gry na stronie Konfiguracja w Konsoli Google Play.W pliku
res/values/strings.xml
dodaj odniesienie do zasobu w postaci ciągu znaków i ustaw identyfikator projektu jako wartość. W Konsoli Google Play identyfikator projektu znajdziesz pod nazwą gry na stronie Konfiguracja. 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>
Zainicjuj pakiet SDK
Zainicjuj pakiet SDK 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);
}
Pobierz wynik logowania
Po uruchomieniu gry będzie ona zawsze próbowała zalogować użytkownika. Aby uwierzytelnić użytkownika, musisz sprawdzić, czy udało mu się zalogować, a potem uzyskać jego identyfikator gracza.
Aby zweryfikować próbę logowania, wywołaj GamesSignInClient.isAuthenticated()
i użyj metody 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 {
// Disable your integration with Play Games Services or show a
// login button to ask players to sign-in. Clicking it should
// call GamesSignInClient.signIn().
}
});
Jeśli użytkownik nie zdecyduje się na logowanie po uruchomieniu gry, możesz opcjonalnie nadal wyświetlać przycisk z ikoną Gier Play. Potem możesz spróbować zalogować użytkownika ponownie, wywołując GamesSignInClient.signIn()
, gdy użytkownik go naciśnie.
Po sprawdzeniu, czy użytkownik jest zalogowany, możesz pobrać identyfikator odtwarzacza, aby go zidentyfikować. Na przykład:
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
// Get PlayerID with mTask.getResult().getPlayerId()
}
);