Obsługa kodów błędów interfejsu Play Integrity API

Jeśli aplikacja wysyła żądanie do interfejsu Play Integrity API, a wywołanie się nie powiedzie, otrzyma kod błędu. Błędy te mogą wystąpić z różnych powodów, takich jak problemy środowiskowe, np. słabe połączenie z internetem, problemy z integracją interfejsu API lub złośliwe działania i aktywne ataki. Typ zwróconego kodu błędu zależy od typu żądania:

Strategie ponawiania

Stosuj wykładniczy spadek w przypadku operacji Play Integrity, które odbywają się w tle i nie wpływają na wrażenia użytkownika podczas sesji.

Można to na przykład zrobić podczas potwierdzania nowych zakupów, ponieważ ta operacja może być wykonywana w tle, a jeśli wystąpi błąd, potwierdzenie nie musi nastąpić w czasie rzeczywistym.

Po pierwszym niepowodzeniu zacznij od opóźnienia początkowego wynoszącego 5 sekund.

Wdrożyć strategię ponownych prób z maksymalną liczbą prób jako warunkiem wyjścia, stosując wykładniczo zwiększające się opóźnienie za każdym razem (10 s, 20 s).

Podczas tych prób sprawdzaj połączenie z internetem i nie przeciążaj urządzenia.

Jeśli po 3 próbach błąd nadal występuje, traktuj to tak, jakby klient nie przeszedł wszystkich testów integralności. Błąd może wystąpić z różnych powodów, m.in. przeciążenia urządzenia, problemów z połączeniem sieci lub próby ataku.

Wartości kodów błędów biblioteki Java

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

Dodatkowe wartości kodów błędów biblioteki natywnej

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

Kody błędów z możliwością ponownej próby

Czasami przyczyną tych błędów są przejściowe warunki, dlatego należy ponownie spróbować wykonać połączenie.

NETWORK_ERROR (kod błędu -3)

Ten błąd wskazuje, że wystąpił problem z połączeniem sieciowym między urządzeniem a systemami Play.

Możliwe rozwiązanie

Aby przywrócić działanie usługi, poproś użytkownika o sprawdzenie połączenia z internetem i używanie prostych prób ponownego połączenia lub wykładniczego zmniejszania częstotliwości prób w zależności od tego, które działanie spowodowało błąd.

Zobacz również

NETWORK_ERROR w przypadku żądań klasycznych.

TOO_MANY_REQUESTS (kod błędu -8)

Aplikacja wywołująca wysyła zbyt wiele żądań do interfejsu API i została ograniczona.

Możliwe rozwiązanie

  1. Prośba o zwiększenie maksymalnej liczby żądań dziennie
  2. Ponownie spróbuj ze wzrastającym czasem do ponowienia.

Zobacz również

TOO_MANY_REQUESTS w przypadku żądań klasycznych.

GOOGLE_SERVER_UNAVAILABLE (kod błędu -12)

Nieznany wewnętrzny błąd serwera Google.

Możliwe rozwiązanie

Ponownie spróbuj ze wzrastającym czasem do ponowienia. Jeśli problem występuje regularnie, rozważ zgłoszenie błędu.

Zobacz również

GOOGLE_SERVER_UNAVAILABLE w przypadku żądań klasycznych.

CLIENT_TRANSIENT_ERROR (kod błędu -18)

Na urządzeniu klienta wystąpił chwilowy błąd.

W przypadku żądań interfejsu Standard API jest to obsługiwane od wersji 1.3.0 biblioteki Play Integrity API na potrzeby Kotlina i Java, wtyczki Google Play Integrity na potrzeby Unity w wersji 1.3.0 lub nowszej oraz pakietu SDK podstawowej biblioteki Play w wersji 1.13.0 lub nowszej.

Możliwe rozwiązanie

Ponownie spróbuj ze wzrastającym czasem do ponowienia.

Zobacz również

CLIENT_TRANSIENT_ERROR w przypadku żądań klasycznych.

Uwaga: gdy dane są przesyłane za pomocą żądania interfejsu Classic API, zwracana jest wartość -17.

INTERNAL_ERROR (kod błędu -100)

Nieznany błąd wewnętrzny.

Możliwe rozwiązanie

Ponownie spróbuj ze wzrastającym czasem do ponowienia. Jeśli problem występuje regularnie, rozważ zgłoszenie błędu.

Zobacz również

INTERNAL_ERROR w przypadku żądań klasycznych.

