Z tego artykułu dowiesz się, jak skonfigurować aplikację, grę lub pakiet SDK pod kątem interfejsu Play Integrity API. Aby zintegrować interfejs API, musisz mieć projekt Google Cloud, który jest niezbędny do rozpoczęcia wysyłania żądań. Następnie możesz połączyć projekt Google Cloud w Konsoli Google Play (w przypadku aplikacji) lub w Google Play SDK Console (w przypadku pakietów SDK). Połączenie projektu jest wymagane, aby uzyskać dostęp do dodatkowych opcji konfiguracji, funkcji testowania i raportowania interfejsu API oraz aby poprosić o zwiększenie dziennego limitu żądań.
Włączanie interfejsu Play Integrity API
Każda aplikacja lub pakiet SDK wywołujący interfejs Play Integrity API musi mieć projekt w chmurze Google Cloud, aby korzystać z interfejsu API i monitorować wykorzystanie. Jest to obowiązkowy pierwszy krok w przypadku wszystkich integracji. Interfejs Play Integrity API możesz włączyć w konsoli Google Cloud. Możesz też od razu pominąć ten krok i połączyć swój projekt w chmurze z Google Play, a interfejs Play Integrity API zostanie włączony automatycznie.
W konsoli Google Cloud utwórz nowy projekt w chmurze lub wybierz istniejący, którego chcesz używać z Play Integrity API.
- Otwórz Interfejsy API i usługi.
- Kliknij Włącz interfejsy API i usługi.
- Wyszukaj Play Integrity API.
- Kliknij Włącz.
Możesz teraz zintegrować interfejs Play Integrity API ze swoją aplikacją. Aby uzyskać dostęp do funkcji zaawansowanych i zwiększonych limitów, musisz przejść do kroku dotyczącego łączenia.
Połącz z Google Play (zalecane)
Aby połączyć projekt Google Cloud z aplikacją lub pakietem SDK, postępuj zgodnie z tymi instrukcjami.
Na aplikacje i gry w Google Play
Aplikacje rozpowszechniane w Google Play powinny połączyć swój projekt Google Cloud w Konsoli Google Play, aby włączyć dodatkowe funkcje i poprosić o zwiększenie dziennego limitu interfejsu API.
- Otwórz Konsolę Google Play i wybierz aplikację.
- Kliknij Chronione przez Google Play.
- Obok opcji Play Integrity API kliknij przycisk Rozpocznij, aby przejść do ustawień interfejsu Play Integrity API.
- Kliknij przycisk Połącz z projektem w chmurze.
- Wybierz projekt Google Cloud, którego chcesz używać z interfejsem Play Integrity API. Jeśli interfejs Play Integrity API nie jest jeszcze włączony w projekcie, zostanie on automatycznie włączony po połączeniu.
Dla dostawców pakietów SDK w Play SDK Console
Dostawcy pakietów SDK korzystający z Google Play SDK Console mogą połączyć swój projekt w chmurze Google, aby przypisać użycie interfejsu API do pakietu SDK, a nie do poszczególnych aplikacji, które go używają, włączyć dodatkowe funkcje i poprosić o zwiększenie dziennego limitu interfejsu API. Pamiętaj, że dostęp do Google Play SDK Console podlega kryteriom kwalifikacji.
- Otwórz Google Play SDK Console i wybierz pakiet SDK.
- Otwórz Integralność pakietu SDK.
- W sekcji Play Integrity API kliknij Połącz z projektem w chmurze.
- Wybierz projekt w chmurze Google Cloud, którego chcesz używać z interfejsem Play Integrity API. Jeśli interfejs Play Integrity API nie jest jeszcze włączony w projekcie, zostanie on włączony automatycznie po połączeniu.
Limity wykorzystania interfejsu Play Integrity API
Aplikacja lub pakiet SDK mają domyślny limit dzienny wynoszący 10 tys. żądań, który jest powiązany z numerem projektu w chmurze. Jeśli spodziewasz się większej liczby, możesz poprosić o zwiększenie limitu.
| Działanie | Dzienny limit | Uwagi |
|---|---|---|
| Żądania tokenów | 10 000 | Współdzielone między żądaniami klasycznymi a standardowymi przygotowaniami tokenów |
| Odszyfrowywanie tokenów na serwerach Google | 10 000 | Wspólne dla żądań klasycznych i standardowych |
Zwiększanie maksymalnej liczby żądań dziennie
Zwiększenie limitu zależy od kryteriów kwalifikacji. Zwiększenie limitu dotyczy zarówno wywołań generowania tokenów po stronie klienta, jak i wywołań odszyfrowywania po stronie serwera. Przetwarzanie próśb może potrwać do tygodnia. Zalecamy monitorowanie wykorzystania interfejsu Play Integrity API w konsoli Google Cloud i ustawienie alertów dotyczących limitów, aby uniknąć przerw w działaniu usługi.
Nawet przy wyższym limicie nadal ograniczaj klasyczne żądania do rzadkich, wartościowych działań, aby oszczędzać baterię i ograniczać wykorzystanie danych przez użytkownika.
Na aplikacje i gry w Google Play
Aby kwalifikować się do zwiększenia limitu, aplikacja musi być dostępna w Google Play i ewentualnie innych kanałach dystrybucji. Musisz połączyć projekt Google Cloud ze swoją aplikacją w Konsoli Play. Prośby o zwiększenie limitu z niepołączonych projektów będą odrzucane.
Aby poprosić o zwiększenie limitu:
- Połącz odpowiedni projekt w chmurze Google Cloud w Konsoli Play.
- Sprawdź, czy logika interfejsu API została prawidłowo wdrożona, w tym odpowiednie strategie ponownych prób.
- Prześlij formularz prośby o zwiększenie limitu.
Dla dostawców pakietów SDK w Play SDK Console
Aby kwalifikować się do zwiększenia limitu, musisz zarejestrować swój pakiet SDK w Google Play SDK Console i połączyć z nim projekt w chmurze. Dostęp do Google Play SDK Console podlega kryteriom kwalifikacji.
Aby poprosić o zwiększenie limitu:
- Połącz swój projekt Google Cloud w Google Play SDK Console.
- Wypełnij formularz pomocy dla deweloperów.
W komentarzach podaj szczegóły dotyczące pakietu SDK, opisz przypadek użycia, typ wysyłanych żądań do interfejsu API (standardowe, klasyczne lub oba), częstotliwość wysyłania żądań i maksymalną dzienną liczbę żądań, którą chcesz uzyskać.
Integracja interfejsu Play Integrity API z aplikacją
Aby zintegrować interfejs Play Integrity API z aplikacją lub pakietem SDK, wykonaj jedną z tych czynności w zależności od środowiska programistycznego:
Kotlin lub Java
Najnowsza biblioteka na Androida dla interfejsu Play Integrity API jest dostępna w repozytorium Google Maven. Dodaj do pliku build.gradle aplikacji tę zależność:
implementation 'com.google.android.play:integrity:1.6.0'
Unity
W sekcjach poniżej opisano, jak zintegrować i skonfigurować interfejs Google Play Integrity API w projektach Unity. Znajdziesz tam informacje o obsługiwanych wersjach Unity, metodach instalacji i konfiguracji środowiska.
Obsługiwane wersje Unity
- Obsługiwane są wszystkie wersje 2019.x, 2020.x i nowsze.
- Jeśli korzystasz z Unity 2018.x, obsługiwana jest wersja 2018.4 lub nowsza.
- Gry z silnikiem Unity 2017.x i starszym nie są obsługiwane.
Konfigurowanie środowiska programistycznego
OpenUPM-CLI
Jeśli masz zainstalowany interfejs wiersza poleceń OpenUPM, możesz zainstalować rejestr OpenUPM za pomocą tego polecenia:
openupm add com.google.play.integrityOpenUPM
Otwórz ustawienia menedżera pakietów, wybierając w menu Unity opcję Edit > Project Settings > Package Manager (Edytuj > Ustawienia projektu > Menedżer pakietów).
Dodaj OpenUPM jako rejestr o ograniczonym zakresie do okna Menedżera pakietów:
Name: package.openupm.com URL: https://package.openupm.com Scopes: com.google.external-dependency-manager com.google.play.common com.google.play.core com.google.play.integrityOtwórz menu menedżera pakietów, wybierając w Unity opcję Okno > Menedżer pakietów.
W menu zakresu menedżera wybierz Moje rejestry.
Wybierz pakiet wtyczki Google Play Integrity do Unity z listy pakietów i naciśnij Zainstaluj.
Importuj z GitHuba
Pobierz najnowszą wersję
.unitypackagez GitHuba.Zaimportuj plik
.unitypackage, wybierając opcję menu Unity Zasoby > Importuj pakiet > Pakiet niestandardowy i importując wszystkie elementy.
Unreal Engine
W sekcjach poniżej opisano, jak zintegrować i skonfigurować interfejs Google Play Integrity API w projektach Unreal Engine.
Obsługiwane wersje Unreal Engine
Wtyczka obsługuje Unreal Engine 5.0 i wszystkie nowsze wersje.
Konfigurowanie środowiska programistycznego
Pobierz wtyczkę Play Unreal Engine z repozytorium GitHub.
Skopiuj folder
GooglePlaydo folderuPluginsw projekcie Unreal Engine.Otwórz projekt Unreal Engine i kliknij Edit → Plugins (Edytuj > Wtyczki).
Wyszukaj Google Play i zaznacz pole wyboru Włączone.
Uruchom ponownie projekt gry i aktywuj kompilację.
Otwórz plik
Build.csprojektu i dodaj modułPlayIntegritydoPublicDependencyModuleNames:using UnrealBuildTool; public class MyGame : ModuleRules { public MyGame(ReadOnlyTargetRules Target) : base(Target) { // ... PublicDependencyModuleNames.Add("PlayIntegrity"); // ... } }
Natywna
Postępuj zgodnie z instrukcjami konfiguracji natywnej. Więcej informacji znajdziesz w dokumentacji interfejsu Play Integrity API.
Konfigurowanie odpowiedzi interfejsu API (opcjonalnie)
Odpowiedź interfejsu API zawiera domyślne oceny zwracane w każdym żądaniu. Jeśli masz połączony projekt w chmurze w Konsoli Play lub Play SDK Console, możesz dostosować odpowiedź interfejsu API, aby zawierała dodatkowe informacje.
Domyślne oceny integralności
W odpowiedzi interfejsu Play Integrity API domyślnie zwracane są te oceny integralności:
| Pole odpowiedzi | Wartość | Opis |
|---|---|---|
| Szczegóły konta Play | LICENSED |
Użytkownik ma uprawnienia do korzystania z aplikacji, To znaczy, że zainstalował ją z Google Play lub zaktualizował w Google Play na swoim urządzeniu. |
UNLICENSED |
Użytkownik nie ma uprawnień do korzystania z aplikacji. Może się tak zdarzyć, jeśli np. zainstaluje ją z innego urządzenia lub nie pozyska jej z Google Play. | |
UNEVALUATED |
Szczegóły dotyczące licencji nie zostały określone, ponieważ pominięto wymóg. Może się tak zdarzyć z kilku powodów. Oto niektóre z nich:
|
|
| Integralność aplikacji | PLAY_RECOGNIZED |
Aplikacja i certyfikat odpowiadają wersjom rozpowszechnianym w Google Play. |
UNRECOGNIZED_VERSION |
Nazwa certyfikatu lub pakietu nie odpowiada rekordom Google Play. | |
UNEVALUATED |
Integralność aplikacji nie została określona. Pominięto niezbędny wymóg, np. urządzenie nie było wystarczająco godne zaufania. | |
| Integralność urządzenia | MEETS_DEVICE_INTEGRITY |
Aplikacja działa na oryginalnym i certyfikowanym urządzeniu z Androidem. Na urządzeniach z Androidem 13 lub nowszym jest dostępne sprzętowe potwierdzenie, że program rozruchowy urządzenia jest zablokowany, a załadowany system operacyjny Android jest certyfikowanym obrazem producenta urządzenia. |
| Pusta (pusta wartość) | Aplikacja działa na urządzeniu, na którym pojawiły się oznaki ataku (np. punkt zaczepienia w interfejsie API) lub naruszenia systemu (np. dostęp do roota), albo aplikacja nie działa na urządzeniu fizycznym (tylko np. na emulatorze, który nie przeszedł testów integralności Google Play). |
Gry Google Play na PC
W przypadku rozpowszechniania treści w Grach Google Play na PC automatycznie wyrażasz zgodę na otrzymywanie dodatkowej etykiety w ocenie integralności urządzenia:
| Pole odpowiedzi | Etykieta | Opis |
|---|---|---|
| Integralność urządzenia | MEETS_VIRTUAL_INTEGRITY |
Aplikacja działa w narzędziu Android Emulator z Usługami Google Play. Emulator przeszedł testy integralności systemu i spełnia podstawowe wymagania dotyczące zgodności dla urządzeń z Androidem. |
Opcjonalne oceny integralności
Jeśli masz połączony projekt w chmurze w Konsoli Play lub Konsoli SDK Play, możesz wyrazić zgodę na otrzymywanie dodatkowych informacji.
Aby wprowadzić zmiany, otwórz Konsolę Play i przejdź do sekcji Chronione przez Google Play. Obok Play Integrity API kliknij Zarządzaj. Kliknij Zmień odpowiedzi, wprowadź zmiany i je zapisz.
Informacje o urządzeniu
Dodatkowe etykiety urządzenia w ocenie deviceIntegrity zawierają więcej informacji o środowisku urządzenia, na którym działa aplikacja.
Jedno urządzenie zwraca wiele etykiet, jeśli spełnia kryteria każdej z nich.
Możesz użyć tych etykiet, aby utworzyć wielopoziomową strategię egzekwowania zasad. Możesz na przykład zdecydować, że bardziej ufasz urządzeniu, które zwraca 3 etykiety (MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY i MEETS_BASIC_INTEGRITY), niż urządzeniu, które zwraca tylko 1 etykietę (MEETS_BASIC_INTEGRITY).
Atrybuty urządzenia informują o wersji pakietu Android SDK systemu operacyjnego Android na urządzeniu. W przyszłości może zostać rozszerzony o inne atrybuty urządzeń.
Ostatnia aktywność na urządzeniach zwraca poziom od LEVEL_1 (mała liczba żądań) do LEVEL_4 (duża liczba żądań). Wysoki poziom aktywności może wskazywać, że urządzenie jest używane do generowania nadmiernej liczby tokenów w celu ich nieuczciwego rozpowszechniania na niezaufanych urządzeniach.
Zapamiętanie urządzenia umożliwia przechowywanie niektórych niestandardowych danych dotyczących poszczególnych urządzeń, które można niezawodnie pobrać, gdy aplikacja zostanie później ponownie zainstalowana na tym samym urządzeniu.
Gdy wyrazisz zgodę na otrzymywanie informacji opcjonalnych, odpowiedź interfejsu API będzie zawierać nowe pola i odpowiedzi w ocenie:
| Pole odpowiedzi | Etykieta | Opis | |
|---|---|---|---|
| Integralność urządzenia | MEETS_BASIC_INTEGRITY |
Aplikacja działa na urządzeniu, które przeszło podstawowe testy integralności systemu. Program rozruchowy urządzenia może być zablokowany lub odblokowany, a stan uruchamiania może być zweryfikowany lub niezweryfikowany. Urządzenie może nie być certyfikowane. W takim przypadku Google nie może zagwarantować bezpieczeństwa, prywatności ani zgodności aplikacji. W przypadku Androida 13 lub nowszego werdykt MEETS_BASIC_INTEGRITY wymaga, aby
źródło zaufania atestu było dostarczane przez Google. |
|
MEETS_STRONG_INTEGRITY |
Aplikacja działa na oryginalnym i certyfikowanym urządzeniu z Androidem z najnowszą aktualizacją zabezpieczeń.
|
||
| Atrybuty urządzenia | sdkVersion: 19, 20, ..., 37 |
Wersja pakietu SDK systemu operacyjnego Android na urządzeniu.
Zwrócona liczba odpowiada Build.VERSION_CODES. |
|
| Pusta (pusta wartość) | Wersja pakietu SDK nie została oceniona, ponieważ pominięto niezbędny wymóg. W takim przypadku pole sdkVersion nie jest ustawione, więc pole deviceAttributes jest puste.
Możliwe przyczyny:
|
||
| Standardowe żądania tokena integralności interfejsu API na tym urządzeniu w ciągu ostatniej godziny na aplikację | Żądania tokena integralności klasycznego interfejsu API na tym urządzeniu w ciągu ostatniej godziny na aplikację | ||
| Ostatnia aktywność na urządzeniu | LEVEL_1 (najniższa) |
10 lub mniej | 5 lub mniej |
LEVEL_2 |
Od 11 do 25 | Od 6 do 10 | |
LEVEL_3 |
Od 26 do 50 | Od 11 do 15 | |
LEVEL_4 (najwyższa) |
Ponad 50 | Więcej niż 15 | |
UNEVALUATED |
Ostatnia aktywność na urządzeniu nie została oceniona. Możliwe przyczyny:
|
||
| Zapamiętanie urządzenia | values: bitFirst, bitSecond, bitThird |
Są to wartości bitowe ustawione w przeszłości dla konkretnego urządzenia. To Ty decydujesz o znaczeniu każdego bitu. Wartości tych 3 bitów są domyślnie ustawione na „false” (fałsz). | |
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird |
Są to daty zapisu wartości bitowej w formacie UTC z dokładnością do roku i miesiąca. Data zapisu bitu wycofania jest aktualizowana za każdym razem, gdy bit ma wartość Prawda, i jest usuwana, gdy bit ma wartość Fałsz. | ||
Szczegóły środowiska
Ryzyko dotyczące dostępu do aplikacji wskazuje, czy uruchomione są inne aplikacje, które mogą przechwytywać ekran, wyświetlać nakładki lub sterować urządzeniem. Zweryfikowane usługi ułatwień dostępu, które są znane Google Play, są automatycznie wykluczane z tej oceny.
Ocena Play Protect informuje, czy usługa Google Play Protect jest włączona na urządzeniu i czy wykryła znane złośliwe oprogramowanie.
Gdy wyrazisz zgodę na otrzymywanie informacji opcjonalnych, odpowiedź interfejsu API będzie zawierać nowe pola i odpowiedzi w ocenie:
| Pole odpowiedzi | Wartość | Opis |
|---|---|---|
| Ocena ryzyka dotyczącego dostępu do aplikacji | KNOWN_INSTALLED |
Aplikacje są instalowane przez Google Play lub wstępnie załadowane na partycji systemowej przez producenta urządzenia. |
KNOWN_CAPTURING |
Uruchomione są aplikacje zainstalowane przez Google Play lub wstępnie załadowane na urządzeniu, które mogą służyć do odczytywania lub przechwytywania danych wejściowych i wyjściowych aplikacji wysyłającej żądanie, np. aplikacje do nagrywania ekranu. | |
KNOWN_CONTROLLING |
Uruchomione są aplikacje zainstalowane przez Google Play lub wstępnie zainstalowane na urządzeniu, które mogą służyć do sterowania urządzeniem oraz danymi wejściowymi i wyjściowymi aplikacji wysyłającej żądanie, np. aplikacje do zdalnego sterowania. | |
KNOWN_OVERLAYS |
Działają aplikacje zainstalowane przez Google Play lub wstępnie załadowane na urządzeniu, które mogą wyświetlać nakładki na aplikację wysyłającą żądanie. | |
UNKNOWN_INSTALLED |
Zainstalowane są inne aplikacje, które nie zostały zainstalowane przez Google Play ani wstępnie zainstalowane na partycji systemowej przez producenta urządzenia. | |
UNKNOWN_CAPTURING |
Uruchomione są inne aplikacje (niezainstalowane przez Google Play ani niepreinstalowane na urządzeniu), które mogą służyć do odczytywania lub przechwytywania danych wejściowych i wyjściowych aplikacji wysyłającej żądanie, np. aplikacje do nagrywania ekranu. | |
UNKNOWN_CONTROLLING |
Uruchomione są inne aplikacje (niezainstalowane przez Google Play ani niepreinstalowane na urządzeniu), które mogą służyć do sterowania urządzeniem oraz danymi wejściowymi i wyjściowymi aplikacji wysyłającej żądanie, np. aplikacje do zdalnego sterowania. | |
UNKNOWN_OVERLAYS |
Uruchomione są inne aplikacje (niezainstalowane przez Google Play ani niepreinstalowane na urządzeniu), które mogą wyświetlać nakładki na aplikację wysyłającą żądanie. | |
| Pusta (pusta wartość) | Ryzyko dotyczące dostępu do aplikacji nie jest oceniane, jeśli pominięto niezbędny wymóg. W takim przypadku pole appAccessRiskVerdict jest puste. Może się tak zdarzyć z kilku powodów. Oto niektóre z nich:
|
|
| Ocena Play Protect | NO_ISSUES |
Usługa Play Protect jest włączona i nie wykryła na urządzeniu żadnych problemów z aplikacjami. |
NO_DATA |
Usługa Play Protect jest włączona, ale nie przeprowadzono jeszcze skanowania. Urządzenie lub aplikacja Sklep Play mogły zostać niedawno zresetowane. | |
POSSIBLE_RISK |
Usługa Play Protect jest wyłączona. | |
MEDIUM_RISK |
Usługa Play Protect jest włączona i wykryła na urządzeniu potencjalnie szkodliwe aplikacje. | |
HIGH_RISK |
Usługa Play Protect jest włączona i wykryła na urządzeniu niebezpieczne aplikacje. | |
UNEVALUATED |
Ocena Play Protect nie została określona. Pominięto niezbędny wymóg, np. urządzenie nie było wystarczająco godne zaufania. |
Konfigurowanie ustawień żądań klasycznych (opcjonalnie)
Pomiń tę sekcję, jeśli planujesz wysyłać tylko standardowe żądania do interfejsu API.
Domyślnie to Google Play zarządza szyfrowaniem odpowiedzi, co oznacza, że Twój backend wywołuje serwer Google, aby odszyfrować oceny. Możesz też samodzielnie zarządzać kluczami, aby odszyfrowywać dane lokalnie w bezpiecznym środowisku serwera.
Chcę, aby moje klucze szyfrowania odpowiedzi były zarządzane przez Google (zalecane)
Zalecamy zezwolenie Google na generowanie kluczy i zarządzanie nimi, aby chronić bezpieczeństwo aplikacji. Twój backend połączy się z serwerem Google Play, aby odszyfrować i zweryfikować odpowiedzi.
Zarządzanie własnymi kluczami szyfrowania
Aby odszyfrować dane lokalnie w bezpiecznym środowisku serwera, możesz pobrać klucze szyfrowania z Konsoli Play lub Play SDK Console. Aby korzystać z tej funkcji, Twoja aplikacja musi być dostępna w Google Play.
Zanim zmienisz strategię zarządzania szyfrowaniem odpowiedzi w Konsoli Play, upewnij się, że serwer jest prawidłowo skonfigurowany do odszyfrowywania i weryfikowania tokenów integralności na serwerach Google Play, aby uniknąć zakłóceń.
Przełączanie się między kluczami szyfrowania zarządzanymi przez Google a kluczami zarządzanymi samodzielnie
- Otwórz Konsolę Play i wybierz aplikację .
- Otwórz stronę Chronione przez Google Play.
- Obok Play Integrity API kliknij Zarządzaj.
- W sekcji Żądania klasyczne obok opcji Szyfrowanie odpowiedzi kliknij Edytuj.
Aby przełączyć się na klucze zarządzane samodzielnie:
- Wybierz Chcę samodzielnie pobierać klucze szyfrowania odpowiedzi i nimi zarządzać i prześlij klucz publiczny.
- Kliknij Zapisz, aby automatycznie pobrać zaszyfrowane klucze.
- Zaktualizuj bezpieczny serwer backendu, aby odszyfrowywać lokalnie za pomocą tych kluczy.
Aby przełączyć się na klucze zarządzane przez Google:
- Wybierz Chcę, aby moje klucze szyfrowania odpowiedzi były zarządzane przez Google (zalecane).
- Kliknij Zapisz zmiany.