Zacznij korzystać ze Sprawdzania aplikacji od dostawcy niestandardowego na platformach Apple

Z tej strony dowiesz się, jak włączyć App Check w aplikacji na iOS przy użyciu własnego dostawcy App Check. Gdy włączysz App Check, masz pewność, że tylko Twoja aplikacja będzie mieć dostęp do zasobów Firebase w projekcie.

Jeśli chcesz używać App Check z wbudowanymi dostawcami, zapoznaj się z dokumentacją dotyczącą App Check z App AttestApp Check z DeviceCheck.

Zanim zaczniesz

1. Dodawanie biblioteki App Check do aplikacji

  1. Dodaj do pliku Podfile projektu zależność App Check:

    pod 'FirebaseAppCheck'

    Możesz też użyć menedżera pakietów Swift.

    Upewnij się też, że używasz najnowszej wersji bibliotek klienta dowolnej usługi Firebase, od której zależy Twoja aplikacja.

  2. Uruchom pod install i otwórz utworzony plik .xcworkspace.

2. Wdrażanie protokołów App Check

Najpierw musisz utworzyć klasy, które implementują protokoły AppCheckProviderAppCheckProviderFactory.

Twoja klasa AppCheckProvider musi mieć metodę getToken(completion:), która zbiera informacje wymagane przez niestandardowego dostawcę App Check jako dowód autentyczności i wysyła je do usługi uzyskiwania tokenów w zamian za token App Check. Pakiet SDK App Check obsługuje buforowanie tokenów, więc w implementacji getToken(completion:) zawsze pobieraj nowy token.

Swift

class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
  var app: FirebaseApp

  init(withFirebaseApp app: FirebaseApp) {
    self.app = app
    super.init()
  }

  func getToken() async throws -> AppCheckToken {
    let getTokenTask = Task { () -> AppCheckToken in
      // ...

      // Create AppCheckToken object.
      let exp = Date(timeIntervalSince1970: expirationFromServer)
      let token = AppCheckToken(
        token: tokenFromServer,
        expirationDate: exp
      )

      if Date() > exp {
        throw NSError(domain: "ExampleError", code: 1, userInfo: nil)
      }

      return token
    }

    return try await getTokenTask.value
  }

}

Objective-C

@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider>

@property FIRApp *app;

- (id)initWithApp:(FIRApp *)app;

@end

@implementation YourCustomAppCheckProvider

- (id)initWithApp:app {
    self = [super init];
    if (self) {
        self.app = app;
    }
    return self;
}

- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable,
                                                 NSError * _Nullable))handler {
    dispatch_async(dispatch_get_main_queue(), ^{
        // Logic to exchange proof of authenticity for an App Check token.
        // ...

        // Create FIRAppCheckToken object.
        NSTimeInterval exp = expirationFromServer;
        FIRAppCheckToken *token
            = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer
                                       expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]];

        // Pass the token or error to the completion handler.
        handler(token, nil);
    });
}

@end

Zaimplementuj też klasę AppCheckProviderFactory, która tworzy instancje implementacji AppCheckProvider:

Swift

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

Objective-C

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
    return [[YourCustomAppCheckProvider alloc] initWithApp:app];
}

@end

3. Zainicjuj App Check

Dodaj ten kod inicjalizacji do delegata aplikacji lub inicjatora aplikacji:

Swift

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Objective-C

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

Dalsze kroki

Po zainstalowaniu biblioteki App Check w aplikacji zacznij rozpowszechniać zaktualizowaną aplikację wśród użytkowników.

Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny App Check wraz z każdym żądaniem wysyłanym do Firebase, ale usługi Firebase nie będą wymagać, aby tokeny były ważne, dopóki nie włączysz egzekwowania w sekcji App Check konsoli Firebase.

Monitorowanie danych i włączanie egzekwowania

Zanim jednak włączysz egzekwowanie, upewnij się, że nie zakłóci to działania obecnych, legalnych użytkowników. Jeśli jednak zauważysz podejrzane wykorzystanie zasobów aplikacji, możesz włączyć egzekwowanie wcześniej.

Aby podjąć decyzję, możesz sprawdzić dane App Check dotyczące usług, z których korzystasz:

Włączanie wymuszania App Check

Gdy zrozumiesz, jak App Check wpłynie na użytkowników, i będziesz gotowy(-a) do kontynuowania, możesz włączyć egzekwowanie App Check:

Używanie App Check w środowiskach debugowania

Jeśli po zarejestrowaniu aplikacji w App Check chcesz uruchomić ją w środowisku, które App Check zwykle nie klasyfikuje jako prawidłowe, np. w symulatorze podczas programowania lub w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugowania aplikacji, która używa dostawcy debugowania App Check zamiast prawdziwego dostawcy atestów.

Zobacz Korzystanie z App Check z dostawcą debugowania na platformach Apple.