STANDARD_INTEGRITY_INTERNAL_ERROR (kod błędu -100)

Nieznany błąd wewnętrzny.

Możliwe rozwiązanie

Ponownie spróbuj ze wzrastającym czasem do ponowienia. Jeśli problem występuje regularnie, rozważ zgłoszenie błędu.

Zobacz również

W przypadku żądań klasycznych zobacz INTEGRITY_INTERNAL_ERROR.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (kod błędu -102)

Podczas inicjowania interfejsu Standard Integrity API wystąpił błąd.

Możliwe rozwiązanie

Ponownie spróbuj ze wzrastającym czasem do ponowienia. Jeśli problem występuje regularnie, rozważ zgłoszenie błędu.

Zobacz również

W przypadku żądań klasycznych zobacz INTEGRITY_INITIALIZATION_FAILED.

Kody błędów, których nie można powtórzyć

W takich przypadkach automatyczne powtarzanie prób prawdopodobnie nie pomoże. Jednak ręczne ponowne uruchomienie może pomóc, jeśli użytkownik usunie przyczynę problemu. Jeśli na przykład użytkownik zaktualizuje wersję Sklepu Play do obsługiwanej, można ręcznie powtórzyć początkową operację.

API_NOT_AVAILABLE (kod błędu -1)

Wersja Sklepu Play zainstalowana na urządzeniu może być stara, a interfejs API Integrity może być niedostępny. Inną możliwością jest to, że interfejs Integrity API nie jest włączony w Konsoli Google Play.

Możliwe rozwiązanie

  • Upewnij się, że interfejs Integrity API jest włączony w Konsoli Google Play.
  • Poproś użytkownika o zaktualizowanie Sklepu Play.

Zobacz również

W przypadku klasycznych żądań zobacz API_NOT_AVAILABLE.

PLAY_STORE_NOT_FOUND (kod błędu -2)

Na urządzeniu nie znaleziono oficjalnej aplikacji Sklepu Play.

Możliwe rozwiązanie

Poproś użytkownika o zainstalowanie lub włączenie Sklepu Google Play.

Zobacz również

W przypadku żądań klasycznych zobacz PLAY_STORE_NOT_FOUND.

PLAY_STORE_ACCOUNT_NOT_FOUND (kod błędu -4)

Uwaga: dotyczy to tylko klasycznych żądań wysyłanych za pomocą interfejsu IntegrityErrorCode.

Na urządzeniu nie znaleziono konta Sklepu Play. Pamiętaj, że interfejs Play Integrity API obsługuje teraz żądania bez uwierzytelniania. Ten kod błędu jest używany tylko w przypadku starszych wersji Sklepu Play, które nie są już obsługiwane.

Możliwe rozwiązanie

Poproś użytkownika o zaktualizowanie aplikacji i zalogowanie się w Sklepie Google Play.

APP_NOT_INSTALLED (kod błędu -5)

Aplikacja do wykonywania połączeń nie jest zainstalowana. Coś jest nie tak (być może atak).

Możliwe rozwiązanie

Nie umożliwia wykonania czynności. Potraktuj wynik tak, jakby klient nie przeszedł wszystkich kontroli integralności.

Zobacz również

W przypadku żądań klasycznych zobacz APP_NOT_INSTALLED.

PLAY_SERVICES_NOT_FOUND (kod błędu -6)

Usługi Google Play są niedostępne lub trzeba je zaktualizować.

Możliwe rozwiązanie

Poproś użytkownika o zainstalowanie, zaktualizowanie lub włączenie Usług Play.

Zobacz również

W przypadku żądań klasycznych zobacz APP_NOT_INSTALLED.

APP_UID_MISMATCH (kod błędu -7)

Identyfikator UID (identyfikator użytkownika) wywołującej aplikacji nie jest zgodny z identyfikatorem z Menedżera pakietów.

Możliwe rozwiązanie

Nie umożliwia wykonania czynności. Potraktuj wynik tak, jakby klient nie przeszedł wszystkich kontroli integralności.

Zobacz również

W przypadku żądań klasycznych zobacz APP_UID_MISMATCH.

CANNOT_BIND_TO_SERVICE (kod błędu -9)

Nie udało się połączyć z usługą w Sklepie Play. Może to być spowodowane zainstalowaniem na urządzeniu starszej wersji Sklepu Play.

Możliwe rozwiązanie

Poproś użytkownika o zaktualizowanie Sklepu Google Play.

Zobacz również

