استفاده از App Check برای ایمنسازی SDK ناوبری برای iOS
Firebase App Check با مسدود کردن ترافیکی که از منابعی غیر از برنامههای قانونی شما میآید، از تماسهای برنامه شما به پلتفرم Google Maps محافظت میکند. این کار را با درخواست ارزیابی صحت برنامه یا دستگاه از یک ارائهدهنده گواهی مانند App Attest انجام میدهد. هنگامی که برنامه خود را با App Check ادغام میکنید، محافظت در برابر درخواستهای مخرب و غیرمجاز را افزایش میدهید که به نوبه خود از صورتحساب شما در برابر هزینههای غیرمجاز محافظت میکند. App Check همچنین گزارش اختلال در زمان واقعی را در اکوسیستم برنامه ناوگان شما به طور قابل توجهی بهبود میبخشد و در نتیجه به نفع همه رانندگانی است که از برنامه شما استفاده میکنند. برای اطلاعات بیشتر، به گزارش اختلال مراجعه کنید.
چرا از بررسی برنامه استفاده کنیم؟
بررسی برنامه از دو بخش مجزا از کیت توسعه نرمافزار ناوبری برای iOS محافظت میکند: عملکرد اصلی ناوبری و گزارش اختلال.
ناوبری
بررسی برنامه (App Check) به مسدود کردن درخواستهای iOS از منابع مخرب یا غیرمجاز در SDK ناوبری اصلی کمک میکند. این امر مستقیماً به نفع شما خواهد بود و پروژه شما را از تقلب در صورتحساب و اتمام سهمیه محافظت میکند.
گزارش اختلال
اگر اپلیکیشن شما از گزارش اختلال و قابلیتهای رأیگیری در لحظه پشتیبانی میکند، استفاده از App Check اکیداً توصیه میشود. فعال کردن App Check تضمین میکند که رانندگان شما دقیقترین مسیرها را با در نظر گرفتن تمام بازخوردهای لحظهای دریافت میکنند.
چرا بررسی برنامه برای گزارشدهی مهم است:
- سطح بالای اعتماد به بسته شدن جادهها: رویدادهای تأثیرگذار بر مسیر، مانند بسته شدن جادهها، میتوانند رفتار مسیریابی را برای همه رانندگان به طور قابل توجهی تغییر دهند. برای محافظت از نقشه در برابر خرابکاریهای احتمالی، هرزنامه یا گزارشهای نادرست، زیرساخت مدیریت گوگل برای اختلالات بسته شدن جادهها به سیگنالهای قوی یکپارچگی دستگاه و برنامه متکی است.
- نحوه اعتبارسنجی گزارشها توسط App Check: گزارشها و آرای کاربران که از Navigation SDK برای iOS ارسال میشوند، شامل توکن App Check هستند که توسط بخش پشتیبانی گوگل برای اعتبارسنجی مشروعیت بازخورد، افزایش سطح اعتماد و امکان ارزیابی آن برای تأثیر روی نقشه زنده استفاده میشود.
- تأثیر حذف App Check: گزارشهایی که بدون توکن معتبر App Check ارسال میشوند، تحت یک مدل با اعتماد کمتر ارزیابی میشوند و ممکن است صرفاً به عنوان سیگنالهای خاموش پردازش شوند. این بدان معناست که اگرچه کاربران شما هنوز میتوانند گزارش دهند و رأی دهند، اما گزارشهای آنها کمتر روی نقشه قابل مشاهده است یا بر مسیرهای سایر رانندگان تأثیر میگذارد و نیاز به اعتبارسنجی اضافی دارد.
آیا اپ چک برای من مناسب است؟
در بیشتر موارد، App Check توصیه میشود؛ با این حال، در سناریوهای زیر نیازی به App Check نیست یا پشتیبانی نمیشود:
- برنامههای خصوصی یا آزمایشی: اگر برنامه شما به صورت عمومی قابل دسترسی نیست، نیازی به بررسی برنامه نیست.
- دستگاههای آسیبپذیر: ارائهدهندگان گواهی توصیهشده، از اجرای Navigation SDK برای iOS روی دستگاههای غیرقابل اعتماد، مانند تلفنهای روتشده یا جیلبریکشده، جلوگیری میکنند. برای پشتیبانی از این دستگاهها، یک ارائهدهنده گواهی سفارشی مستقر کنید.
مرور کلی مراحل اجرا
در سطح بالا، برای ادغام برنامه خود با App Check، این مراحل را دنبال خواهید کرد:
- فایربیس را به برنامه خود اضافه کنید.
- کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید.
- یک ارائهدهنده توکن اضافه کنید. این مرحله، ارائهدهنده گواهی مورد نظر شما را برای تأیید صحت دستگاه یا برنامه فراخوانی میکند.
- APIهای Navigation و App Check را مقداردهی اولیه کنید.
- فعال کردن اشکالزدایی. این قابلیت در طول توسعه یا در محیطهای یکپارچهسازی مداوم (CI) مفید است.
- قبل از فعال کردن اجرای درخواستها، درخواستهای برنامه خود را رصد کنید. به این ترتیب، شما به طور یکپارچه و بدون ایجاد اختلال در کار کاربران خود، App Check را اجرا میکنید.
ملاحظات هنگام برنامهریزی ادغام App Check
- سهمیههای ارائهدهنده گواهی: ارائهدهندگان گواهی که ما توصیه میکنیم، DeviceCheck یا App Attest، مشمول سهمیهها و محدودیتهای تعیینشده توسط اپل هستند.
- تأخیر در شروع: در بیشتر مواقع، کاربران شما در طول استفاده منظم تأخیری را تجربه نخواهند کرد، زیرا توکنهای App Check در دستگاه ذخیره میشوند. سیستم به طور خودکار توکنهای App Check را قبل از انقضا در پسزمینه بهروزرسانی میکند تا عملکرد یکپارچه حفظ شود. با این حال، اگر یک توکن App Check معتبر وجود نداشته باشد، کاربران برنامه شما در هنگام راهاندازی با تأخیر مواجه خواهند شد. به عنوان مثال، این تأخیر در هنگام شروع سرد، زمانی که یک توکن ذخیره شده منقضی شده یا از بین رفته است، رخ میدهد.
- Token TTL: زمان حیات (TTL) مدت زمانی را که توکن App Check قبل از نیاز به بهروزرسانی معتبر است، تعیین میکند. میتوانید این مدت زمان را از 30 دقیقه تا 7 روز در کنسول Firebase پیکربندی کنید. مدت زمان 1 ساعت به عنوان یک پایه امن توصیه میشود، اما SDK به طور خودکار بهروزرسانیهای پسزمینه را تقریباً در نیمی از مدت زمان TTL انجام میدهد. برای دستورالعملهای گام به گام کنسول، به مستندات Firebase App Check مراجعه کنید.
برنامه خود را با App Check ادغام کنید
پیشنیازها و الزامات
- برنامهای که کیت توسعه نرمافزار ناوبری (Navigation SDK) برای iOS نسخه ۱۱.۰ یا بالاتر روی آن نصب شده باشد.
- شناسه بسته برنامه .
- شناسه تیم شما از برگه عضویت در کنسول توسعهدهندگان اپل.
- اگر قصد دارید از DeviceCheck استفاده کنید، فایل کلید خصوصی و شناسه کلید شما.
- شما باید مالک برنامه در کنسول Google Cloud باشید.
- شناسه پروژه برنامه شما از کنسول Google Cloud.
مرحله ۱: اضافه کردن فایربیس به برنامه
برای افزودن Firebase به برنامه خود ، دستورالعملهای موجود در مستندات توسعهدهندگان Firebase را دنبال کنید. فایل GoogleService-Info.plist خود را، بدون تغییر، به سطح ریشه پروژه خود اضافه کنید.
در فایل AppDelegate خود، ماژولهای زیر را وارد کنید:
سویفت
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
هدف-سی
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
مرحله ۲: کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید
فایربیس برای هر ارائهدهندهی گواهی پیشفرض، دستورالعملهایی ارائه میدهد. این دستورالعملها به شما نشان میدهند که چگونه یک پروژهی فایربیس راهاندازی کنید و کتابخانهی App Check را به برنامهی خود اضافه کنید. برای راهاندازی اولیهی App Check، نمونههای کد ارائه شده را دنبال کنید.
- برای افزودن کتابخانه App Check، دستورالعملهای Firebase را دنبال کنید:
- بررسی اولیه برنامه در
AppDelegateشما:- اگر از App Attest استفاده میکنید، یک پیادهسازی از
AppCheckProviderFactoryایجاد کنید و قبل از فراخوانیFirebaseApp.configure()آن را ثبت کنید:سویفت
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
هدف-سی
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- اگر به جای آن از DeviceCheck استفاده میکنید، با استفاده از موارد زیر تنظیمات کارخانه را انجام دهید:
سویفت
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
هدف-سی
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- اگر از App Attest استفاده میکنید، یک پیادهسازی از
مرحله ۳: ارائه دهنده توکن را اضافه کنید
یک فایل با نام AppCheckTokenProvider (یا اگر از Objective-C استفاده میکنید، دو فایل با نامهای AppCheckTokenProvider.h و AppCheckTokenProvider.m ) در سطح ریشه برنامه خود ایجاد کنید.
این کلاس باید با پروتکل GMSAppCheckTokenProvider مطابقت داشته باشد و متد fetchAppCheckTokenWithCompletion پیادهسازی کند.
سویفت
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
هدف-سی
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
مرحله ۴: مقداردهی اولیه APIهای ناوبری و بررسی برنامه
کیت توسعه نرمافزار ناوبری (Navigation SDK) را برای iOS (با استفاده از GMSServices ) مقداردهی اولیه کنید و نمونه ارائهدهنده توکن خود را با تبدیل هندل سرویسهای مشترک غیرشفاف به GMSServices ثبت کنید:
سویفت
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS if let services = GMSServices.sharedServices() as? GMSServices { services.appCheckTokenProvider = AppCheckTokenProvider() }
هدف-سی
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS ((GMSServices *)[GMSServices sharedServices]).appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
مرحله ۵: فعال کردن اشکالزدایی (اختیاری)
پس از اینکه App Check برای Navigation SDK برای iOS اجباری شد، ویژگیهای برنامه شما که به Navigation SDK برای iOS وابسته هستند، در یک شبیهساز یا از یک محیط ادغام مداوم (CI) اجرا نمیشوند، زیرا این محیطها به عنوان دستگاههای معتبر واجد شرایط نیستند. برای اجرای برنامه خود در این محیطها در طول توسعه و آزمایش، باید یک نسخه اشکالزدایی از برنامه خود ایجاد کنید که از ارائهدهنده اشکالزدایی App Check به جای ارائهدهنده گواهی تولید استفاده میکند.
- کارخانه ارائه دهنده اشکال زدایی را در
AppDelegateخود پیکربندی کنید:سویفت
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
هدف-سی
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- قابلیت ثبت وقایع (logging) را در پروژه Xcode خود فعال کنید، برنامه را اجرا کنید و توکن اشکالزدایی محلی (local debug token) را در لاگ کنسول پیدا کنید.
- این توکن اشکالزدایی را کپی کرده و به کنسول Firebase اضافه کنید. برای جزئیات بیشتر، به مستندات ارائهدهنده اشکالزدایی Firebase App Check مراجعه کنید.
مرحله ۶: درخواستهای برنامه خود را رصد کنید و در مورد اجرای آنها تصمیم بگیرید
قبل از فعال کردن اجرای قانون، درخواستهای برنامه خود را رصد کنید تا مطمئن شوید که برای کاربران قانونی اختلال ایجاد نمیکنید.
- برای مشاهده درصد ترافیک تأیید شده در مقابل ترافیک تأیید نشده، به صفحه معیارهای App Check در کنسول Firebase مراجعه کنید.
- وقتی مطمئن شدید که بخش عمدهی ترافیک شما تأیید شده است و کاربران قانونی به نسخهی جدیدی از برنامهی شما که شامل پیادهسازی App Check شما است، بهروزرسانی شدهاند، اجرای آن را فعال کنید.
- پس از فعال شدن اجرا، App Check تمام ترافیک بدون توکن معتبر App Check را رد میکند.
استفاده از App Check برای ایمنسازی SDK ناوبری برای iOS
Firebase App Check با مسدود کردن ترافیکی که از منابعی غیر از برنامههای قانونی شما میآید، از تماسهای برنامه شما به پلتفرم Google Maps محافظت میکند. این کار را با درخواست ارزیابی صحت برنامه یا دستگاه از یک ارائهدهنده گواهی مانند App Attest انجام میدهد. هنگامی که برنامه خود را با App Check ادغام میکنید، محافظت در برابر درخواستهای مخرب و غیرمجاز را افزایش میدهید که به نوبه خود از صورتحساب شما در برابر هزینههای غیرمجاز محافظت میکند. App Check همچنین گزارش اختلال در زمان واقعی را در اکوسیستم برنامه ناوگان شما به طور قابل توجهی بهبود میبخشد و در نتیجه به نفع همه رانندگانی است که از برنامه شما استفاده میکنند. برای اطلاعات بیشتر، به گزارش اختلال مراجعه کنید.
چرا از بررسی برنامه استفاده کنیم؟
بررسی برنامه از دو بخش مجزا از کیت توسعه نرمافزار ناوبری برای iOS محافظت میکند: عملکرد اصلی ناوبری و گزارش اختلال.
ناوبری
بررسی برنامه (App Check) به مسدود کردن درخواستهای iOS از منابع مخرب یا غیرمجاز در SDK ناوبری اصلی کمک میکند. این امر مستقیماً به نفع شما خواهد بود و پروژه شما را از تقلب در صورتحساب و اتمام سهمیه محافظت میکند.
گزارش اختلال
اگر اپلیکیشن شما از گزارش اختلال و قابلیتهای رأیگیری در لحظه پشتیبانی میکند، استفاده از App Check اکیداً توصیه میشود. فعال کردن App Check تضمین میکند که رانندگان شما دقیقترین مسیرها را با در نظر گرفتن تمام بازخوردهای لحظهای دریافت میکنند.
چرا بررسی برنامه برای گزارشدهی مهم است:
- سطح بالای اعتماد به بسته شدن جادهها: رویدادهای تأثیرگذار بر مسیر، مانند بسته شدن جادهها، میتوانند رفتار مسیریابی را برای همه رانندگان به طور قابل توجهی تغییر دهند. برای محافظت از نقشه در برابر خرابکاریهای احتمالی، هرزنامه یا گزارشهای نادرست، زیرساخت مدیریت گوگل برای اختلالات بسته شدن جادهها به سیگنالهای قوی یکپارچگی دستگاه و برنامه متکی است.
- نحوه اعتبارسنجی گزارشها توسط App Check: گزارشها و آرای کاربران که از Navigation SDK برای iOS ارسال میشوند، شامل توکن App Check هستند که توسط بخش پشتیبانی گوگل برای اعتبارسنجی مشروعیت بازخورد، افزایش سطح اعتماد و امکان ارزیابی آن برای تأثیر روی نقشه زنده استفاده میشود.
- تأثیر حذف App Check: گزارشهایی که بدون توکن معتبر App Check ارسال میشوند، تحت یک مدل با اعتماد کمتر ارزیابی میشوند و ممکن است صرفاً به عنوان سیگنالهای خاموش پردازش شوند. این بدان معناست که اگرچه کاربران شما هنوز میتوانند گزارش دهند و رأی دهند، اما گزارشهای آنها کمتر روی نقشه قابل مشاهده است یا بر مسیرهای سایر رانندگان تأثیر میگذارد و نیاز به اعتبارسنجی اضافی دارد.
آیا اپ چک برای من مناسب است؟
در بیشتر موارد، App Check توصیه میشود؛ با این حال، در سناریوهای زیر نیازی به App Check نیست یا پشتیبانی نمیشود:
- برنامههای خصوصی یا آزمایشی: اگر برنامه شما به صورت عمومی قابل دسترسی نیست، نیازی به بررسی برنامه نیست.
- دستگاههای آسیبپذیر: ارائهدهندگان گواهی توصیهشده، از اجرای Navigation SDK برای iOS روی دستگاههای غیرقابل اعتماد، مانند تلفنهای روتشده یا جیلبریکشده، جلوگیری میکنند. برای پشتیبانی از این دستگاهها، یک ارائهدهنده گواهی سفارشی مستقر کنید.
مرور کلی مراحل اجرا
در سطح بالا، برای ادغام برنامه خود با App Check، این مراحل را دنبال خواهید کرد:
- فایربیس را به برنامه خود اضافه کنید.
- کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید.
- یک ارائهدهنده توکن اضافه کنید. این مرحله، ارائهدهنده گواهی مورد نظر شما را برای تأیید صحت دستگاه یا برنامه فراخوانی میکند.
- APIهای Navigation و App Check را مقداردهی اولیه کنید.
- فعال کردن اشکالزدایی. این قابلیت در طول توسعه یا در محیطهای یکپارچهسازی مداوم (CI) مفید است.
- قبل از فعال کردن اجرای درخواستها، درخواستهای برنامه خود را رصد کنید. به این ترتیب، شما به طور یکپارچه و بدون ایجاد اختلال در کار کاربران خود، App Check را اجرا میکنید.
ملاحظات هنگام برنامهریزی ادغام App Check
- سهمیههای ارائهدهنده گواهی: ارائهدهندگان گواهی که ما توصیه میکنیم، DeviceCheck یا App Attest، مشمول سهمیهها و محدودیتهای تعیینشده توسط اپل هستند.
- تأخیر در شروع: در بیشتر مواقع، کاربران شما در طول استفاده منظم تأخیری را تجربه نخواهند کرد، زیرا توکنهای App Check در دستگاه ذخیره میشوند. سیستم به طور خودکار توکنهای App Check را قبل از انقضا در پسزمینه بهروزرسانی میکند تا عملکرد یکپارچه حفظ شود. با این حال، اگر یک توکن App Check معتبر وجود نداشته باشد، کاربران برنامه شما در هنگام راهاندازی با تأخیر مواجه خواهند شد. به عنوان مثال، این تأخیر در هنگام شروع سرد، زمانی که یک توکن ذخیره شده منقضی شده یا از بین رفته است، رخ میدهد.
- Token TTL: زمان حیات (TTL) مدت زمانی را که توکن App Check قبل از نیاز به بهروزرسانی معتبر است، تعیین میکند. میتوانید این مدت زمان را از 30 دقیقه تا 7 روز در کنسول Firebase پیکربندی کنید. مدت زمان 1 ساعت به عنوان یک پایه امن توصیه میشود، اما SDK به طور خودکار بهروزرسانیهای پسزمینه را تقریباً در نیمی از مدت زمان TTL انجام میدهد. برای دستورالعملهای گام به گام کنسول، به مستندات Firebase App Check مراجعه کنید.
برنامه خود را با App Check ادغام کنید
پیشنیازها و الزامات
- برنامهای که کیت توسعه نرمافزار ناوبری (Navigation SDK) برای iOS نسخه ۱۱.۰ یا بالاتر روی آن نصب شده باشد.
- شناسه بسته برنامه .
- شناسه تیم شما از برگه عضویت در کنسول توسعهدهندگان اپل.
- اگر قصد دارید از DeviceCheck استفاده کنید، فایل کلید خصوصی و شناسه کلید شما.
- شما باید مالک برنامه در کنسول Google Cloud باشید.
- شناسه پروژه برنامه شما از کنسول Google Cloud.
مرحله ۱: اضافه کردن فایربیس به برنامه
برای افزودن Firebase به برنامه خود ، دستورالعملهای موجود در مستندات توسعهدهندگان Firebase را دنبال کنید. فایل GoogleService-Info.plist خود را، بدون تغییر، به سطح ریشه پروژه خود اضافه کنید.
در فایل AppDelegate خود، ماژولهای زیر را وارد کنید:
سویفت
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
هدف-سی
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
مرحله ۲: کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید
فایربیس برای هر ارائهدهندهی گواهی پیشفرض، دستورالعملهایی ارائه میدهد. این دستورالعملها به شما نشان میدهند که چگونه یک پروژهی فایربیس راهاندازی کنید و کتابخانهی App Check را به برنامهی خود اضافه کنید. برای راهاندازی اولیهی App Check، نمونههای کد ارائه شده را دنبال کنید.
- برای افزودن کتابخانه App Check، دستورالعملهای Firebase را دنبال کنید:
- بررسی اولیه برنامه در
AppDelegateشما:- اگر از App Attest استفاده میکنید، یک پیادهسازی از
AppCheckProviderFactoryایجاد کنید و قبل از فراخوانیFirebaseApp.configure()آن را ثبت کنید:سویفت
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
هدف-سی
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- اگر به جای آن از DeviceCheck استفاده میکنید، با استفاده از موارد زیر تنظیمات کارخانه را انجام دهید:
سویفت
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
هدف-سی
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- اگر از App Attest استفاده میکنید، یک پیادهسازی از
مرحله ۳: ارائه دهنده توکن را اضافه کنید
یک فایل با نام AppCheckTokenProvider (یا اگر از Objective-C استفاده میکنید، دو فایل با نامهای AppCheckTokenProvider.h و AppCheckTokenProvider.m ) در سطح ریشه برنامه خود ایجاد کنید.
این کلاس باید با پروتکل GMSAppCheckTokenProvider مطابقت داشته باشد و متد fetchAppCheckTokenWithCompletion پیادهسازی کند.
سویفت
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
هدف-سی
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
مرحله ۴: مقداردهی اولیه APIهای ناوبری و بررسی برنامه
کیت توسعه نرمافزار ناوبری (Navigation SDK) را برای iOS (با استفاده از GMSServices ) مقداردهی اولیه کنید و نمونه ارائهدهنده توکن خود را با تبدیل هندل سرویسهای مشترک غیرشفاف به GMSServices ثبت کنید:
سویفت
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS if let services = GMSServices.sharedServices() as? GMSServices { services.appCheckTokenProvider = AppCheckTokenProvider() }
هدف-سی
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS ((GMSServices *)[GMSServices sharedServices]).appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
مرحله ۵: فعال کردن اشکالزدایی (اختیاری)
پس از اینکه App Check برای Navigation SDK برای iOS اجباری شد، ویژگیهای برنامه شما که به Navigation SDK برای iOS وابسته هستند، در یک شبیهساز یا از یک محیط ادغام مداوم (CI) اجرا نمیشوند، زیرا این محیطها به عنوان دستگاههای معتبر واجد شرایط نیستند. برای اجرای برنامه خود در این محیطها در طول توسعه و آزمایش، باید یک نسخه اشکالزدایی از برنامه خود ایجاد کنید که از ارائهدهنده اشکالزدایی App Check به جای ارائهدهنده گواهی تولید استفاده میکند.
- کارخانه ارائه دهنده اشکال زدایی را در
AppDelegateخود پیکربندی کنید:سویفت
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
هدف-سی
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- قابلیت ثبت وقایع (logging) را در پروژه Xcode خود فعال کنید، برنامه را اجرا کنید و توکن اشکالزدایی محلی (local debug token) را در لاگ کنسول پیدا کنید.
- این توکن اشکالزدایی را کپی کرده و به کنسول Firebase اضافه کنید. برای جزئیات بیشتر، به مستندات ارائهدهنده اشکالزدایی Firebase App Check مراجعه کنید.
مرحله ۶: درخواستهای برنامه خود را رصد کنید و در مورد اجرای آنها تصمیم بگیرید
قبل از فعال کردن اجرای قانون، درخواستهای برنامه خود را رصد کنید تا مطمئن شوید که برای کاربران قانونی اختلال ایجاد نمیکنید.
- برای مشاهده درصد ترافیک تأیید شده در مقابل ترافیک تأیید نشده، به صفحه معیارهای App Check در کنسول Firebase مراجعه کنید.
- وقتی مطمئن شدید که بخش عمدهی ترافیک شما تأیید شده است و کاربران قانونی به نسخهی جدیدی از برنامهی شما که شامل پیادهسازی App Check شما است، بهروزرسانی شدهاند، اجرای آن را فعال کنید.
- پس از فعال شدن اجرا، App Check تمام ترافیک بدون توکن معتبر App Check را رد میکند.
استفاده از App Check برای ایمنسازی SDK ناوبری برای iOS
Firebase App Check با مسدود کردن ترافیکی که از منابعی غیر از برنامههای قانونی شما میآید، از تماسهای برنامه شما به پلتفرم Google Maps محافظت میکند. این کار را با درخواست ارزیابی صحت برنامه یا دستگاه از یک ارائهدهنده گواهی مانند App Attest انجام میدهد. هنگامی که برنامه خود را با App Check ادغام میکنید، محافظت در برابر درخواستهای مخرب و غیرمجاز را افزایش میدهید که به نوبه خود از صورتحساب شما در برابر هزینههای غیرمجاز محافظت میکند. App Check همچنین گزارش اختلال در زمان واقعی را در اکوسیستم برنامه ناوگان شما به طور قابل توجهی بهبود میبخشد و در نتیجه به نفع همه رانندگانی است که از برنامه شما استفاده میکنند. برای اطلاعات بیشتر، به گزارش اختلال مراجعه کنید.
چرا از بررسی برنامه استفاده کنیم؟
بررسی برنامه از دو بخش مجزا از کیت توسعه نرمافزار ناوبری برای iOS محافظت میکند: عملکرد اصلی ناوبری و گزارش اختلال.
ناوبری
بررسی برنامه (App Check) به مسدود کردن درخواستهای iOS از منابع مخرب یا غیرمجاز در SDK ناوبری اصلی کمک میکند. این امر مستقیماً به نفع شما خواهد بود و پروژه شما را از تقلب در صورتحساب و اتمام سهمیه محافظت میکند.
گزارش اختلال
اگر اپلیکیشن شما از گزارش اختلال و قابلیتهای رأیگیری در لحظه پشتیبانی میکند، استفاده از App Check اکیداً توصیه میشود. فعال کردن App Check تضمین میکند که رانندگان شما دقیقترین مسیرها را با در نظر گرفتن تمام بازخوردهای لحظهای دریافت میکنند.
چرا بررسی برنامه برای گزارشدهی مهم است:
- سطح بالای اعتماد به بسته شدن جادهها: رویدادهای تأثیرگذار بر مسیر، مانند بسته شدن جادهها، میتوانند رفتار مسیریابی را برای همه رانندگان به طور قابل توجهی تغییر دهند. برای محافظت از نقشه در برابر خرابکاریهای احتمالی، هرزنامه یا گزارشهای نادرست، زیرساخت مدیریت گوگل برای اختلالات بسته شدن جادهها به سیگنالهای قوی یکپارچگی دستگاه و برنامه متکی است.
- نحوه اعتبارسنجی گزارشها توسط App Check: گزارشها و آرای کاربران که از Navigation SDK برای iOS ارسال میشوند، شامل توکن App Check هستند که توسط بخش پشتیبانی گوگل برای اعتبارسنجی مشروعیت بازخورد، افزایش سطح اعتماد و امکان ارزیابی آن برای تأثیر روی نقشه زنده استفاده میشود.
- تأثیر حذف App Check: گزارشهایی که بدون توکن معتبر App Check ارسال میشوند، تحت یک مدل با اعتماد کمتر ارزیابی میشوند و ممکن است صرفاً به عنوان سیگنالهای خاموش پردازش شوند. این بدان معناست که اگرچه کاربران شما هنوز میتوانند گزارش دهند و رأی دهند، اما گزارشهای آنها کمتر روی نقشه قابل مشاهده است یا بر مسیرهای سایر رانندگان تأثیر میگذارد و نیاز به اعتبارسنجی اضافی دارد.
آیا اپ چک برای من مناسب است؟
در بیشتر موارد، App Check توصیه میشود؛ با این حال، در سناریوهای زیر نیازی به App Check نیست یا پشتیبانی نمیشود:
- برنامههای خصوصی یا آزمایشی: اگر برنامه شما به صورت عمومی قابل دسترسی نیست، نیازی به بررسی برنامه نیست.
- دستگاههای آسیبپذیر: ارائهدهندگان گواهی توصیهشده، از اجرای Navigation SDK برای iOS روی دستگاههای غیرقابل اعتماد، مانند تلفنهای روتشده یا جیلبریکشده، جلوگیری میکنند. برای پشتیبانی از این دستگاهها، یک ارائهدهنده گواهی سفارشی مستقر کنید.
مرور کلی مراحل اجرا
در سطح بالا، برای ادغام برنامه خود با App Check، این مراحل را دنبال خواهید کرد:
- فایربیس را به برنامه خود اضافه کنید.
- کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید.
- یک ارائهدهنده توکن اضافه کنید. این مرحله، ارائهدهنده گواهی مورد نظر شما را برای تأیید صحت دستگاه یا برنامه فراخوانی میکند.
- APIهای Navigation و App Check را مقداردهی اولیه کنید.
- فعال کردن اشکالزدایی. این قابلیت در طول توسعه یا در محیطهای یکپارچهسازی مداوم (CI) مفید است.
- قبل از فعال کردن اجرای درخواستها، درخواستهای برنامه خود را رصد کنید. به این ترتیب، شما به طور یکپارچه و بدون ایجاد اختلال در کار کاربران خود، App Check را اجرا میکنید.
ملاحظات هنگام برنامهریزی ادغام App Check
- سهمیههای ارائهدهنده گواهی: ارائهدهندگان گواهی که ما توصیه میکنیم، DeviceCheck یا App Attest، مشمول سهمیهها و محدودیتهای تعیینشده توسط اپل هستند.
- تأخیر در شروع: در بیشتر مواقع، کاربران شما در طول استفاده منظم تأخیری را تجربه نخواهند کرد، زیرا توکنهای App Check در دستگاه ذخیره میشوند. سیستم به طور خودکار توکنهای App Check را قبل از انقضا در پسزمینه بهروزرسانی میکند تا عملکرد یکپارچه حفظ شود. با این حال، اگر یک توکن App Check معتبر وجود نداشته باشد، کاربران برنامه شما در هنگام راهاندازی با تأخیر مواجه خواهند شد. به عنوان مثال، این تأخیر در هنگام شروع سرد، زمانی که یک توکن ذخیره شده منقضی شده یا از بین رفته است، رخ میدهد.
- Token TTL: زمان حیات (TTL) مدت زمانی را که توکن App Check قبل از نیاز به بهروزرسانی معتبر است، تعیین میکند. میتوانید این مدت زمان را از 30 دقیقه تا 7 روز در کنسول Firebase پیکربندی کنید. مدت زمان 1 ساعت به عنوان یک پایه امن توصیه میشود، اما SDK به طور خودکار بهروزرسانیهای پسزمینه را تقریباً در نیمی از مدت زمان TTL انجام میدهد. برای دستورالعملهای گام به گام کنسول، به مستندات Firebase App Check مراجعه کنید.
برنامه خود را با App Check ادغام کنید
پیشنیازها و الزامات
- برنامهای که کیت توسعه نرمافزار ناوبری (Navigation SDK) برای iOS نسخه ۱۱.۰ یا بالاتر روی آن نصب شده باشد.
- شناسه بسته برنامه .
- شناسه تیم شما از برگه عضویت در کنسول توسعهدهندگان اپل.
- اگر قصد دارید از DeviceCheck استفاده کنید، فایل کلید خصوصی و شناسه کلید شما.
- شما باید مالک برنامه در کنسول Google Cloud باشید.
- شناسه پروژه برنامه شما از کنسول Google Cloud.
مرحله ۱: اضافه کردن فایربیس به برنامه
برای افزودن Firebase به برنامه خود ، دستورالعملهای موجود در مستندات توسعهدهندگان Firebase را دنبال کنید. فایل GoogleService-Info.plist خود را، بدون تغییر، به سطح ریشه پروژه خود اضافه کنید.
در فایل AppDelegate خود، ماژولهای زیر را وارد کنید:
سویفت
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
هدف-سی
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
مرحله ۲: کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید
فایربیس برای هر ارائهدهندهی گواهی پیشفرض، دستورالعملهایی ارائه میدهد. این دستورالعملها به شما نشان میدهند که چگونه یک پروژهی فایربیس راهاندازی کنید و کتابخانهی App Check را به برنامهی خود اضافه کنید. برای راهاندازی اولیهی App Check، نمونههای کد ارائه شده را دنبال کنید.
- برای افزودن کتابخانه App Check، دستورالعملهای Firebase را دنبال کنید:
- بررسی اولیه برنامه در
AppDelegateشما:- اگر از App Attest استفاده میکنید، یک پیادهسازی از
AppCheckProviderFactoryایجاد کنید و قبل از فراخوانیFirebaseApp.configure()آن را ثبت کنید:سویفت
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
هدف-سی
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- اگر به جای آن از DeviceCheck استفاده میکنید، با استفاده از موارد زیر تنظیمات کارخانه را انجام دهید:
سویفت
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
هدف-سی
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- اگر از App Attest استفاده میکنید، یک پیادهسازی از
مرحله ۳: ارائه دهنده توکن را اضافه کنید
یک فایل با نام AppCheckTokenProvider (یا اگر از Objective-C استفاده میکنید، دو فایل با نامهای AppCheckTokenProvider.h و AppCheckTokenProvider.m ) در سطح ریشه برنامه خود ایجاد کنید.
این کلاس باید با پروتکل GMSAppCheckTokenProvider مطابقت داشته باشد و متد fetchAppCheckTokenWithCompletion پیادهسازی کند.
سویفت
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
هدف-سی
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
مرحله ۴: مقداردهی اولیه APIهای ناوبری و بررسی برنامه
کیت توسعه نرمافزار ناوبری (Navigation SDK) را برای iOS (با استفاده از GMSServices ) مقداردهی اولیه کنید و نمونه ارائهدهنده توکن خود را با تبدیل هندل سرویسهای مشترک غیرشفاف به GMSServices ثبت کنید:
سویفت
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS if let services = GMSServices.sharedServices() as? GMSServices { services.appCheckTokenProvider = AppCheckTokenProvider() }
هدف-سی
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS ((GMSServices *)[GMSServices sharedServices]).appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
مرحله ۵: فعال کردن اشکالزدایی (اختیاری)
پس از اینکه App Check برای Navigation SDK برای iOS اجباری شد، ویژگیهای برنامه شما که به Navigation SDK برای iOS وابسته هستند، در یک شبیهساز یا از یک محیط ادغام مداوم (CI) اجرا نمیشوند، زیرا این محیطها به عنوان دستگاههای معتبر واجد شرایط نیستند. برای اجرای برنامه خود در این محیطها در طول توسعه و آزمایش، باید یک نسخه اشکالزدایی از برنامه خود ایجاد کنید که از ارائهدهنده اشکالزدایی App Check به جای ارائهدهنده گواهی تولید استفاده میکند.
- کارخانه ارائه دهنده اشکال زدایی را در
AppDelegateخود پیکربندی کنید:سویفت
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
هدف-سی
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- قابلیت ثبت وقایع (logging) را در پروژه Xcode خود فعال کنید، برنامه را اجرا کنید و توکن اشکالزدایی محلی (local debug token) را در لاگ کنسول پیدا کنید.
- این توکن اشکالزدایی را کپی کرده و به کنسول Firebase اضافه کنید. برای جزئیات بیشتر، به مستندات ارائهدهنده اشکالزدایی Firebase App Check مراجعه کنید.
مرحله ۶: درخواستهای برنامه خود را رصد کنید و در مورد اجرای آنها تصمیم بگیرید
قبل از فعال کردن اجرای قانون، درخواستهای برنامه خود را رصد کنید تا مطمئن شوید که برای کاربران قانونی اختلال ایجاد نمیکنید.
- برای مشاهده درصد ترافیک تأیید شده در مقابل ترافیک تأیید نشده، به صفحه معیارهای App Check در کنسول Firebase مراجعه کنید.
- وقتی مطمئن شدید که بخش عمدهی ترافیک شما تأیید شده است و کاربران قانونی به نسخهی جدیدی از برنامهی شما که شامل پیادهسازی App Check شما است، بهروزرسانی شدهاند، اجرای آن را فعال کنید.
- پس از فعال شدن اجرا، App Check تمام ترافیک بدون توکن معتبر App Check را رد میکند.
استفاده از App Check برای ایمنسازی SDK ناوبری برای iOS
Firebase App Check با مسدود کردن ترافیکی که از منابعی غیر از برنامههای قانونی شما میآید، از تماسهای برنامه شما به پلتفرم Google Maps محافظت میکند. این کار را با درخواست ارزیابی صحت برنامه یا دستگاه از یک ارائهدهنده گواهی مانند App Attest انجام میدهد. هنگامی که برنامه خود را با App Check ادغام میکنید، محافظت در برابر درخواستهای مخرب و غیرمجاز را افزایش میدهید که به نوبه خود از صورتحساب شما در برابر هزینههای غیرمجاز محافظت میکند. App Check همچنین گزارش اختلال در زمان واقعی را در اکوسیستم برنامه ناوگان شما به طور قابل توجهی بهبود میبخشد و در نتیجه به نفع همه رانندگانی است که از برنامه شما استفاده میکنند. برای اطلاعات بیشتر، به گزارش اختلال مراجعه کنید.
چرا از بررسی برنامه استفاده کنیم؟
بررسی برنامه از دو بخش مجزا از کیت توسعه نرمافزار ناوبری برای iOS محافظت میکند: عملکرد اصلی ناوبری و گزارش اختلال.
ناوبری
بررسی برنامه (App Check) به مسدود کردن درخواستهای iOS از منابع مخرب یا غیرمجاز در SDK ناوبری اصلی کمک میکند. این امر مستقیماً به نفع شما خواهد بود و پروژه شما را از تقلب در صورتحساب و اتمام سهمیه محافظت میکند.
گزارش اختلال
اگر اپلیکیشن شما از گزارش اختلال و قابلیتهای رأیگیری در لحظه پشتیبانی میکند، استفاده از App Check اکیداً توصیه میشود. فعال کردن App Check تضمین میکند که رانندگان شما دقیقترین مسیرها را با در نظر گرفتن تمام بازخوردهای لحظهای دریافت میکنند.
چرا بررسی برنامه برای گزارشدهی مهم است:
- سطح بالای اعتماد به بسته شدن جادهها: رویدادهای تأثیرگذار بر مسیر، مانند بسته شدن جادهها، میتوانند رفتار مسیریابی را برای همه رانندگان به طور قابل توجهی تغییر دهند. برای محافظت از نقشه در برابر خرابکاریهای احتمالی، هرزنامه یا گزارشهای نادرست، زیرساخت مدیریت گوگل برای اختلالات بسته شدن جادهها به سیگنالهای قوی یکپارچگی دستگاه و برنامه متکی است.
- نحوه اعتبارسنجی گزارشها توسط App Check: گزارشها و آرای کاربران که از Navigation SDK برای iOS ارسال میشوند، شامل توکن App Check هستند که توسط بخش پشتیبانی گوگل برای اعتبارسنجی مشروعیت بازخورد، افزایش سطح اعتماد و امکان ارزیابی آن برای تأثیر روی نقشه زنده استفاده میشود.
- تأثیر حذف App Check: گزارشهایی که بدون توکن معتبر App Check ارسال میشوند، تحت یک مدل با اعتماد کمتر ارزیابی میشوند و ممکن است صرفاً به عنوان سیگنالهای خاموش پردازش شوند. این بدان معناست که اگرچه کاربران شما هنوز میتوانند گزارش دهند و رأی دهند، اما گزارشهای آنها کمتر روی نقشه قابل مشاهده است یا بر مسیرهای سایر رانندگان تأثیر میگذارد و نیاز به اعتبارسنجی اضافی دارد.
آیا اپ چک برای من مناسب است؟
در بیشتر موارد، App Check توصیه میشود؛ با این حال، در سناریوهای زیر نیازی به App Check نیست یا پشتیبانی نمیشود:
- برنامههای خصوصی یا آزمایشی: اگر برنامه شما به صورت عمومی قابل دسترسی نیست، نیازی به بررسی برنامه نیست.
- دستگاههای آسیبپذیر: ارائهدهندگان گواهی توصیهشده، از اجرای Navigation SDK برای iOS روی دستگاههای غیرقابل اعتماد، مانند تلفنهای روتشده یا جیلبریکشده، جلوگیری میکنند. برای پشتیبانی از این دستگاهها، یک ارائهدهنده گواهی سفارشی مستقر کنید.
مرور کلی مراحل اجرا
در سطح بالا، برای ادغام برنامه خود با App Check، این مراحل را دنبال خواهید کرد:
- فایربیس را به برنامه خود اضافه کنید.
- کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید.
- یک ارائهدهنده توکن اضافه کنید. این مرحله، ارائهدهنده گواهی مورد نظر شما را برای تأیید صحت دستگاه یا برنامه فراخوانی میکند.
- APIهای Navigation و App Check را مقداردهی اولیه کنید.
- فعال کردن اشکالزدایی. این قابلیت در طول توسعه یا در محیطهای یکپارچهسازی مداوم (CI) مفید است.
- قبل از فعال کردن اجرای درخواستها، درخواستهای برنامه خود را رصد کنید. به این ترتیب، شما به طور یکپارچه و بدون ایجاد اختلال در کار کاربران خود، App Check را اجرا میکنید.
ملاحظات هنگام برنامهریزی ادغام App Check
- سهمیههای ارائهدهنده گواهی: ارائهدهندگان گواهی که ما توصیه میکنیم، DeviceCheck یا App Attest، مشمول سهمیهها و محدودیتهای تعیینشده توسط اپل هستند.
- تأخیر در شروع: در بیشتر مواقع، کاربران شما در طول استفاده منظم تأخیری را تجربه نخواهند کرد، زیرا توکنهای App Check در دستگاه ذخیره میشوند. سیستم به طور خودکار توکنهای App Check را قبل از انقضا در پسزمینه بهروزرسانی میکند تا عملکرد یکپارچه حفظ شود. با این حال، اگر یک توکن App Check معتبر وجود نداشته باشد، کاربران برنامه شما در هنگام راهاندازی با تأخیر مواجه خواهند شد. به عنوان مثال، این تأخیر در هنگام شروع سرد، زمانی که یک توکن ذخیره شده منقضی شده یا از بین رفته است، رخ میدهد.
- Token TTL: زمان حیات (TTL) مدت زمانی را که توکن App Check قبل از نیاز به بهروزرسانی معتبر است، تعیین میکند. میتوانید این مدت زمان را از 30 دقیقه تا 7 روز در کنسول Firebase پیکربندی کنید. مدت زمان 1 ساعت به عنوان یک پایه امن توصیه میشود، اما SDK به طور خودکار بهروزرسانیهای پسزمینه را تقریباً در نیمی از مدت زمان TTL انجام میدهد. برای دستورالعملهای گام به گام کنسول، به مستندات Firebase App Check مراجعه کنید.
برنامه خود را با App Check ادغام کنید
پیشنیازها و الزامات
- برنامهای که کیت توسعه نرمافزار ناوبری (Navigation SDK) برای iOS نسخه ۱۱.۰ یا بالاتر روی آن نصب شده باشد.
- شناسه بسته برنامه .
- شناسه تیم شما از برگه عضویت در کنسول توسعهدهندگان اپل.
- اگر قصد دارید از DeviceCheck استفاده کنید، فایل کلید خصوصی و شناسه کلید شما.
- شما باید مالک برنامه در کنسول Google Cloud باشید.
- شناسه پروژه برنامه شما از کنسول Google Cloud.
مرحله ۱: اضافه کردن فایربیس به برنامه
برای افزودن Firebase به برنامه خود ، دستورالعملهای موجود در مستندات توسعهدهندگان Firebase را دنبال کنید. فایل GoogleService-Info.plist خود را، بدون تغییر، به سطح ریشه پروژه خود اضافه کنید.
در فایل AppDelegate خود، ماژولهای زیر را وارد کنید:
سویفت
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
هدف-سی
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
مرحله ۲: کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید
فایربیس برای هر ارائهدهندهی گواهی پیشفرض، دستورالعملهایی ارائه میدهد. این دستورالعملها به شما نشان میدهند که چگونه یک پروژهی فایربیس راهاندازی کنید و کتابخانهی App Check را به برنامهی خود اضافه کنید. برای راهاندازی اولیهی App Check، نمونههای کد ارائه شده را دنبال کنید.
- Follow the Firebase instructions to add the App Check library:
- Initialize App Check in your
AppDelegate:- If you are using App Attest, create an implementation of
AppCheckProviderFactoryand register it before callingFirebaseApp.configure():سویفت
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
هدف-سی
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- If you are using DeviceCheck instead, set the factory using the following:
سویفت
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
هدف-سی
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- If you are using App Attest, create an implementation of
Step 3: Add the token provider
Create a file called AppCheckTokenProvider (or, if you are using Objective-C, two files called AppCheckTokenProvider.h and AppCheckTokenProvider.m ) at the root level of your app.
This class must conform to the GMSAppCheckTokenProvider protocol and implement the method fetchAppCheckTokenWithCompletion .
سویفت
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
هدف-سی
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
Step 4: Initialize the Navigation and App Check APIs
Initialize Navigation SDK for iOS (using GMSServices ) and register your token provider instance by casting the shared opaque services handle to GMSServices :
سویفت
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS if let services = GMSServices.sharedServices() as? GMSServices { services.appCheckTokenProvider = AppCheckTokenProvider() }
هدف-سی
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS ((GMSServices *)[GMSServices sharedServices]).appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
Step 5: Enable debugging (optional)
After App Check is enforced for Navigation SDK for iOS, your app's features that depend on Navigation SDK for iOS won't run in a simulator or from a continuous integration (CI) environment because these environments don't qualify as valid devices. To run your app in these environments during development and testing, you need to create a debug build of your app that uses the App Check debug provider instead of a production attestation provider.
- Configure the debug provider factory in your
AppDelegate:سویفت
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
هدف-سی
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Enable logging on your Xcode project, launch the app, and locate the local debug token in the console log.
- Copy and add this debug token to the Firebase Console. For more details, consult the Firebase App Check debug provider documentation .
Step 6: Monitor your app requests and decide on enforcement
Before enabling enforcement, monitor your app requests to make sure that you won't disrupt legitimate users.
- Visit the App Check metrics screen in the Firebase console to see the percentage of verified versus unverified traffic.
- Once you are sure that the majority of your traffic is verified and legitimate users have updated to a version of your app containing your App Check implementation, enable enforcement.
- Once enforcement is on, App Check will reject all traffic without a valid App Check token.