Logowanie się w grach na Androida

Aby 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 grze i ułatwiają programowanie:

  • Ulepszenia dla użytkowników:
    • Po wybraniu konta domyślnego użytkownicy są zalogowani bez konieczności odpowiadania na prompt.
    • Użytkownicy nie muszą już pobierać aplikacji Gry Play, aby zalogować się w usługach gier Play lub utworzyć nowe konto.
    • Użytkownicy mogą teraz na jednej stronie zarządzać swoimi kontami usług gier Play dla wielu gier.
  • Ulepszenia dla deweloperów:
    • Kod klienta nie musi już obsługiwać procesu logowania się i wylogowywania, ponieważ logowanie następuje 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ć integrację klienta z logowaniem w usługach gier Play w wersji 2.

Dodaj zależność od pakietu SDK usług gier Play

Dodaj zależność pakietu SDK usług gier Play do pliku build.gradle aplikacji na poziomie głównym. Jeśli używasz Gradle, możesz dodać lub zaktualizować zasadę w ten sposób:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Zdefiniuj identyfikator projektu usług gier Play

Aby dodać do aplikacji identyfikator projektu pakietu SDK usług gier Play, wykonaj te czynności:

  1. 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>
    

    Określ odwołanie do zasobu ciągu @string/game_services_project_id, używając jako wartości identyfikatora projektu usług gier w Twojej grze. Identyfikator projektu w Usługach gier znajdziesz pod nazwą gry na stronie Konfiguracja w Konsoli Google Play.

  2. W pliku res/values/strings.xml dodaj odwołanie do zasobu tekstowego 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>
    

Inicjowanie pakietu 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);
}

Sprawdź wynik logowania

Przy uruchamianiu gra będzie zawsze próbować zalogować użytkownika. Aby uwierzytelnić użytkownika, musisz sprawdzić, czy się zalogował, a potem uzyskać identyfikator gracza.

Aby zweryfikować próbę logowania, wywołaj GamesSignInClient.isAuthenticated(), a potem użyj addOnCompleteListener do pobrania wyników. 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 zaloguje się w momencie uruchomienia gry, możesz opcjonalnie wybrać opcję dalszego wyświetlania przycisku z ikoną Gier Play i spróbować zalogować użytkownika ponownie, wywołując funkcję GamesSignInClient.signIn(), gdy użytkownik naciśnie przycisk.

Po sprawdzeniu, czy użytkownik jest zalogowany, możesz pobrać identyfikator gracza, aby go zidentyfikować. Na przykład:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);