Konfigurowanie Gier Google Play w Unity i uwierzytelnianie

Z tego dokumentu dowiesz się, jak skonfigurować projekt Unity, aby używać wtyczki Gry Google Play do silnika Unity. Dowiesz się, jak zainstalować wtyczkę i skonfigurować projekt Unity. Dokument zawiera też informacje o tym, jak zweryfikować usługę uwierzytelniania.

Zanim zaczniesz

Sprawdź wymagania dotyczące oprogramowania. Skonfiguruj Konsolę Play i zainstaluj Edytor Unity.

Instalacja wtyczki

Aby pobrać i zainstalować wtyczkę Gry Google Play do silnika Unity, wykonaj te czynności w edytorze Unity:

  1. Pobierz repozytorium GitHub.

  2. W katalogu current-build znajdź plik unitypackage. Ten plik reprezentuje wtyczkę. Powinien on wyglądać np. tak:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Konfigurowanie projektu Unity

Aby skonfigurować projekt Unity w ustawieniach odtwarzacza:

  1. Otwórz projekt gry.

  2. W edytorze Unity kliknij Assets > Import Package > Custom Package, aby zaimportować plik unitypackage do komponentów projektu.

  3. Sprawdź, czy bieżąca platforma kompilacji jest ustawiona na Android.

    1. W menu głównym kliknij Plik > Ustawienia kompilacji.

    2. Wybierz Android i kliknij Przełącz platformę.

    3. W menu Okno > Gry Google Play powinna pojawić się nowa pozycja. Jeśli nie, odśwież komponenty, klikając Komponenty > Odśwież, a następnie spróbuj ponownie ustawić platformę kompilacji.

  4. W edytorze Unity kliknij File > Build Settings > Player Settings > Other Settings (Plik > Ustawienia kompilacji > Ustawienia odtwarzacza > Inne ustawienia).

  5. W polu Docelowy poziom API wybierz wersję.

  6. W polu Backend skryptów wpisz IL2CPP.

  7. W polu Architektury docelowe wybierz wartość.

  8. Zanotuj nazwę pakietu package_name.Te informacje możesz wykorzystać później.

Ustawienia odtwarzacza w projekcie Unity
Ustawienia odtwarzacza w projekcie Unity.

Tworzenie nowego magazynu kluczy

Aby potwierdzić swoje dane logowania, potrzebujesz klucza. Wykonaj te czynności:

  1. W edytorze Unity kliknij File > Build settings > Player settings (Plik > Ustawienia kompilacji > Ustawienia odtwarzacza).
  2. W sekcji Ustawienia publikowania kliknij Menedżer plików kluczy.
    1. W oknie Menedżer magazynu kluczy kliknij Magazyn kluczy > Utwórz nowy > W dowolnym miejscu.
    2. Wybierz folder i podaj nazwę magazynu kluczy.
    3. W polu Hasło wpisz hasło i potwierdź je.
    4. Kliknij Dodaj klucz.

Zanotuj nazwę folderu. Możesz użyć tej nazwy do utworzenia danych logowania w Google Cloud.

Kopiowanie zasobów Androida z Konsoli Play

Każde osiągnięcie, tablica wyników i wydarzenie utworzone w Konsoli Play zawiera zasób Androida, którego używasz podczas konfigurowania projektu Unity.

Aby uzyskać zasoby Androida dla swojej gry, wykonaj te czynności:

  1. W Konsoli Google Play otwórz grę.

  2. Na stronie Usługi gier Play – konfiguracja (Zwiększaj liczbę użytkowników > Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja) kliknij Pobierz zasoby.

  3. W oknie Zasoby kliknij kartę Android(XML).

  4. Wybierz i skopiuj zawartość zasobów Androida (AndroidManifest.xml).

Dodawanie zasobów Androida do projektu Unity

Dodaj do projektu Unity te zasoby Androida:

  1. W edytorze Unity kliknij Window (Okno) > Gry Google Play > Setup (Konfiguracja) > Android Setup (Konfiguracja Androida).

    • W polu Directory to save constants (Katalog do zapisywania stałych) wpisz nazwę folderu, w którym ma być zapisany plik stałych.
    • W polu Nazwa klasy stałych wpisz nazwę klasy C# do utworzenia, w tym przestrzeń nazw.

      Jeśli na przykład klasa C# to id.cs i znajduje się w folderze Assets > myproject > scripts > id.cs. Nazwa klasy stałych może mieć postać myproject.scripts.id.

    • W polu Definicja zasobów wklej dane zasobów Androida (plik AndroidManifest.xml) skopiowane z Konsoli Google Play.

    • Opcjonalnie: w polu Identyfikator klienta wpisz identyfikator klienta połączonej aplikacji internetowej.

      Informacje o tym, jak uzyskać identyfikator klienta gry w Google Cloud, znajdziesz w sekcji Tworzenie identyfikatorów klientów.

      Jest to potrzebne tylko wtedy, gdy Twoja gra ma backend internetowy i potrzebujesz kodu autoryzacji serwera, aby wymienić go na token dostępu na serwerze backendu, lub gdy potrzebujesz tokena identyfikatora gracza do wykonywania innych wywołań interfejsu API niezwiązanych z grą.

    • Kliknij Konfiguruj. Spowoduje to skonfigurowanie gry za pomocą identyfikatora klienta i wygenerowanie klasy C#, która zawiera stałe wartości dla każdego z zasobów Androida.

  2. W edytorze Unity kliknij Window > Gry Google Play > Setup > Nearby Connections Setup (Okno > Gry Google Play > Konfiguracja > Konfiguracja połączeń w pobliżu).

    • W polu Identyfikator usługi połączeń w pobliżu wpisz package_name.

      Użyj tego samego package_name, którego używasz w konfiguracji projektu Unity.

    • Kliknij Konfiguruj.

