Używanie Sprawdzania aplikacji do zabezpieczania pakietu Navigation SDK na Androida
Sprawdzanie aplikacji Firebase chroni wywołania z aplikacji do Google Maps Platform, blokując ruch pochodzący ze źródeł innych niż Twoje uprawnione aplikacje. W tym celu wysyła żądanie oceny autentyczności aplikacji lub urządzenia do dostawcy atestów, takiego jak Play Integrity. Gdy zintegrujesz aplikację ze Sprawdzaniem aplikacji, dodasz ochronę przed szkodliwymi i nieautoryzowanymi żądaniami, co z kolei zabezpieczy Twoje rozliczenia przed nieautoryzowanymi obciążeniami. Sprawdzanie aplikacji znacznie ulepsza też raportowanie utrudnień w czasie rzeczywistym w ekosystemie aplikacji floty, co przynosi korzyści wszystkim kierowcom, którzy korzystają z Twojej aplikacji. Więcej informacji znajdziesz w artykule Zgłaszanie utrudnień.
Dlaczego warto korzystać ze Sprawdzania aplikacji?
Sprawdzanie aplikacji chroni 2 różne obszary pakietu Navigation SDK for Android: główną funkcję nawigacji i zgłaszanie zakłóceń.
Nawigacja
Sprawdzanie aplikacji pomaga blokować główne żądania pakietu Navigation SDK for Android pochodzące ze szkodliwych lub nieautoryzowanych źródeł. Zapewnia to bezpośrednie korzyści, ponieważ chroni Twój projekt przed oszukańczymi płatnościami i wyczerpaniem limitu.
Zgłaszanie zakłóceń
Jeśli Twoja aplikacja obsługuje zgłaszanie zakłóceń w czasie rzeczywistym i funkcje głosowania, zdecydowanie zalecamy korzystanie ze Sprawdzania aplikacji. Włączenie Sprawdzania aplikacji zapewnia kierowcom najdokładniejsze trasy z uwzględnieniem wszystkich opinii w czasie rzeczywistym.
Dlaczego Sprawdzanie aplikacji jest ważne w przypadku raportowania:
- Wysokie wymagania dotyczące zaufania w przypadku zamknięć: zdarzenia wpływające na trasę, takie jak zamknięcia dróg, mogą znacznie zmienić zachowanie wszystkich kierowców. Aby chronić mapę przed potencjalnymi aktami wandalizmu, spamem lub niedokładnymi zgłoszeniami, infrastruktura moderacji Google dotycząca utrudnień związanych z zamknięciem dróg opiera się na silnych sygnałach integralności urządzenia i aplikacji.
- Jak Sprawdzanie aplikacji weryfikuje zgłoszenia: zgłoszenia i głosy użytkowników wysyłane z Navigation SDK na Androida zawierają token Sprawdzania aplikacji, który jest używany przez backend Google do weryfikacji wiarygodności opinii, co zwiększa jej poziom zaufania i umożliwia ocenę jej wpływu na mapę publiczną.
- Skutki pominięcia Sprawdzania aplikacji: raporty przesłane bez prawidłowego tokena Sprawdzania aplikacji są oceniane w modelu o niższym poziomie zaufania i mogą być przetwarzane wyłącznie jako sygnały ciche. Oznacza to, że użytkownicy nadal mogą zgłaszać i głosować, ale ich zgłoszenia będą rzadziej widoczne na mapie lub będą miały mniejszy wpływ na trasy innych kierowców i będą wymagały dodatkowej weryfikacji.
Czy Sprawdzanie aplikacji to odpowiednie rozwiązanie dla mnie?
W większości przypadków zalecamy korzystanie ze Sprawdzania aplikacji, ale nie jest ono potrzebne lub obsługiwane w tych sytuacjach:
- Aplikacje prywatne lub eksperymentalne: jeśli aplikacja nie jest publicznie dostępna, Sprawdzanie aplikacji nie jest potrzebne.
- Zhakowane urządzenia: zalecani dostawcy atestów uniemożliwiają działanie pakietu Navigation SDK na Androida na niezaufanych urządzeniach, takich jak telefony z dostępem do roota lub po jailbreaku. Aby obsługiwać te urządzenia, wdróż niestandardowego dostawcę atestów.
- Urządzenia z Androidem bez GMS: aby korzystać z Play Integrity, urządzenia z Androidem muszą mieć Usługi mobilne Google (GMS). Jeśli planujesz obsługiwać urządzenia z Androidem bez GMS, wdróż niestandardowego dostawcę atestów.
Omówienie etapów wdrażania
Aby zintegrować aplikację ze Sprawdzaniem aplikacji, wykonaj te czynności:
- Dodaj Firebase do aplikacji.
- Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj tę funkcję.
- Dodaj dostawcę tokenów. Ten krok wywołuje wybranego dostawcę atestu, aby zweryfikować integralność urządzenia lub aplikacji.
- Zainicjuj interfejsy Navigation API i App Check API.
- Włącz debugowanie. Jest to przydatne podczas programowania lub w środowiskach trybu ciągłej integracji (CI).
- Zanim włączysz egzekwowanie zasad, monitoruj żądania aplikacji. W ten sposób możesz bezproblemowo wymusić sprawdzanie aplikacji bez zakłócania pracy użytkowników.
Kwestie do rozważenia podczas planowania integracji ze Sprawdzaniem aplikacji
- Limity dostawcy atestów: zalecany przez nas dostawca atestów, Play Integrity, ma dzienny limit wywołań w przypadku standardowej kategorii wykorzystania interfejsu API. Więcej informacji o limitach wywołań znajdziesz na stronie Konfiguracja w dokumentacji dla deweloperów dotyczącej Google Play Integrity.
- Opóźnienie podczas uruchamiania: w większości sytuacji użytkownicy nie będą doświadczać opóźnień podczas regularnego korzystania z aplikacji, ponieważ tokeny Sprawdzania aplikacji są przechowywane w pamięci podręcznej na urządzeniu. System automatycznie odświeża tokeny Sprawdzania aplikacji w tle przed ich wygaśnięciem, aby zapewnić płynne działanie. Jeśli jednak nie ma prawidłowego tokena Sprawdzania aplikacji, użytkownicy aplikacji mogą doświadczyć pewnych opóźnień podczas uruchamiania. To opóźnienie występuje na przykład podczas uruchamiania na zimno, gdy token z pamięci podręcznej wygasł lub go brakuje.
- Czas życia tokena: czas życia (TTL) określa, jak długo token Sprawdzania aplikacji jest ważny, zanim trzeba będzie go odświeżyć. W konsoli Firebase możesz ustawić ten czas na od 30 minut do 7 dni. Zalecany czas trwania to 1 godzina, ale pakiet SDK automatycznie próbuje odświeżyć dane w tle po upływie około połowy czasu TTL. Szczegółowe instrukcje dotyczące konsoli znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Integracja aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne i wymagania
- aplikację z zainstalowanym pakietem SDK do nawigacji na Androida w wersji 7.9 lub nowszej;
- Odcisk cyfrowy certyfikatu SHA-256 aplikacji.
- Nazwa pakietu aplikacji.
- Musisz być właścicielem aplikacji w konsoli Google Cloud.
- Identyfikator projektu aplikacji z konsoli Google Cloud.
Krok 1. Dodaj Firebase do aplikacji
Aby dodać Firebase do aplikacji, postępuj zgodnie z instrukcjami podanymi w dokumentacji Firebase dla deweloperów. Dodaj plik google-services.json do katalogu na poziomie aplikacji w projekcie.
Krok 2. Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj tę funkcję
Dodaj zależność Sprawdzania aplikacji do pliku build.gradle aplikacji:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
Zainicjuj Sprawdzanie aplikacji w klasie aplikacji lub głównej aktywności:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Krok 3. Dodaj dostawcę tokenów
Utwórz implementację interfejsu MapsAppCheckTokenProvider. Ten dostawca asynchronicznie pobiera tokeny Sprawdzania aplikacji Firebase z tej usługi i przekazuje je do stosu sieciowego pakietu Navigation SDK na Androida za pomocą interfejsu MapsAppCheckTokenCallback:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
Krok 4. Zainicjuj interfejsy Navigation API i App Check API
Zainicjuj pakiet SDK do nawigacji na Androida i zarejestruj instancję dostawcy ujednoliconego tokena za pomocą MapsApiSettings.setAppCheckTokenProvider():
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
Krok 5. Włącz debugowanie (opcjonalnie)
Po wymuszeniu Sprawdzania aplikacji w przypadku pakietu Navigation SDK na Androida funkcje aplikacji, które zależą od tego pakietu, nie będą działać w symulatorze ani w trybie ciągłej integracji (CI), ponieważ te środowiska nie są uznawane za prawidłowe urządzenia. Aby uruchamiać aplikację w tych środowiskach podczas programowania i testowania, musisz utworzyć kompilację do debugowania, która używa dostawcy debugowania Sprawdzania aplikacji zamiast dostawcy atestu produkcyjnego.
- Dodaj zależność dostawcy debugowania do pliku
build.gradleaplikacji:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Skonfiguruj Sprawdzanie aplikacji, aby używać fabryki dostawców debugowania w kompilacjach do debugowania:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- Uruchom aplikację na emulatorze lub urządzeniu do debugowania. Sprawdzanie aplikacji wyświetli lokalny token debugowania w danych wyjściowych logcat.
- Skopiuj i zarejestruj ten token debugowania w konsoli Firebase. Więcej informacji znajdziesz w dokumentacji dostawcy debugowania Sprawdzania aplikacji Firebase.
Krok 6. Monitoruj prośby o dostęp do aplikacji i podejmuj decyzje dotyczące egzekwowania zasad
Zanim włączysz egzekwowanie, monitoruj żądania aplikacji, aby upewnić się, że nie zakłócisz działania uprawnionych użytkowników.
- Aby zobaczyć odsetek zweryfikowanego i niezweryfikowanego ruchu, otwórz ekran danych Sprawdzania aplikacji w konsoli Firebase.
- Gdy upewnisz się, że większość ruchu jest zweryfikowana, a uprawnieni użytkownicy zaktualizowali aplikację do wersji zawierającej implementację Sprawdzania aplikacji, włącz egzekwowanie.
- Po włączeniu wymuszania Sprawdzanie aplikacji będzie odrzucać cały ruch bez prawidłowego tokena Sprawdzania aplikacji.