開始在 Apple 平台上搭配自訂供應商使用 App Check

本頁面將說明如何在 Apple 應用程式中使用 自訂 App Check 供應商。啟用 App Check 後 可確保只有應用程式可以存取專案的 Firebase 資源。

如果您想透過內建供應商使用 App Check,請參閱 搭配使用 App Check 和 App Attest 使用 DeviceCheck 進行 App Check

事前準備

1. 在應用程式中加入 App Check 程式庫

  1. 將 App Check 的依附元件新增至專案的 Podfile

    pod 'FirebaseAppCheck'

    或者,您也可以使用 Swift 套件 Manager

    此外,請務必使用最新版 Firebase 服務 您仰賴的用戶端程式庫

  2. 執行 pod install,然後開啟建立的 .xcworkspace 檔案。

2. 實作 App Check 通訊協定

首先,您需要建立實作 AppCheckProvider 的類別,並 AppCheckProviderFactory 通訊協定。

您的 AppCheckProvider 類別必須具備 getToken(completion:) 方法, 會收集自訂 App Check 供應商所需的任何資訊 並傳送給您的權杖取得服務 做為 App Check 權杖的交換App Check SDK 會處理權杖 因此務必在實作 getToken(completion:)

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

同時實作 AppCheckProviderFactory 類別,以建立應用程式的執行個體 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. 初始化 App Check

將下列初始化程式碼新增至應用程式委派或應用程式初始化器:

Swift

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

FirebaseApp.configure()

Objective-C

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

[FIRApp configure];

後續步驟

在應用程式中安裝 App Check 程式庫後,即可開始發布 為使用者提供了最新的應用程式

更新後的用戶端應用程式會開始傳送 App Check 權杖和 但 Firebase 產品不需要權杖 您必須在 Firebase 控制台。

監控指標並啟用強制執行功能

不過,啟用強制執行功能之前,請先確認這項操作不會 幹擾現有的合法使用者另一方面,如果您發現 如果您對應用程式資源都很可疑,不妨啟用強制執行功能

為做出這項決定,您可以查看 App Check 指標: 您使用的服務:

啟用強制執行 App Check

瞭解 App Check 對使用者的影響後,您就能做好準備 下一步,您可以啟用 App Check 強制執行功能:

在偵錯環境中使用 App Check

只要在應用程式註冊 App Check 後, 應用程式所在的環境中,App Check 通常不會歸類為有效應用程式。 例如開發期間的模擬工具,或從持續整合 (CI) 匯入的資料 您就能為應用程式建立偵錯版本,該應用程式會使用 App Check 偵錯供應器,而非真正的認證提供者。

請參閱「搭配 Apple 平台上的偵錯供應商使用 App Check」一文。