Zabezpieczanie pakietu Navigation SDK na Androida za pomocą Sprawdzania aplikacji
Sprawdzanie aplikacji Firebase chroni połączenia z Twojej aplikacji z platformą Google Maps, blokując ruch pochodzący z innych źródeł niż Twoje legalne aplikacje. W tym celu wysyła do dostawcy potwierdzenia, takiego jak Play Integrity, prośbę o ocenę autentyczności aplikacji lub urządzenia. Gdy zintegrujesz aplikację ze Sprawdzaniem aplikacji, zyskasz ochronę przed złośliwymi i nieautoryzowanymi żądaniami, co z kolei zabezpieczy Cię przed nieautoryzowanymi obciążeniami. Sprawdzanie aplikacji znacznie poprawia też raportowanie zakłóceń w czasie rzeczywistym w ekosystemie aplikacji dla kierowców, co przynosi korzyści wszystkim kierowcom korzystającym z Twojej aplikacji. Więcej informacji znajdziesz w sekcji Raportowanie zakłóceń.
Dlaczego warto korzystać ze Sprawdzania aplikacji?
Sprawdzanie aplikacji chroni 2 różne obszary pakietu Navigation SDK na Androida: główną funkcję nawigacji i raportowanie zakłóceń.
Nawigacja
Sprawdzanie aplikacji pomaga blokować główne żądania pakietu Navigation SDK na Androida pochodzące ze złośliwych lub nieautoryzowanych źródeł. Przynosi to bezpośrednie korzyści, ponieważ chroni Twój projekt przed oszustwami związanymi z płatnościami i wyczerpaniem limitu.
Raportowanie zakłóceń
Jeśli Twoja aplikacja obsługuje raportowanie zakłóceń i głosowanie w czasie rzeczywistym, zdecydowanie zalecamy włączenie Sprawdzania aplikacji. Włączenie Sprawdzania aplikacji zapewnia kierowcom najdokładniejsze trasy, które uwzględniają wszystkie opinie w czasie rzeczywistym.
Dlaczego Sprawdzanie aplikacji jest ważne w przypadku raportowania:
- Wysoki poziom zaufania w przypadku zamknięć: zdarzenia wpływające na trasę, takie jak zamknięcia dróg, mogą znacząco zmienić zachowanie routingu u wszystkich kierowców. Aby chronić mapę przed potencjalnym wandalizmem, spamem lub niedokładnymi zgłoszeniami, infrastruktura moderacji Google w przypadku zakłóceń związanych z zamknięciem dróg opiera się na silnych sygnałach integralności urządzenia i integralności aplikacji.
- Jak Sprawdzanie aplikacji weryfikuje raporty: raporty i głosy użytkowników wysyłane z pakietu Navigation SDK na Androida zawierają token Sprawdzania aplikacji, który jest używany przez backend Google do weryfikowania legalności opinii, zwiększania poziomu zaufania i umożliwiania oceny wpływu na mapę publiczną.
- Wpływ pominięcia Sprawdzania aplikacji: raporty przesyłane bez prawidłowego tokena Sprawdzania aplikacji są oceniane na podstawie modelu o niższym poziomie zaufania i mogą być przetwarzane wyłącznie jako ciche sygnały. Oznacza to, że użytkownicy nadal mogą zgłaszać problemy i głosować, ale ich raporty będą mniej widoczne na mapie i będą miały mniejszy wpływ na trasy innych kierowców. Będą też wymagać dodatkowej weryfikacji.
Czy Sprawdzanie aplikacji jest dla mnie odpowiednie?
W większości przypadków zalecamy korzystanie ze Sprawdzania aplikacji. W tych sytuacjach nie jest ono jednak potrzebne lub nie jest obsługiwane:
- Aplikacje prywatne lub eksperymentalne: jeśli Twoja aplikacja nie jest publicznie dostępna, Sprawdzanie aplikacji nie jest potrzebne.
- Urządzenia ze złamanymi zabezpieczeniami: zalecani dostawcy potwierdzenia uniemożliwiają uruchamianie pakietu Navigation SDK na Androida na urządzeniach, którym nie można ufać, takich jak telefony z dostępem do roota lub po jailbreaku. Aby obsługiwać te urządzenia, wdróż niestandardowego dostawcę potwierdzenia.
- Urządzenia z Androidem bez Usług mobilnych Google (GMS): aby korzystać z Play Integrity, urządzenia z Androidem muszą mieć zainstalowane Usługi mobilne Google (GMS). Jeśli planujesz obsługiwać urządzenia z Androidem bez GMS, wdróż niestandardowego dostawcę potwierdzenia.
Omówienie kroków wdrożenia
Aby zintegrować aplikację ze Sprawdzaniem aplikacji, wykonaj te czynności:
- Dodaj Firebase do swojej aplikacji.
- Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj Sprawdzanie aplikacji.
- Dodaj dostawcę tokenów. Ten krok powoduje wywołanie wybranego dostawcy potwierdzenia w celu sprawdzenia integralności urządzenia lub aplikacji.
- Zainicjuj interfejsy API nawigacji i Sprawdzania aplikacji.
- Włącz debugowanie. Jest to przydatne podczas programowania lub w środowiskach trybu ciągłej integracji (CI).
- Zanim włączysz wymuszanie, monitoruj żądania aplikacji. Dzięki temu 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 potwierdzenia: zalecany przez nas dostawca potwierdzenia, Play Integrity, ma dzienny limit wywołań w przypadku korzystania z warstwy standardowej interfejsu API. Więcej informacji o limitach wywołań znajdziesz na stronie Konfiguracja w dokumentacji dla deweloperów Google Play Integrity.
- Opóźnienie uruchamiania: w większości sytuacji użytkownicy nie będą odczuwać opóźnienia podczas normalnego użytkowania, ponieważ tokeny Sprawdzania aplikacji są zapisywane w pamięci podręcznej urządzenia. 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 będą odczuwać pewne opóźnienie podczas uruchamiania. Opóźnienie występuje na przykład podczas zimnego startu, gdy token w pamięci podręcznej wygasł lub go brakuje.
- TTL tokena: czas życia (TTL) określa czas, przez jaki token Sprawdzania aplikacji jest ważny, zanim trzeba go odświeżyć. W konsoli Firebase możesz skonfigurować ten czas od 30 minut do 7 dni. Zalecamy ustawienie 1 godziny jako bezpiecznej wartości bazowej, ale pakiet SDK automatycznie próbuje odświeżać tokeny w tle mniej więcej w połowie czasu TTL. Szczegółowe instrukcje dotyczące konsoli znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Integracja aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne
- Aplikacja z zainstalowanym pakietem Navigation SDK 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 w konsoli Google Cloud.
Krok 1. Dodaj Firebase do swojej aplikacji
Aby dodać Firebase do swojej aplikacji, postępuj zgodnie z instrukcjami w dokumentacji dla deweloperów Firebase. Dodaj swój plik google-services.json do katalogu aplikacji w projekcie.
Krok 2. Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj Sprawdzanie aplikacji
Dodaj zależność Sprawdzania aplikacji do pliku build.gradle aplikacji:
Dynamiczny (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 Application lub w 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 z Firebase i przekazuje je do stosu sieciowego pakietu Navigation SDK na Androida za pomocą 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 API nawigacji i Sprawdzania aplikacji
Zainicjuj pakiet Navigation SDK na Androida i zarejestruj instancję ujednoliconego dostawcy tokenów 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 (opcjonalny)
Gdy wymusisz Sprawdzanie aplikacji w pakiecie Navigation SDK na Androida, funkcje aplikacji, które zależą od tego pakietu SDK, nie będą działać w symulatorze ani w trybie ciągłej integracji (CI), ponieważ te środowiska nie kwalifikują się jako prawidłowe urządzenia. Aby uruchamiać aplikację w tych środowiskach podczas programowania i testowania, musisz utworzyć kompilację debugowania aplikacji, która używa dostawcy debugowania Sprawdzania aplikacji zamiast dostawcy potwierdzenia produkcyjnego.
- Dodaj zależność dostawcy debugowania do pliku
build.gradleaplikacji:Dynamiczny (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Skonfiguruj Sprawdzanie aplikacji tak, aby w kompilacjach debugowania używało fabryki dostawcy 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 wydrukuje lokalny token debugowania w danych logcat.
- Skopiuj i zarejestruj ten token debugowania w konsoli Firebase. Więcej informacji znajdziesz w dokumentacji dostawcy debugowania Sprawdzania aplikacji Firebase.
Krok 6. Monitorowanie żądań aplikacji i decydowanie o wymuszaniu
Zanim włączysz egzekwowanie, monitoruj żądania aplikacji, aby nie zakłócać pracy legalnych użytkowników.
- Otwórz ekran danych Sprawdzania aplikacji w konsoli Firebase, aby zobaczyć odsetek zweryfikowanego i niezweryfikowanego ruchu.
- Gdy będziesz mieć pewność, że większość ruchu jest zweryfikowana, a legalni użytkownicy zaktualizowali aplikację do wersji zawierającej implementację Sprawdzania aplikacji, włącz egzekwowanie.
- Gdy wymuszanie jest włączone, Sprawdzanie aplikacji będzie odrzucać cały ruch bez prawidłowego tokena Sprawdzania aplikacji.