W przypadku klasycznych żądań zobacz CANNOT_BIND_TO_SERVICE.

NONCE_TOO_SHORT (kod błędu -10)

Uwaga: dotyczy to tylko klasycznych żądań wysyłanych za pomocą interfejsu IntegrityErrorCode.

Długość liczby jednorazowej jest zbyt krótka. Przed zakodowaniem w formacie base64 losowy ciąg znaków musi mieć co najmniej 16 bajtów.

Możliwe rozwiązanie

Spróbuj ponownie, podając dłuższy identyfikator.

NONCE_TOO_LONG (kod błędu -11)

Uwaga: dotyczy to tylko klasycznych żądań wysyłanych za pomocą interfejsu IntegrityErrorCode.

Długość liczby jednorazowej jest zbyt duża. Przed zakodowaniem w formacie base64 losowy ciąg znaków nie może mieć więcej niż 500 bajtów.

Możliwe rozwiązanie

Spróbuj ponownie, podając krótszy identyfikator.

NONCE_IS_NOT_BASE64 (kod błędu -13)

Uwaga: dotyczy to tylko klasycznych żądań wysyłanych za pomocą interfejsu IntegrityErrorCode.

Liczba jednorazowa nie jest zakodowana jako ciąg tekstowy bez zawinięcia w formacie base64 obsługiwany w internecie.

Możliwe rozwiązanie

Spróbuj ponownie, podając wartość nonce w prawidłowym formacie.

PLAY_STORE_VERSION_OUTDATED (kod błędu -14)

Aplikacja Sklep Google Play wymaga aktualizacji.

Możliwe rozwiązanie

Poproś użytkownika o zaktualizowanie Sklepu Google Play.

Zobacz również

W przypadku żądań klasycznych zobacz PLAY_STORE_VERSION_OUTDATED.

PLAY_SERVICES_VERSION_OUTDATED (kod błędu -15)

Usługi Google Play wymagają aktualizacji.

Możliwe rozwiązanie

Poproś użytkownika o zaktualizowanie Usług Google Play.

Zobacz również

W przypadku klasycznych żądań zobacz PLAY_SERVICES_VERSION_OUTDATED.

CLOUD_PROJECT_NUMBER_IS_INVALID (kod błędu -16)

Podany numer projektu w chmurze jest nieprawidłowy.

Możliwe rozwiązanie

Użyj numeru projektu Cloud, dla którego włączyliśmy interfejs Play Integrity API.

Zobacz również

W przypadku klasycznych żądań zobacz CLOUD_PROJECT_NUMBER_IS_INVALID.

REQUEST_HASH_TOO_LONG (kod błędu -17)

Uwaga: jest to raportowane tylko wtedy, gdy używasz standardowego żądania za pomocą interfejsuStandardIntegrityErrorCode.

Podany element requestHash jest za długi. Liczba znaków w requestHash musi być mniejsza niż 500.

Możliwe rozwiązanie

Spróbuj ponownie, podając krótszy requestHash.

INTEGRITY_TOKEN_PROVIDER_INVALID (kod błędu -19)

Uwaga: dotyczy to tylko standardowych żądań wysyłanych za pomocą interfejsu StandardIntegrityErrorCode.

Element StandardIntegrityTokenProvider jest nieprawidłowy. Ten kod błędu jest dostępny tylko w przypadku żądań interfejsu Standard API, w których przypadku jest obsługiwany od wersji biblioteki 1.3.0 dla języków programowania Kotlin i Java, wtyczki integralności Google Play dla Unity w wersji 1.3.0 lub nowszej oraz podstawowej biblioteki Play do aplikacji natywnych w wersji 1.13.0 lub nowszej.

Możliwe rozwiązanie

Poproś o nowego dostawcę tokenów integralności.

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (kod błędu -101)

StandardIntegrityManager nie został zainicjowany.

Możliwe rozwiązanie

Najpierw zadzwoń pod numer StandardIntegrityManager_init().

Zobacz również

Informacje o żądaniach klasycznych znajdziesz w artykule INTEGRITY_INITIALIZATION_NEEDED.

STANDARD_INTEGRITY_INVALID_ARGUMENT (kod błędu -103)

Nieprawidłowy argument przekazany do interfejsu Standard Integrity API.

Możliwe rozwiązanie

Spróbuj ponownie, podając prawidłowy argument.

Zobacz również

Więcej informacji o żądaniach klasycznych znajdziesz w INTEGRITY_INVALID_ARGUMENT.