Używanie Sprawdzania aplikacji do zabezpieczania pakietu Navigation SDK na iOS
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 prosi dostawcę atestów, takiego jak App Attest, o ocenę autentyczności aplikacji lub urządzenia. 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 zakłóceń 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 zakłóceń.
Dlaczego warto używać Sprawdzania aplikacji?
Sprawdzanie aplikacji chroni 2 różne obszary pakietu Navigation SDK na iOS: główną funkcję nawigacji i zgłaszanie zakłóceń.
Nawigacja
Sprawdzanie aplikacji pomaga blokować główne żądania pakietu Navigation SDK for iOS ze szkodliwych lub nieautoryzowanych źródeł. Zapewnia to bezpośrednie korzyści, ponieważ chroni 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 funkcji Sprawdzanie aplikacji zapewnia kierowcom najdokładniejsze trasy z uwzględnieniem wszystkich opinii 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ą znacznie zmienić zachowanie wszystkich kierowców na trasie. 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 pakietu Navigation SDK na iOS 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ą.
- Wpływ 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ć zdarzenia i głosować, ale ich zgłoszenia będą mniej widoczne na mapie i będą miały mniejszy wpływ na trasy innych kierowców. Będą też wymagały dodatkowej weryfikacji.
Czy Sprawdzanie aplikacji jest 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 iOS 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.
Omówienie etapów wdrażania
Ogólnie rzecz biorąc, aby zintegrować aplikację ze Sprawdzaniem aplikacji, musisz wykonać 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, 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 dostawców atestów: zalecani przez nas dostawcy atestów, DeviceCheck i App Attest, podlegają limitom i ograniczeniom określonym przez Apple.
- 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 iOS w wersji 11.0 lub nowszej;
- Identyfikator pakietu aplikacji.
- Identyfikator zespołu z karty Subskrypcja w konsoli Apple Developer.
- Jeśli planujesz używać DeviceCheck, plik klucza prywatnego i identyfikator klucza.
- 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 GoogleService-Info.plist bez zmian na poziomie głównym projektu.
W pliku AppDelegate zaimportuj te moduły:
Swift
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
Krok 2. Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj tę funkcję
Firebase udostępnia instrukcje dla każdego domyślnego dostawcy atestów. Te instrukcje pokazują, jak skonfigurować projekt w Firebase i dodać do aplikacji bibliotekę Sprawdzania aplikacji. Aby zainicjować Sprawdzanie aplikacji, postępuj zgodnie z podanymi przykładowymi kodami.
- Aby dodać bibliotekę Sprawdzania aplikacji, postępuj zgodnie z instrukcjami Firebase:
- Zainicjuj Sprawdzanie aplikacji w
AppDelegate:- Jeśli używasz App Attest, utwórz implementację
AppCheckProviderFactoryi zarejestruj ją przed wywołaniemFirebaseApp.configure():Swift
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- Jeśli używasz DeviceCheck, ustaw fabrykę za pomocą:
Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Jeśli używasz App Attest, utwórz implementację
Krok 3. Dodaj dostawcę tokenów
Utwórz plik o nazwie AppCheckTokenProvider (lub, jeśli używasz Objective-C, 2 pliki o nazwach AppCheckTokenProvider.h i AppCheckTokenProvider.m) na poziomie głównym aplikacji.
Ta klasa musi być zgodna z protokołem GMSAppCheckTokenProvider i implementować metodę fetchAppCheckTokenWithCompletion.
Swift
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
Objective-C
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
Krok 4. Zainicjuj interfejsy Navigation API i App Check API
Zainicjuj pakiet Navigation SDK na iOS i zarejestruj instancję dostawcy tokenów w GMSServices:
Swift
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS GMSServices.appCheckTokenProvider = AppCheckTokenProvider()
Objective-C
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS GMSServices.appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
Krok 5. Włącz debugowanie (opcjonalnie)
Po wymuszeniu sprawdzania aplikacji w przypadku pakietu Navigation SDK na iOS 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.
- Skonfiguruj fabrykę dostawcy debugowania w pliku
AppDelegate:Swift
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Włącz logowanie w projekcie Xcode, uruchom aplikację i znajdź lokalny token debugowania w dzienniku konsoli.
- Skopiuj ten token debugowania i dodaj go do 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 prawowici 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.