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, raportowania interfejsu API i 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 Google Cloud, aby korzystać z interfejsu API i monitorować jego użycie. Jest to obowiązkowy pierwszy krok w przypadku wszystkich integracji. Interfejs Play Integrity API możesz włączyć w konsoli Google Cloud lub przejść bezpośrednio do połączenia projektu Cloud z Google Play. W tym przypadku interfejs Play Integrity API zostanie włączony automatycznie.
W konsoli Google Cloud utwórz nowy projekt Cloud lub wybierz istniejący projekt Cloud, którego chcesz używać z interfejsem 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 z aplikacją. Aby uzyskać dostęp do zaawansowanych funkcji i zwiększyć limit, musisz przejść do kroku łączenia.
Łączenie z Google Play (zalecane)
Aby połączyć aplikację lub pakiet SDK z Google Play, postępuj zgodnie z tymi instrukcjami.
W przypadku aplikacji i gier 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 Testowanie i publikowanie > Integralność aplikacji.
- W sekcji Play Integrity API kliknij 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 włączony automatycznie po połączeniu.
Dla dostawców SDK w Google Play SDK Console
Dostawcy pakietów SDK korzystający z Google Play SDK Console mogą połączyć swój projekt Google Cloud, aby przypisywać wykorzystanie interfejsu API do pakietu SDK, a nie do poszczególnych aplikacji, które go używają. Mogą też 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 stronę Integralność pakietu SDK.
- W sekcji Play Integrity API kliknij 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 tym projekcie, zostanie włączony automatycznie po połączeniu.
Limity wykorzystania interfejsu Play Integrity API
Aplikacja lub pakiet SDK ma domyślny dzienny limit 10 tys. żądań, który jest powiązany z numerem projektu w Google Cloud. Jeśli przewidujesz większą liczbę wyświetleń, możesz poprosić o zwiększenie limitu.
| Działanie | Dzienny limit | Uwagi |
|---|---|---|
| Żądania tokenów | 10 000 | Wspólne dla żądań klasycznych i standardowych przygotowań tokenów |
| odszyfrowywanie tokenów na serwerach Google, | 10 000 | Wspólne dla żądań klasycznych i standardowych |
Zwiększanie maksymalnej dziennej liczby żądań
Zwiększenie limitu zależy od spełnienia kryteriów kwalifikacji. Zwiększenie limitu dotyczy zarówno generowania tokenów po stronie klienta, jak i wywołań odszyfrowywania po stronie serwera. Rozpatrywanie próśb może potrwać do tygodnia. Zalecamy monitorowanie wykorzystania interfejsu Play Integrity API w konsoli Google Cloud i ustawianie alertów o limicie, 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ę użytkownika i zużycie danych.
W przypadku aplikacji i gier w Google Play
Aby kwalifikować się do zwiększenia limitu, aplikacja musi być dostępna w Google Play i ewentualnie w innych kanałach dystrybucji. Musisz połączyć projekt Google Cloud z 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 Google Cloud w Konsoli Play.
- Sprawdź, czy logika interfejsu API została prawidłowo zaimplementowana, w tym odpowiednie strategie ponawiania.
- Prześlij formularz prośby o zwiększenie limitu.
Dla dostawców SDK w Google 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 Google Cloud. 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 dotyczący Google Play SDK Console.
W sekcji komentarzy opisz swój przypadek użycia, typ wysyłanych żądań API (standardowe, klasyczne lub oba), częstotliwość wysyłania żądań oraz dzienną maksymalną liczbę żądań, którą chcesz uzyskać.
Integrowanie 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 znajdziesz informacje o tym, jak zintegrować i skonfigurować interfejs Google Play Integrity API w projektach Unity. Obejmują one obsługiwane wersje Unity, metody instalacji i konfigurację środowiska.
Obsługiwane wersje Unity
- Obsługiwane są wszystkie wersje 2019.x, 2020.x i nowsze.
- Jeśli korzystasz z Unity 2018.x, obsługiwane są wersje 2018.4 i nowsze.
- Gry z silnikiem Unity 2017.x i starszym nie są obsługiwane.
Konfigurowanie środowiska programistycznego
OpenUPM-CLI
Jeśli masz zainstalowany wiersz 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.
Dodaj OpenUPM jako rejestr o określonym zakresie w oknie Package Manager:
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 opcję menu Unity Window > Package Manager (Okno > Menedżer pakietów).
W menu Zakres menedżera wybierz Moje rejestry.
Na liście pakietów wybierz pakiet Google Play Integrity plugin for Unity i kliknij Install (Zainstaluj).
Importowanie z GitHuba
Pobierz najnowszą
.unitypackagewersję z GitHub.Zaimportuj plik
.unitypackage, wybierając w menu Unity opcję Assets > Import package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet) i importując wszystkie elementy.
Unreal Engine
W kolejnych sekcjach opisujemy, 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 kolejne wersje.
Konfigurowanie środowiska programistycznego
Pobierz wtyczkę Play Unreal Engine Plugin z repozytorium GitHub.
Skopiuj folder
GooglePlayw folderzePluginsw projekcie Unreal Engine.Otwórz projekt w 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"); // ... } }
Rodzimy użytkownik
Postępuj zgodnie z przewodnikiem konfiguracji reklam natywnych. Więcej informacji znajdziesz w dokumentacji referencyjnej natywnego interfejsu API Play Integrity.
Konfigurowanie odpowiedzi interfejsu API (opcjonalnie)
Odpowiedź interfejsu API zawiera domyślne wyniki zwracane w każdym żądaniu. Jeśli masz połączony projekt Cloud w Konsoli Play lub Google 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 |
|---|---|---|
| Integralność urządzenia | MEETS_DEVICE_INTEGRITY |
Aplikacja działa na oryginalnym i certyfikowanym urządzeniu z Androidem. W przypadku Androida 13 i nowszych wersji istnieje sprzętowe potwierdzenie, że program rozruchowy urządzenia jest zablokowany, a załadowany system operacyjny Android to certyfikowany obraz producenta urządzenia. |
| Puste (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). | |
| Szczegóły konta Play | LICENSED |
Użytkownik ma uprawnienia do korzystania z aplikacji, To znaczy, że zainstalował ją z Google Play lub zaktualizował 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 wymaganie. 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. |
Gry Google Play na PC
W przypadku rozpowszechniania treści w Grach Google Play na PC automatycznie włączona jest opcja otrzymywania dodatkowej etykiety w wyniku weryfikacji 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 Cloud w Konsoli Play lub Play SDK Console, możesz wyrazić zgodę na otrzymywanie dodatkowych informacji.
Aby wprowadzić zmiany, otwórz Konsolę Play i kliknij Testowanie i wdrażanie > Integralność aplikacji. Obok opcji Play Integrity API kliknij Ustawienia. Kliknij Zmień odpowiedzi, edytuj i zapisz zmiany.
Informacje o urządzeniu
Dodatkowe etykiety urządzenia w deviceIntegritywerdykcie zawierają więcej informacji o środowisku urządzenia, na którym działa aplikacja.
Pojedyncze urządzenie może zwrócić wiele etykiet, jeśli spełnia kryteria każdej z nich.
Za pomocą tych etykiet możesz utworzyć wielopoziomową strategię egzekwowania. Możesz na przykład bardziej ufać 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ć rozszerzona o inne atrybuty urządzenia.
Ostatnia aktywność na urządzeniach zwraca poziom w zakresie od LEVEL_1 (niewielka 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 nadużywania i rozpowszechniania na niezaufanych urządzeniach.
Przywoływanie urządzenia umożliwia przechowywanie niektórych niestandardowych danych dotyczących poszczególnych urządzeń, które można niezawodnie odzyskać, gdy aplikacja zostanie później ponownie zainstalowana na tym samym urządzeniu.
Gdy wyrazisz zgodę na udostępnianie informacji opcjonalnych, w odpowiedzi interfejsu API pojawią się 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 mieć certyfikatu, w którym to przypadku Google nie może zapewnić bezpieczeństwa, prywatności ani zgodności aplikacji. W przypadku Androida 13 i nowszych wersji MEETS_BASIC_INTEGRITY wymaga, aby
główny punkt zaufania atestu był dostarczany 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, ..., 36 |
Wersja pakietu SDK systemu operacyjnego Android działającego na urządzeniu.
Zwrócona liczba odpowiada wartości Build.VERSION_CODES. |
|
| Puste (pusta wartość) | Wersja pakietu SDK nie została określona, ponieważ pominięto niezbędny wymóg. W takim przypadku pole sdkVersion nie jest ustawione, więc pole deviceAttributes jest puste.
Może się tak zdarzyć, ponieważ:
|
||
| 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 |
26–50 | Od 11 do 15 | |
LEVEL_4 (najwyższa) |
Ponad 50 | Ponad 15 | |
UNEVALUATED |
Ostatnia aktywność na urządzeniach nie została oceniona. Może się tak zdarzyć, ponieważ:
|
||
| Zapamiętanie urządzenia | values: bitFirst, bitSecond, bitThird |
Są to wartości bitów, które zostały ustawione w przeszłości dla konkretnego urządzenia. To Ty decydujesz o znaczeniu każdego bitu. Domyślnie wszystkie 3 wartości bitowe są fałszywe. | |
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird |
Są to daty zapisu wartości bitowych w czasie UTC z dokładnością do roku i miesiąca. Data zapisu bitu wycofania jest aktualizowana za każdym razem, gdy bit jest ustawiony na wartość „true”, i usuwana, gdy bit jest ustawiony na wartość „false”. | ||
Szczegóły środowiska
Ryzyko dotyczące dostępu do aplikacji informuje, 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 udostępnianie informacji opcjonalnych, w odpowiedzi interfejsu API pojawią się 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 wczytywane na partycję systemową przez producenta urządzenia. |
KNOWN_CAPTURING |
Aplikacje zainstalowane przez Google Play lub wstępnie załadowane na urządzeniu są uruchomione i mogą być używane do odczytywania lub przechwytywania danych wejściowych i wyjściowych aplikacji wysyłającej żądanie, np. aplikacji do nagrywania ekranu. | |
KNOWN_CONTROLLING |
Aplikacje zainstalowane przez Google Play lub wstępnie załadowane na urządzeniu są uruchomione i mogą być używane do sterowania urządzeniem oraz danymi wejściowymi i wyjściowymi aplikacji wysyłającej żądanie, np. aplikacje do zdalnego sterowania. | |
KNOWN_OVERLAYS |
Aplikacje zainstalowane przez Google Play lub wstępnie załadowane na urządzeniu są uruchomione i 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 wczytane wstępnie na partycję systemową przez producenta urządzenia. | |
UNKNOWN_CAPTURING |
Uruchomione są inne aplikacje (niezainstalowane przez Google Play ani niezaładowane wstępnie na urządzeniu), które mogą być używane 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 niezaładowane wstępnie 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 niezaładowane wstępnie na urządzeniu), które mogą wyświetlać nakładki na aplikację wysyłającą żądanie. | |
| Puste (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 |
Ochrona Play Protect jest włączona i nie wykryła na urządzeniu żadnych problemów z aplikacjami. |
NO_DATA |
Ochrona Play Protect jest włączona, ale skanowanie nie zostało jeszcze przeprowadzone. Urządzenie lub aplikacja Sklep Play mogły zostać niedawno zresetowane. | |
POSSIBLE_RISK |
Ochrona 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 |
Opinia Play Protect nie została sprawdzona. 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 tylko wysyłać standardowe żądania do interfejsu API.
Domyślnie Google Play zarządza szyfrowaniem odpowiedzi, co oznacza, że Twój backend łączy się z serwerem Google, aby odszyfrować wyniki. Możesz też samodzielnie zarządzać kluczami, aby odszyfrowywać dane lokalnie w bezpiecznym środowisku serwera.
Pozwól Google zarządzać szyfrowaniem odpowiedzi (zalecane)
Zalecamy zezwolenie Google na generowanie kluczy i zarządzanie nimi w celu ochrony bezpieczeństwa aplikacji. Twój serwer backendu 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 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ąć przerw w działaniu.
Przełączanie między kluczami szyfrowania zarządzanymi przez Google a kluczami zarządzanymi samodzielnie
- Otwórz Konsolę Play i wybierz aplikację .
- Kliknij Testowanie i publikowanie > Integralność aplikacji.
- Obok opcji Play Integrity API kliknij Ustawienia.
- W sekcji Żądania klasyczne obok opcji Szyfrowanie odpowiedzi kliknij Edytuj.
Aby przejść 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ł dane lokalnie za pomocą tych kluczy.
Aby przejść na klucze zarządzane przez Google:
- Wybierz Chcę, aby moje klucze szyfrowania odpowiedzi były zarządzane przez Google (zalecane).
- Kliknij Zapisz zmiany.