מתחילים להשתמש ב-App Check עם ספק מותאם אישית בפלטפורמות של Apple

בדף הזה מוסבר איך להפעיל את App Check באפליקציה של Apple באמצעות ספק App Check בהתאמה אישית. כשמפעילים את App Check, אפשר לוודא שרק לאפליקציה תהיה גישה למשאבי Firebase של הפרויקט.

אם רוצים להשתמש ב-App Check עם הספקים המובנים, אפשר לעיין במאמרים App Check עם App Attest ו-App Check עם DeviceCheck.

לפני שמתחילים

1. הוספת הספרייה App Check לאפליקציה

  1. מוסיפים את יחסי התלות של App Check ל-Podfile של הפרויקט:

    pod 'FirebaseAppCheck'

    לחלופין, אפשר להשתמש ב-Swift Package Manager.

    בנוסף, חשוב לוודא שאתם משתמשים בגרסה העדכנית ביותר של כל ספריית לקוח של שירות Firebase שאתם תלויים בה.

  2. מריצים את pod install ופותחים את הקובץ .xcworkspace שנוצר.

2. הטמעת הפרוטוקולים App Check

קודם כול, צריך ליצור כיתות שמטמיעות את הפרוטוקולים AppCheckProvider ו-AppCheckProviderFactory.

לכיתה AppCheckProvider צריכה להיות שיטה getToken(completion:), שמאגרת את כל המידע שנחוץ לספק App Check בהתאמה אישית כראיה לאותנטיות, ושולחת אותו לשירות קבלת האסימון בתמורה לאסימון App Check. ה-SDK של App Check מטפל בשמירת אסימונים במטמון, לכן תמיד צריך לקבל אסימון חדש בהטמעה של 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 במסוף Firebase.

מעקב אחרי המדדים והפעלת האכיפה

עם זאת, לפני שמפעילים את האכיפה, חשוב לוודא שהפעולה הזו לא תפריע למשתמשים החוקיים הקיימים. לעומת זאת, אם אתם רואים שימוש חשוד במשאבי האפליקציה, מומלץ להפעיל את האכיפה מוקדם יותר.

כדי לעזור לכם לקבל את ההחלטה הזו, תוכלו לעיין במדדים של App Check בשירותים שבהם אתם משתמשים:

הפעלת אכיפה של App Check

אחרי שתבחנו את ההשפעה של App Check על המשתמשים ותהיה לכם כוונה להמשיך, תוכלו להפעיל את האכיפה של App Check:

שימוש ב-App Check בסביבות ניפוי באגים

אם אחרי הרשמת האפליקציה ל-App Check, אתם רוצים להריץ את האפליקציה בסביבה שבדרך כלל App Check לא מסווגת כתקינה, כמו סימולטור במהלך הפיתוח או מסביבת שילוב רצוף (CI), תוכלו ליצור גרסה לניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של App Check במקום בספק אימות אמיתי.

מידע נוסף זמין במאמר שימוש ב-App Check עם ספק ניפוי הבאגים בפלטפורמות של Apple.