Wybierz platformę społecznościową

Wtyczka Usług gier Google Play implementuje interfejs społecznościowy Unity, aby zapewnić zgodność z grami, które już korzystają z tego interfejsu podczas integracji z innymi platformami. Niektóre funkcje są jednak dostępne tylko w Grach Play i stanowią rozszerzenie standardowego interfejsu społecznościowego udostępnianego przez Unity.

Do standardowych wywołań interfejsu API można uzyskać dostęp za pomocą obiektu Social.Active, który jest odwołaniem do interfejsu ISocialPlatform. Do niestandardowych rozszerzeń Usług gier Play Google można uzyskać dostęp, rzutując obiekt Social.Active na klasę PlayGamesPlatform, w której dostępne są dodatkowe metody.

Korzystanie z wtyczki bez zastępowania domyślnej platformy społecznościowej

Gdy wywołasz PlayGamesPlatform.Activate, usługi gier Google Play staną się domyślną implementacją platformy społecznościowej. Oznacza to, że wtyczka Usług Gier Google Play wykonuje statyczne wywołania metod w Social i Social.Active, co jest oczekiwanym zachowaniem w przypadku większości gier korzystających z tej wtyczki.

Jeśli jednak z jakiegoś powodu chcesz zachować dostęp do domyślnej implementacji (np. aby przesyłać osiągnięcia i tabele wyników na inną platformę społecznościową), możesz użyć wtyczki Usług gier Google Play bez zastępowania domyślnej implementacji. Aby to zrobić:

  1. Wywołaj metodę PlayGamesPlatform.Activate.
  2. Jeśli Xyz to nazwa metody wywoływanej w klasie Social, nie wywołuj Social.Xyz. Zamiast tego zadzwoń pod numer PlayGamesPlatform.Instance.Xyz.
  3. Podczas interakcji z usługami Gier Google Play używaj właściwości PlayGamesPlatform.Instance zamiast Social.Active.

Dzięki temu możesz przesyłać wyniki i osiągnięcia jednocześnie na 2 lub więcej platform społecznościowych:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

Weryfikowanie usługi uwierzytelniania

Po otwarciu gry automatycznie podejmowana jest próba połączenia z usługami Gier Play za pomocą uwierzytelniania platformy. Jeśli połączenie się powiedzie, gra wyświetli prośbę o zalogowanie się i będzie gotowa do używania wtyczki Usług Gier Google Play do silnika Unity.

Jeśli użytkownik nigdy nie korzystał z usług Gier Play na swoim urządzeniu, automatycznie wyświetli mu się ekran jednorazowej konfiguracji, na którym może utworzyć konto w Grach Play.

W metodzie Start skryptu nasłuchuj wyniku automatycznej próby uwierzytelniania, pobierz stan uwierzytelniania i wyłącz funkcje usług gier Play, jeśli użytkownik nie jest uwierzytelniony.

Jeśli wersja wtyczki Unity jest starsza niż v11, nie możesz korzystać z funkcji uwierzytelniania.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

Kod wyniku to wyliczenie, którego możesz użyć do określenia przyczyny niepowodzenia uwierzytelniania.

Jeśli wolisz korzystać z platformy społecznościowej Unity, możesz użyć tego kodu:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Nie możesz wykonywać żadnych wywołań interfejsu API Usług gier Google Play, dopóki nie uzyskasz prawidłowej wartości zwracanej z Authenticate. Dlatego zalecamy, aby gry wyświetlały ekran gotowości do momentu wywołania funkcji zwrotnej, aby użytkownicy nie mogli rozpocząć gry, dopóki nie zostanie zakończona autentykacja.

Zapobieganie automatycznemu tworzeniu profili

W pliku manifestu możesz wyłączyć automatyczne wyświetlanie promptów do tworzenia profili. 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 zalogowanych kont Google nie ma profilu w Usługach gier Play.
  • Twoja gra jest zintegrowana z wtyczką do Unity usług Gier Play w wersji 2.1.0 lub nowszej.
  1. W pliku AndroidManifest.xml dodaj tag com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION w 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.

  2. Aby obsługiwać przypadki, w których użytkownik nie jest uwierzytelniony z powodu braku profilu usług gier Play, możesz użyć metody PlayGamesPlatform.Instance.IsAuthenticated(). Zwraca ona wartość false, ponieważ tworzenie profilu kończy się niepowodzeniem. Aby rozwiązać ten problem, rozpocznij proces tworzenia profilu, wywołując funkcję PlayGamesPlatform.Instance.ManuallyAuthenticate().

    
    if (!PlayGamesPlatform.Instance.IsAuthenticated()) {
      // The user is unauthenticated, likely due to a missing Play Games profile.
      // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger
      // the profile creation UI.
      PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => {
        // ...
      });
    }
    

  3. Po dodaniu tagu wykluczającego użyj okna logcat, aby sprawdzić, czy został on dodany. Dane wyjściowe logcat zawierają 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 (za pomocą pliku manifestu)).

