Zabezpieczanie pakietu Navigation SDK na iOS za pomocą Sprawdzania aplikacji
Sprawdzanie aplikacji Firebase chroni połączenia z Twojej aplikacji z Google Maps Platform, blokując ruch pochodzący z innych źródeł niż Twoje legalne aplikacje. W tym celu prosi dostawcę atestu, takiego jak App Attest, o ocenę autentyczności aplikacji lub urządzenia. Gdy zintegrujesz aplikację ze Sprawdzaniem aplikacji, uzyskasz ochronę przed szkodliwymi 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 floty, 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 iOS: główną funkcję nawigacji i raportowanie zakłóceń.
Nawigacja
Sprawdzanie aplikacji pomaga blokować główne żądania pakietu Navigation SDK na iOS pochodzące ze szkodliwych lub nieautoryzowanych źródeł. Przynosi to bezpośrednie korzyści, ponieważ chroni Twój projekt przed oszukańczymi 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 iOS 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 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ć 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.
- Zhakowane urządzenia: zalecani dostawcy atestu uniemożliwiają uruchamianie 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ę atestu.
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 Sprawdzanie aplikacji.
- Dodaj dostawcę tokenów. Ten krok powoduje wywołanie wybranego dostawcy atestu w celu sprawdzenia integralności 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 wymuszanie, monitoruj żądania aplikacji. Dzięki temu możesz bezproblemowo wymusić Sprawdzanie aplikacji bez zakłócania pracy użytkowników.
Na co zwrócić uwagę podczas planowania integracji ze Sprawdzaniem aplikacji
- Limity dostawcy atestu: zalecani przez nas dostawcy atestu, DeviceCheck lub App Attest, podlegają limitom i ograniczeniom określonym przez Apple.
- 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ą 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 prawidłowy token Sprawdzania aplikacji nie jest dostępny, 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 nie jest dostępny.
- 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. Jako bezpieczną wartość bazową zalecamy 1 godzinę, 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 iOS w wersji 11.0 lub nowszej.
- Identyfikator pakietu aplikacji.
- Identyfikator zespołu na karcie Członkostwo 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 w konsoli Google Cloud.
Krok 1. Dodaj Firebase do aplikacji
Aby dodać Firebase do aplikacji, postępuj zgodnie z instrukcjami w dokumentacji dla deweloperów Firebase. Dodaj plik GoogleService-Info.plist w niezmienionej postaci do katalogu głównego 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 Sprawdzanie aplikacji
Firebase zawiera instrukcje dotyczące każdego domyślnego dostawcy atestu. Te instrukcje pokazują, jak skonfigurować projekt w Firebase i dodać bibliotekę Sprawdzania aplikacji do aplikacji. Aby zainicjować Sprawdzanie aplikacji, postępuj zgodnie z podanymi przykładami kodu.
- Aby dodać bibliotekę Sprawdzania aplikacji, postępuj zgodnie z instrukcjami Firebase:
- Zainicjuj Sprawdzanie aplikacji w pliku
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 zamiast tego używasz DeviceCheck, ustaw fabrykę za pomocą tego kodu:
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) w katalogu 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)
Gdy wymuszanie Sprawdzania aplikacji zostanie włączone 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 kwalifikują się jako prawidłowe urządzenia. Aby uruchamiać aplikację w tych środowiskach podczas programowania i testowania, musisz utworzyć kompilację do debugowania aplikacji, która używa dostawcy debugowania Sprawdzania aplikacji zamiast dostawcy atestu w wersji produkcyjnej.
- 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 logu konsoli.
- Skopiuj ten token debugowania i dodaj go do 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 mieć pewność, że nie zakłócisz pracy legalnych użytkowników.
- Otwórz ekran danych Sprawdzania aplikacji w konsoli Firebase, aby zobaczyć odsetek zweryfikowanego i niezweryfikowanego ruchu.
- Gdy masz 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.