欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

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

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

اگر می‌خواهید از App Check با ارائه‌دهندگان داخلی استفاده کنید، به اسناد مربوط به App Check with App Attest و App Check with 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:) دریافت کنید.

سریع

class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
    var app: FirebaseApp

    init(withFirebaseApp app: FirebaseApp) {
        self.app = app
        super.init()
    }

    func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {
        DispatchQueue.main.async {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Create AppCheckToken object.
            let exp = Date(timeIntervalSince1970: expirationFromServer)
            let token = AppCheckToken(
                token: tokenFromServer,
                expirationDate: exp
            )

            // Pass the token or error to the completion handler.
            handler(token, nil)
        }
    }
}

هدف-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 شما را ایجاد می کند:

سریع

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

هدف-C

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

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

@end

3. App Check را اولیه کنید

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

سریع

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

FirebaseApp.configure()

هدف-C

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 معمولاً آن را معتبر طبقه بندی نمی کند، مانند شبیه ساز در طول توسعه، یا از یک محیط یکپارچه سازی مداوم (CI)، می توانید یک ساختار اشکال زدایی از برنامه خود ایجاد کنید که از ارائه دهنده اشکال زدایی App Check به جای ارائه دهنده گواهی واقعی استفاده می کند.

به استفاده از بررسی برنامه با ارائه دهنده اشکال زدایی در پلتفرم های Apple مراجعه کنید.