此頁面向您展示如何使用您的自定義 App Check 提供程序在 Apple 應用程序中啟用 App Check。當您啟用 App Check 時,您有助於確保只有您的應用可以訪問您項目的 Firebase 資源。
如果您想將 App Check 與內置提供程序一起使用,請參閱App Check with App Attest和App Check with DeviceCheck文檔。
在你開始之前
1.將App Check庫添加到您的應用中
將 App Check 的依賴項添加到項目的
Podfile
中:pod 'FirebaseAppCheck'
或者,您也可以改用Swift 包管理器。
此外,請確保您使用的是您所依賴的任何 Firebase 服務客戶端庫的最新版本。
運行
pod install
並打開創建的.xcworkspace
文件。
2.實施App Check協議
首先,您需要創建實現AppCheckProvider
和AppCheckProviderFactory
協議的類。
您的AppCheckProvider
類必須有一個getToken(completion:)
方法,該方法收集您的自定義 App Check 提供商需要的任何信息作為真實性證明,並將其發送到您的令牌獲取服務以換取 App Check 令牌。 App Check SDK 處理令牌緩存,因此始終在您的getToken(completion:)
實現中獲取新令牌。
迅速
class YourCustomAppCheckProvider: NSObject, AppCheckProvider { var app: FirebaseApp init(withFirebaseApp app: FirebaseApp) { self.app = app super.init() } func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) { DispatchQueue.main.async { // Logic to exchange proof of authenticity for an App Check token. // ... // Create AppCheckToken object. let exp = Date(timeIntervalSince1970: expirationFromServer) let token = AppCheckToken( token: tokenFromServer, expirationDate: exp ) // Pass the token or error to the completion handler. handler(token, nil) } } }
目標-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
實現的實例:
迅速
class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return YourCustomAppCheckProvider(withFirebaseApp: app) } }
目標-C
@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourCustomAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[YourCustomAppCheckProvider alloc] initWithApp:app]; } @end
3.初始化App Check
將以下初始化代碼添加到您的應用委託或應用初始化程序中:
迅速
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
目標-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
下一步
在您的應用程序中安裝 App Check 庫後,開始將更新後的應用程序分發給您的用戶。
更新後的客戶端應用程序將開始發送 App Check 令牌及其向 Firebase 發出的每個請求,但 Firebase 產品不會要求令牌有效,直到您在 Firebase 控制台的 App Check 部分啟用強制執行。
監控指標並啟用強制執行
但是,在您啟用強制執行之前,您應該確保這樣做不會干擾您現有的合法用戶。另一方面,如果您發現對應用資源的可疑使用,您可能希望盡快啟用強制措施。
為幫助做出此決定,您可以查看您使用的服務的 App Check 指標:
- 監控實時數據庫、Cloud Firestore、Cloud Storage 和身份驗證(測試版)的 App Check 請求指標。
- 監控 Cloud Functions 的 App Check 請求指標。
啟用 App Check 強制執行
當您了解 App Check 將如何影響您的用戶並準備好繼續操作時,您可以啟用 App Check 強制執行:
- 為實時數據庫、Cloud Firestore、Cloud Storage 和身份驗證啟用 App Check 強制執行(測試版)。
- 為 Cloud Functions 啟用 App Check 強制執行。
在調試環境中使用 App Check
如果在為 App Check 註冊您的應用程序後,您希望在 App Check 通常不會歸類為有效的環境中運行您的應用程序,例如開發期間的模擬器,或來自持續集成 (CI) 環境,您可以創建您的應用程序的調試版本,使用 App Check 調試提供程序而不是真正的證明提供程序。
請參閱在 Apple 平台上將 App Check 與調試提供程序一起使用。