بدء استخدام ميزة "التحقّق من التطبيقات" مع مقدّم خدمة مخصّص على أنظمة Apple الأساسية

توضّح لك هذه الصفحة كيفية تفعيل ميزة "التحقق من التطبيقات" في أحد تطبيقات Apple، باستخدام موفّر خدمة "التحقق من التطبيقات" المخصص. عند تفعيل فحص التطبيقات، تسهم في ضمان وصول تطبيقك فقط إلى موارد Firebase لمشروعك.

إذا أردت استخدام ميزة "فحص التطبيق" مع موفّري الخدمات المدمجين، يُرجى الاطّلاع على مستندات فحص التطبيق مع مصادقة التطبيق وفحص التطبيق باستخدام أداة DeviceCheck.

قبل البدء

1- إضافة مكتبة فحص التطبيقات إلى تطبيقك

  1. أضِف تبعية ميزة "فحص التطبيقات" إلى Podfile في مشروعك:

    pod 'FirebaseAppCheck'

    بدلاً من ذلك، يمكنك استخدام Swift Package Manager بدلاً من ذلك.

    تأكَّد أيضًا من استخدام أحدث إصدار من أي مكتبات برامج تعتمد عليها في Firebase.

  2. شغِّل تطبيق "pod install" وافتح ملف ".xcworkspace" الذي تم إنشاؤه.

2- تنفيذ بروتوكولات فحص التطبيقات

أولاً، يجب إنشاء فئات تستخدم البروتوكولَين AppCheckProvider وAppCheckProviderFactory.

يجب أن تتضمن فئة AppCheckProvider طريقة getToken(completion:)، التي تجمع أي معلومات يطلبها موفِّر خدمة "فحص التطبيقات" المخصَّص كإثبات مصادقتها، وترسلها إلى خدمة الحصول على الرموز المميّزة مقابل الحصول على رمز مميَّز خاص بميزة "فحص التطبيقات". تتعامل حزمة تطوير البرامج (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- إعداد فحص التطبيقات

أضِف رمز الإعداد التالي إلى مفوِّض التطبيق أو أداة إعداد التطبيق:

Swift

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

FirebaseApp.configure()

Objective-C

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

[FIRApp configure];

الخطوات اللاحقة

بعد تثبيت مكتبة "فحص التطبيقات" في تطبيقك، ابدأ في توزيع التطبيق المحدَّث على المستخدمين.

سيبدأ تطبيق العميل المحدّث في إرسال رموز "فحص التطبيق" مع كل طلب يتم تقديمه إلى Firebase، إلا أنّ منتجات Firebase لن تتطلب أن تكون الرموز المميزة صالحة إلى أن يتم تفعيل التنفيذ في قسم "فحص التطبيق" في وحدة تحكُّم Firebase.

مراقبة المقاييس وتفعيل التنفيذ

ومع ذلك، قبل تفعيل التنفيذ، يجب التأكّد من أنّ ذلك لن يعطّل المستخدمين الشرعيين الحاليين. من ناحية أخرى، إذا لاحظت استخدامًا مريبًا لموارد تطبيقك، ننصحك بتفعيل هذه الميزة في وقت أقرب.

للمساعدة في اتخاذ هذا القرار، يمكنك الاطّلاع على مقاييس "فحص التطبيق" للخدمات التي تستخدمها:

تفعيل فرض فحص التطبيقات

بعد معرفة تأثير فحص التطبيقات على المستخدمين، وعند استعدادك للمتابعة، يمكنك تفعيل تنفيذ ميزة "فحص التطبيق":

استخدام ميزة "فحص التطبيقات" في بيئات تصحيح الأخطاء

بعد تسجيل تطبيقك في ميزة "فحص التطبيقات"، إذا أردت تشغيل تطبيقك في بيئة لا تصنّفها أداة "فحص التطبيقات" عادةً على أنّها صالحة، مثل المحاكي أثناء التطوير، أو من بيئة تكامل مستمر (CI)، يمكنك إنشاء إصدار لتصحيح أخطاء تطبيقك يستخدم موفِّر خدمة تصحيح أخطاء التطبيق بدلاً من موفّر تصديق حقيقي.

راجِع استخدام ميزة "فحص التطبيق" مع موفِّر تصحيح الأخطاء على أنظمة Apple الأساسية.