Używanie podpisywania aplikacji przez Google Play

Google zarządza kluczem podpisywania Twojej aplikacji i zabezpiecza go za pomocą podpisywania aplikacji przez Google Play. Podpisywanie aplikacji przez Google Play umożliwia podpisywanie zoptymalizowanych plików pakietów Android App Bundle (AAB) na potrzeby dystrybucji. Usługa podpisywania aplikacji przez Google Play przechowuje Twój klucz podpisywania aplikacji w bezpiecznej infrastrukturze Google. Aby korzystać z podpisywania aplikacji przez Google Play, musisz najpierw utworzyć i pobrać plik AAB z Unity Editor. Następnie możesz przesłać plik AAB do Konsoli Play i utworzyć wersję testu wewnętrznego.

Tworzenie pliku AAB

Aby utworzyć plik AAB w edytorze Unity, wykonaj te czynności:

  1. W edytorze Unity kliknij File > Build settings (Plik > Ustawienia kompilacji).
  2. Kliknij Build App Bundle ( Google Play ) (Utwórz pakiet aplikacji (Google Play)).

    Więcej informacji znajdziesz w dokumentacji ustawień kompilacji na Androida.

  3. Kliknij Utwórz.

  4. Pobierz plik AAB z Edytora Unity.

Tworzenie wersji testu wewnętrznego

Aby utworzyć wersję do testów wewnętrznych i dodać testerów w Konsoli Play:

  1. W Konsoli Google Play wybierz grę.
  2. Otwórz stronę Testuj i publikuj ( Testowanie> Test wewnętrzny).
  3. Kliknij Prześlij i wybierz plik AAB.
  4. W polu Szczegóły wersji wpisz nazwę.
  5. Kliknij Dalej i sprawdź szczegóły wydania.
  6. Kliknij Zapisz i opublikuj.
  7. Na karcie Testerzy kliknij Utwórz listę e-mailową, aby dodać maksymalnie 100 testerów.

    Więcej informacji znajdziesz w sekcji Test wewnętrzny: zarządzanie maksymalnie 100 testerami.

  8. W polu Adres URL lub adres e-mail do przesyłania opinii wpisz adres URL lub adres e-mail, na który można przesyłać opinie.

  9. Kliknij Zapisz.

Weryfikowanie danych logowania do podpisywania aplikacji

  1. W Konsoli Google Play wybierz grę.
  2. Otwórz stronę Testowanie i wdrażanie (Konfiguracja > Podpisywanie aplikacji).
  3. Sprawdź dane logowania do podpisywania aplikacji.

Kompilowanie i uruchamianie projektu

Na tym etapie możesz skompilować i uruchomić projekt gry. Po uruchomieniu gry zobaczysz automatyczną próbę uwierzytelnienia.

Musisz mieć fizyczne urządzenie z Androidem z włączonym debugowaniem USB lub emulator, na którym można uruchomić opracowany projekt.

Pobieranie kodów uwierzytelniania serwera

Aby uzyskać dostęp do interfejsów API Google na serwerze backendu w imieniu bieżącego gracza, musisz pobrać kod uwierzytelniający z aplikacji klienckiej i przekazać go do aplikacji serwera WWW. Kod można następnie wymienić na token dostępu, aby wywoływać różne interfejsy API. Informacje o przepływie pracy znajdziesz w artykule Zaloguj się przez Google w internecie.

Aby uzyskać kod dostępu po stronie serwera:

  1. Dodaj identyfikator klienta internetowego do swojej gry w Konsoli Play.
    1. W Konsoli Google Play wybierz grę.
    2. Na stronie Konfiguracja (Zwiększaj liczbę użytkowników > Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja) kliknij Dodaj dane logowania.
    3. Na stronie Dodaj dane logowania kliknij Serwer gier.
    4. Wygeneruj identyfikator klienta OAuth 2.0
    5. Zapisz wartość identyfikatora klienta. Tę wartość musisz podać później.
  2. Dodaj identyfikator klienta internetowego do Unity Hub.

    1. W centrum Unity skonfiguruj Gry Google Play do silnika Unity i przeprowadź uwierzytelnianie.
    2. W centrum Unity kliknij Window (Okno) > Gry Google Play > Setup (Konfiguracja) > Android Setup (Konfiguracja Androida).
    3. Wpisz wartość identyfikatora klienta.
  3. Pobieranie kodu autoryzacji serwera dla dodatkowych zakresów.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Konfigurowanie i dodawanie funkcji