iOS-এর জন্য নেভিগেশন SDK সুরক্ষিত করতে অ্যাপ চেক ব্যবহার করুন।
ফায়ারবেস অ্যাপ চেক আপনার বৈধ অ্যাপগুলো ছাড়া অন্য উৎস থেকে আসা ট্র্যাফিক ব্লক করার মাধ্যমে আপনার অ্যাপ থেকে গুগল ম্যাপস প্ল্যাটফর্মে করা কলগুলোকে সুরক্ষা প্রদান করে। এটি অ্যাপ অ্যাটেস্ট-এর মতো কোনো অ্যাটেস্টেশন প্রোভাইডারের কাছ থেকে অ্যাপ বা ডিভাইসের সত্যতা যাচাইয়ের অনুরোধ করে এই কাজটি করে থাকে। যখন আপনি আপনার অ্যাপকে অ্যাপ চেক-এর সাথে ইন্টিগ্রেট করেন, তখন আপনি ক্ষতিকর এবং অননুমোদিত অনুরোধের বিরুদ্ধে সুরক্ষা যোগ করেন, যা ফলস্বরূপ আপনার বিলিংকে অননুমোদিত চার্জ থেকে রক্ষা করে। অ্যাপ চেক আপনার ফ্লিট অ্যাপ ইকোসিস্টেমে রিয়েল-টাইম ডিসরাপশন রিপোর্টিংকেও উল্লেখযোগ্যভাবে উন্নত করে, যার ফলে আপনার অ্যাপ ব্যবহারকারী সকল ড্রাইভার উপকৃত হন। আরও তথ্যের জন্য, ডিসরাপশন রিপোর্টিং দেখুন।
অ্যাপ চেক কেন ব্যবহার করবেন?
অ্যাপ চেক, iOS-এর জন্য নেভিগেশন SDK-এর দুটি স্বতন্ত্র ক্ষেত্রকে সুরক্ষিত করে: মূল নেভিগেশন কার্যকারিতা এবং বিঘ্ন প্রতিবেদন।
নেভিগেশন
অ্যাপ চেক ক্ষতিকর বা অননুমোদিত উৎস থেকে আসা iOS-এর প্রধান নেভিগেশন SDK-এর অনুরোধগুলো ব্লক করতে সাহায্য করে। এটি আপনার প্রজেক্টকে বিলিং জালিয়াতি এবং কোটা শেষ হয়ে যাওয়া থেকে রক্ষা করে আপনাকে সরাসরি উপকৃত করে।
বিঘ্ন প্রতিবেদন
আপনার অ্যাপে যদি রিয়েল-টাইম বিঘ্ন রিপোর্ট করার এবং ভোট দেওয়ার সুবিধা থাকে, তবে অ্যাপ চেক ব্যবহার করার জন্য জোরালোভাবে সুপারিশ করা হচ্ছে। অ্যাপ চেক চালু করলে, সমস্ত রিয়েল-টাইম ফিডব্যাক বিবেচনা করে আপনার ড্রাইভারদের সবচেয়ে সঠিক রুট সরবরাহ করা নিশ্চিত হয়।
রিপোর্টিংয়ের জন্য অ্যাপ চেক কেন গুরুত্বপূর্ণ:
- রাস্তা বন্ধের ক্ষেত্রে উচ্চ বিশ্বাসযোগ্যতার মানদণ্ড: রাস্তা বন্ধের মতো রুট-প্রভাবিত ঘটনাগুলো সকল চালকের রুট নির্ধারণের আচরণকে উল্লেখযোগ্যভাবে পরিবর্তন করতে পারে। সম্ভাব্য ভাঙচুর, স্প্যাম বা ভুল রিপোর্টিং থেকে ম্যাপকে সুরক্ষিত রাখতে, রাস্তা বন্ধের কারণে সৃষ্ট বিঘ্নের জন্য গুগলের মডারেশন পরিকাঠামো শক্তিশালী ডিভাইস এবং অ্যাপের নির্ভরযোগ্যতার সংকেতের উপর নির্ভর করে।
- অ্যাপ চেক যেভাবে রিপোর্ট যাচাই করে: নেভিগেশন এসডিকে ফর আইওএস (Navigation SDK for iOS) থেকে পাঠানো ব্যবহারকারীর রিপোর্ট এবং ভোটে অ্যাপ চেক টোকেন অন্তর্ভুক্ত থাকে, যা গুগলের ব্যাকএন্ড ফিডব্যাকের বৈধতা যাচাই করতে ব্যবহার করে। এটি রিপোর্টের বিশ্বাসযোগ্যতার স্তর বাড়ায় এবং লাইভ ম্যাপে এর প্রভাব মূল্যায়নের সুযোগ করে দেয়।
- অ্যাপ চেক বাদ দেওয়ার প্রভাব: বৈধ অ্যাপ চেক টোকেন ছাড়া জমা দেওয়া রিপোর্টগুলো কম নির্ভরযোগ্য মডেলের অধীনে মূল্যায়ন করা হয় এবং শুধুমাত্র নীরব সংকেত হিসেবে বিবেচিত হতে পারে। এর মানে হলো, যদিও আপনার ব্যবহারকারীরা রিপোর্ট করতে এবং ভোট দিতে পারবেন, তাদের রিপোর্টগুলো ম্যাপে দৃশ্যমান হওয়ার বা অন্য চালকদের রুটকে প্রভাবিত করার সম্ভাবনা কম থাকবে এবং এর জন্য অতিরিক্ত যাচাইকরণের প্রয়োজন হবে।
অ্যাপ চেক কি আমার জন্য উপযুক্ত?
বেশিরভাগ ক্ষেত্রে অ্যাপ চেক করার পরামর্শ দেওয়া হয়; তবে, নিম্নলিখিত পরিস্থিতিগুলিতে অ্যাপ চেকের প্রয়োজন নেই বা এটি সমর্থিত নয়:
- ব্যক্তিগত বা পরীক্ষামূলক অ্যাপ: আপনার অ্যাপটি যদি সর্বজনীনভাবে অ্যাক্সেসযোগ্য না হয়, তাহলে অ্যাপ চেকের প্রয়োজন নেই।
- ঝুঁকিপূর্ণ ডিভাইস: প্রস্তাবিত অ্যাটেস্টেশন প্রোভাইডারগুলো রুটেড বা জেলব্রেক করা ফোনের মতো অবিশ্বস্ত ডিভাইসে নেভিগেশন এসডিকে ফর আইওএস (Navigation SDK for iOS) চলতে বাধা দেয়। এই ডিভাইসগুলোকে সাপোর্ট করার জন্য, একটি কাস্টম অ্যাটেস্টেশন প্রোভাইডার স্থাপন করুন।
বাস্তবায়নের ধাপগুলোর সংক্ষিপ্ত বিবরণ
মোটামুটিভাবে, অ্যাপ চেক-এর সাথে আপনার অ্যাপকে সংযুক্ত করতে আপনি এই ধাপগুলো অনুসরণ করবেন:
- আপনার অ্যাপে Firebase যোগ করুন।
- অ্যাপ চেক লাইব্রেরিটি যোগ করুন এবং অ্যাপ চেক চালু করুন।
- একটি টোকেন প্রদানকারী যোগ করুন। এই ধাপটি ডিভাইস বা অ্যাপের অখণ্ডতা যাচাই করার জন্য আপনার পছন্দের অ্যাটেস্টেশন প্রদানকারীকে সক্রিয় করে।
- নেভিগেশন এবং অ্যাপ চেক এপিআইগুলো ইনিশিয়ালাইজ করুন।
- ডিবাগিং সক্ষম করুন। এটি ডেভেলপমেন্টের সময় অথবা কন্টিনিউয়াস ইন্টিগ্রেশন (CI) পরিবেশে উপযোগী।
- প্রয়োগ ব্যবস্থা চালু করার আগে আপনার অ্যাপ অনুরোধগুলো নিরীক্ষণ করুন। এর মাধ্যমে, আপনি আপনার ব্যবহারকারীদের কোনো অসুবিধা না করেই নির্বিঘ্নে অ্যাপ চেক প্রয়োগ করতে পারবেন।
অ্যাপ চেক ইন্টিগ্রেশন পরিকল্পনা করার সময় বিবেচ্য বিষয়সমূহ
- অ্যাটেস্টেশন প্রদানকারীর কোটা: আমরা যে অ্যাটেস্টেশন প্রদানকারীদের সুপারিশ করি, যেমন ডিভাইসচেক বা অ্যাপ অ্যাটেস্ট, তারা অ্যাপল কর্তৃক নির্ধারিত কোটা এবং সীমাবদ্ধতার অধীন।
- স্টার্টআপ ল্যাটেন্সি: বেশিরভাগ ক্ষেত্রে, আপনার ব্যবহারকারীরা সাধারণ ব্যবহারের সময় কোনো ল্যাটেন্সি অনুভব করবেন না, কারণ অ্যাপ চেক টোকেনগুলো ডিভাইসে ক্যাশ করা থাকে। নিরবচ্ছিন্ন পারফরম্যান্স বজায় রাখার জন্য, মেয়াদ শেষ হওয়ার আগে সিস্টেমটি স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে অ্যাপ চেক টোকেনগুলো রিফ্রেশ করে। তবে, যদি একটি বৈধ অ্যাপ চেক টোকেন উপস্থিত না থাকে, তাহলে আপনার অ্যাপ ব্যবহারকারীরা অ্যাপ চালুর সময় কিছুটা ল্যাটেন্সি অনুভব করবেন। উদাহরণস্বরূপ, কোল্ড স্টার্টের সময় এই ল্যাটেন্সি দেখা দেয়, যখন কোনো ক্যাশ করা টোকেনের মেয়াদ শেষ হয়ে যায় বা সেটি অনুপস্থিত থাকে।
- টোকেন টিটিএল: টাইম টু লিভ (TTL) নির্ধারণ করে যে অ্যাপ চেক টোকেনটি রিফ্রেশ করার আগে কতক্ষণ পর্যন্ত বৈধ থাকবে। আপনি ফায়ারবেস কনসোলে এই সময়কাল ৩০ মিনিট থেকে ৭ দিন পর্যন্ত কনফিগার করতে পারেন। একটি নিরাপদ বেসলাইন হিসাবে ১ ঘণ্টার সময়কাল সুপারিশ করা হয়, কিন্তু SDK স্বয়ংক্রিয়ভাবে TTL সময়কালের প্রায় অর্ধেক সময়ে ব্যাকগ্রাউন্ড রিফ্রেশ করার চেষ্টা করে। ধাপে ধাপে কনসোল নির্দেশাবলীর জন্য, ফায়ারবেস অ্যাপ চেক ডকুমেন্টেশন দেখুন।
আপনার অ্যাপকে অ্যাপ চেকের সাথে একীভূত করুন
পূর্বশর্ত এবং প্রয়োজনীয়তা
- অ্যাপটিতে iOS ভার্সন 11.0 বা তার পরবর্তী সংস্করণের নেভিগেশন SDK ইনস্টল করা থাকতে হবে।
- অ্যাপটির বান্ডেল আইডি ।
- আপনার অ্যাপল ডেভেলপার কনসোলের মেম্বারশিপ ট্যাব থেকে আপনার টিম আইডি।
- আপনি যদি ডিভাইসচেক ব্যবহার করার পরিকল্পনা করেন, তাহলে আপনার প্রাইভেট কী ফাইল এবং কী আইডি প্রয়োজন হবে ।
- আপনাকে অবশ্যই গুগল ক্লাউড কনসোলে অ্যাপটির মালিক হতে হবে।
- গুগল ক্লাউড কনসোল থেকে আপনার অ্যাপের প্রজেক্ট আইডি।
ধাপ ১: আপনার অ্যাপে Firebase যোগ করুন
আপনার অ্যাপে Firebase যোগ করতে Firebase ডেভেলপার ডকুমেন্টেশনে দেওয়া নির্দেশাবলী অনুসরণ করুন। আপনার GoogleService-Info.plist ফাইলটি অপরিবর্তিত অবস্থায় আপনার প্রোজেক্টের রুট লেভেলে যুক্ত করুন।
আপনার AppDelegate ফাইলে নিম্নলিখিত মডিউলগুলি ইম্পোর্ট করুন:
সুইফট
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
উদ্দেশ্য-সি
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
ধাপ ২: অ্যাপ চেক লাইব্রেরি যোগ করুন এবং অ্যাপ চেক চালু করুন।
ফায়ারবেস প্রতিটি ডিফল্ট অ্যাটেস্টেশন প্রোভাইডারের জন্য নির্দেশাবলী প্রদান করে। এই নির্দেশাবলীতে দেখানো হয়েছে কীভাবে একটি ফায়ারবেস প্রজেক্ট সেট আপ করতে হয় এবং আপনার অ্যাপে অ্যাপ চেক লাইব্রেরিটি যুক্ত করতে হয়। অ্যাপ চেক ইনিশিয়ালাইজ করার জন্য প্রদত্ত কোড স্যাম্পলগুলো অনুসরণ করুন।
- অ্যাপ চেক লাইব্রেরিটি যোগ করতে ফায়ারবেসের নির্দেশাবলী অনুসরণ করুন:
- আপনার
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
ধাপ ৪: নেভিগেশন এবং অ্যাপ চেক এপিআইগুলো ইনিশিয়ালাইজ করুন
iOS-এর জন্য নেভিগেশন SDK ( 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];
ধাপ ৫: ডিবাগিং সক্ষম করুন (ঐচ্ছিক)
Navigation SDK for iOS-এর জন্য App Check চালু হওয়ার পর, আপনার অ্যাপের যে ফিচারগুলো Navigation SDK for 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];
- আপনার Xcode প্রোজেক্টে লগিং চালু করুন, অ্যাপটি চালু করুন এবং কনসোল লগে লোকাল ডিবাগ টোকেনটি সনাক্ত করুন।
- এই ডিবাগ টোকেনটি কপি করে ফায়ারবেস কনসোলে যোগ করুন। আরও বিস্তারিত তথ্যের জন্য, ফায়ারবেস অ্যাপ চেক ডিবাগ প্রোভাইডার ডকুমেন্টেশন দেখুন।
ধাপ ৬: আপনার অ্যাপের অনুরোধগুলো পর্যবেক্ষণ করুন এবং তা কার্যকর করার বিষয়ে সিদ্ধান্ত নিন।
প্রয়োগ ব্যবস্থা চালু করার আগে, আপনার অ্যাপের অনুরোধগুলো পর্যবেক্ষণ করুন যাতে আপনি বৈধ ব্যবহারকারীদের কাজে কোনো ব্যাঘাত না ঘটান।
- যাচাইকৃত এবং যাচাইবিহীন ট্র্যাফিকের শতাংশ দেখতে Firebase কনসোলের অ্যাপ চেক মেট্রিক্স স্ক্রিনটি দেখুন।
- একবার আপনি নিশ্চিত হয়ে গেলে যে আপনার বেশিরভাগ ট্র্যাফিক যাচাইকৃত এবং বৈধ ব্যবহারকারীরা আপনার অ্যাপের এমন একটি সংস্করণে আপডেট করেছেন যাতে আপনার অ্যাপ চেক বাস্তবায়ন অন্তর্ভুক্ত রয়েছে, তখন এনফোর্সমেন্ট সক্ষম করুন।
- একবার এনফোর্সমেন্ট চালু হলে, অ্যাপ চেক বৈধ অ্যাপ চেক টোকেন ছাড়া সমস্ত ট্র্যাফিক প্রত্যাখ্যান করবে।