این صفحه نحوه فعال کردن App Check در برنامه Apple را بااستفاده از ارائهدهنده سفارشی App Check نشان میدهد. وقتی App Check را فعال میکنید، به اطمینان از اینکه فقط برنامه شما میتواند به منابع Firebase پروژه شما دسترسی داشته باشد کمک میکنید.
اگر میخواهید از App Check با ارائهدهندگان داخلی استفاده کنید، اسناد مربوط به App Check با «گواهی برنامه» و App Check با DeviceCheck را ببینید.
قبل از شروع
اگر قبلاً این کار را انجام ندادهاید، Firebase را به پروژه Apple خود اضافه کنید.
منطق سمت سرور ارائهدهنده App Check سفارشی خود را پیادهسازی کنید.
۱. افزودن کتابخانه App Check به برنامه
از مدیر بسته Swift برای نصب و مدیریت وابستگیهای Firebase استفاده کنید.
در Xcode، با باز بودن پروژه برنامه، به File (فایل) > Add Packages (افزودن بستهها) بروید، مخزن «کیت توسعه نرمافزار پلاتفرمهای Apple در Firebase» را اضافه کنید (
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 را برای Firebase AI Logic، SQL Connect، Realtime Database، Cloud Firestore، Cloud Storage، Authentication، Google Identity for iOS، Maps JavaScript API، و Places API (جدید) پایش کنید.
- سنجههای درخواست App Check را برای Cloud Functions پایش کنید.
فعال کردن اجرای App Check
وقتی متوجه شدید App Check چگونه بر کاربران شما تأثیر میگذارد و آماده ادامه دادن هستید، میتوانید اجرای App Check را فعال کنید:
- اجرای App Check را برای Firebase AI Logic، SQL Connect، Realtime Database، Cloud Firestore، Cloud Storage، Authentication، Google Identity for iOS، Maps JavaScript API، و Places API (جدید) فعال کنید.
- اجرای App Check را برای Cloud Functions فعال کنید.
استفاده از App Check در محیطهای اشکالزدایی
اگر پساز ثبت برنامه برای App Check، بخواهید برنامهتان را در محیطی اجرا کنید که App Check معمولاً آن را بهعنوان معتبر طبقهبندی نمیکند، مثل شبیهساز درطول توسعه، یا از محیط ادغام پیوسته (CI)، میتوانید ساخت اشکالزدایی برنامهتان را ایجاد کنید که بهجای ارائهدهنده گواهی واقعی از ارائهدهنده اشکالزدایی App Check استفاده میکند.
استفاده از App Check با ارائهدهنده اشکالزدایی در پلاتفرمهای Apple را ببینید.