استفاده از App Check را با یک ارائه دهنده سفارشی در پلتفرم های Apple شروع کنید

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

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

قبل از اینکه شروع کنی

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

  1. وابستگی App Check را به Podfile پروژه خود اضافه کنید:

    pod 'FirebaseAppCheck'

    یا، به عنوان یک جایگزین، می‌توانید از Swift Package Manager استفاده کنید.

    همچنین، مطمئن شوید که از آخرین نسخه کتابخانه‌های کلاینت سرویس Firebase که به آنها وابسته هستید استفاده می‌کنید.

  2. دستور pod install اجرا کنید و فایل .xcworkspace ایجاد شده را باز کنید.

۲. پروتکل‌های 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() 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
  }

}

هدف-سی

@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)
  }
}

هدف-سی

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
    return [[YourCustomAppCheckProvider alloc] initWithApp:app];
}

@end

۳. App Check

کد مقداردهی اولیه زیر را به نماینده برنامه یا مقداردهی اولیه برنامه خود اضافه کنید:

سویفت

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

FirebaseApp.configure()

هدف-سی

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

[FIRApp configure];

مراحل بعدی

پس از نصب کتابخانه App Check در برنامه خود، شروع به توزیع برنامه به‌روزرسانی‌شده بین کاربران خود کنید.

برنامه کلاینت به‌روزرسانی‌شده، همراه با هر درخواستی که به Firebase ارسال می‌کند، شروع به ارسال توکن‌های App Check می‌کند، اما محصولات Firebase تا زمانی که شما در بخش App Check کنسول Firebase، اجرای این کدها را فعال نکنید، نیازی به معتبر بودن آنها نخواهند داشت.

نظارت بر معیارها و فعال کردن اجرای آنها

با این حال، قبل از فعال کردن اجرای قانون، باید مطمئن شوید که انجام این کار، کاربران قانونی فعلی شما را مختل نمی‌کند. از طرف دیگر، اگر استفاده مشکوکی از منابع برنامه خود مشاهده می‌کنید، بهتر است زودتر اجرای قانون را فعال کنید.

برای کمک به تصمیم‌گیری، می‌توانید به معیارهای App Check برای سرویس‌هایی که استفاده می‌کنید، نگاهی بیندازید:

فعال کردن اجرای App Check

وقتی فهمیدید که App Check چگونه بر کاربران شما تأثیر می‌گذارد و آماده ادامه کار شدید، می‌توانید اجرای App Check را فعال کنید:

استفاده از App Check در محیط‌های اشکال‌زدایی

اگر پس از ثبت برنامه خود برای App Check ، می‌خواهید برنامه خود را در محیطی اجرا کنید که App Check معمولاً آن را معتبر طبقه‌بندی نمی‌کند، مانند یک شبیه‌ساز در حین توسعه، یا از یک محیط یکپارچه‌سازی مداوم (CI)، می‌توانید یک نسخه اشکال‌زدایی از برنامه خود ایجاد کنید که از ارائه‌دهنده اشکال‌زدایی App Check به جای یک ارائه‌دهنده گواهی واقعی استفاده می‌کند.

به بخش «استفاده از App Check با ارائه‌دهنده اشکال‌زدایی در پلتفرم‌های اپل» مراجعه کنید.