شروع به استفاده از «بررسی برنامه» با ارائه‌دهنده سفارشی در پلاتفرم‌های Apple

این صفحه به شما نشان می‌دهد که چگونه App Check را در یک برنامه Apple بااستفاده از ارائه‌دهنده سفارشی App Check فعال کنید. وقتی App Check را فعال می‌کنید، کمک می‌کنید تا مطمئن شوید فقط برنامه شما می‌تواند به منابع Firebase پروژه‌تان دسترسی داشته باشد.

اگر می‌خواهید از App Check با ارائه‌دهندگان داخلی استفاده کنید، اسناد مربوط به App Check با App Attest و App Check با DeviceCheck را ببینید.

قبل از شروع

۱. کتابخانه App Check را به برنامه‌تان اضافه کنید

  1. از Swift Package Manager برای نصب و مدیریت وابستگی‌های Firebase استفاده کنید.

    در Xcode، درحالی‌که پروژه برنامه‌تان باز است، به File > Add Packages بروید، مخزن کیت توسعه نرم‌افزار پلاتفرم‌های Firebase Apple را اضافه کنید (https://github.com/firebase/firebase-ios-sdk)، و کتابخانه FirebaseAppCheck را انتخاب کنید.

۲. اجرای پروتکل‌های App Check

ابتدا باید کلاس‌هایی ایجاد کنید که پروتکل‌های AppCheckProvider و AppCheckProviderFactory را پیاده‌سازی کنند.

کلاس AppCheckProvider شما باید روش getToken(completion:) داشته باشد که هر اطلاعاتی را که ارائه‌دهنده App Check سفارشی شما به‌عنوان مدرک اصالت نیاز دارد جمع‌آوری کند و آن را در ازای یک کد App Check به سرویس دریافت کد شما ارسال کند. کیت توسعه نرم‌افزار 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

۳. مقداردهی اولیه 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 را ببینید.