מתחילים להשתמש ב-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. ‫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 במסוף Firebase.

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

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

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

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

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

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

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

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