iOS-এর জন্য Navigation SDK সুরক্ষিত করতে App Check ব্যবহার করা

আপনার বৈধ অ্যাপ ছাড়া অন্য সোর্স থেকে আসা ট্রাফিক ব্লক করার মাধ্যমে Firebase App Check আপনার অ্যাপ থেকে Google Maps Platform-এ করা কলের ক্ষেত্রে সুরক্ষা প্রদান করে। এটি করার জন্য App Attest-এর মতো অ্যাটেস্টেশন প্রদানকারীর থেকে অ্যাপ বা ডিভাইসের সত্যতা মূল্যায়ন করার অনুরোধ করা হয়। App Check-এর সাথে আপনার অ্যাপ ইন্টিগ্রেট করলে, আপনি ক্ষতিকর ও অননুমোদিত অনুরোধের বিরুদ্ধে সুরক্ষা যোগ করেন, যা আপনার বিলিংকে অননুমোদিত চার্জ থেকে সুরক্ষিত রাখে। এছাড়াও, App Check আপনার ফ্লিট অ্যাপ ইকোসিস্টেমে রিয়েল-টাইম বিঘ্ন রিপোর্টিং উল্লেখযোগ্যভাবে উন্নত করে, যার ফলে আপনার অ্যাপ ব্যবহারকারী সব ড্রাইভার উপকৃত হন। আরও তথ্যের জন্য, বিঘ্ন রিপোর্টিং দেখুন।

App Check কেন ব্যবহার করবেন?

App Check, iOS-এর জন্য Navigation SDK-এর দুটি আলাদা অংশকে সুরক্ষিত রাখে: প্রধান নেভিগেশন কার্যকারিতা এবং বিঘ্নিত হওয়ার রিপোর্টিং।

App Check, ক্ষতিকর বা অননুমোদিত সোর্স থেকে আসা iOS-এর জন্য প্রধান Navigation SDK-এর অনুরোধ ব্লক করতে সাহায্য করে। এটি বিলিং সংক্রান্ত প্রতারণা এবং কোটা শেষ হয়ে যাওয়া থেকে আপনার প্রোজেক্টকে রক্ষা করে সরাসরি আপনাকে সুবিধা প্রদান করে।

বিঘ্ন ঘটার বিষয়ে অভিযোগ জানানো

আপনার অ্যাপে রিয়েল-টাইম বিঘ্ন রিপোর্টিং এবং ভোট দেওয়ার ক্ষমতা থাকলে, App Check ব্যবহার করার জন্য বিশেষভাবে সাজেস্ট করা হয়। App Check চালু করলে, আপনার ড্রাইভারদের সবচেয়ে সঠিক রুট দেখানো হয়, যা সব রিয়েল-টাইম ফিডব্যাক বিবেচনা করে তৈরি করা হয়।

রিপোর্টিংয়ের জন্য App Check কেন গুরুত্বপূর্ণ:

  • রাস্তা বন্ধের ক্ষেত্রে উচ্চ বিশ্বাসযোগ্যতার মাপকাঠি: রাস্তা বন্ধের মতো ঘটনা যা রুটের উপর প্রভাব ফেলে, তা সব চালকের রুট সংক্রান্ত আচরণে উল্লেখযোগ্য পরিবর্তন আনতে পারে। সম্ভাব্য ভাঙচুর, স্প্যাম বা ভুল রিপোর্টিং থেকে ম্যাপকে সুরক্ষিত রাখতে, রাস্তা বন্ধ থাকার কারণে হওয়া বিঘ্ন সংক্রান্ত Google-এর মডারেশন পরিকাঠামো শক্তিশালী ডিভাইস এবং অ্যাপ ইন্টিগ্রিটি সিগন্যালের উপর নির্ভর করে।
  • App Check কীভাবে রিপোর্ট যাচাই করে: iOS-এর জন্য Navigation SDK থেকে পাঠানো ব্যবহারকারীর রিপোর্ট ও ভোট App Check টোকেন অন্তর্ভুক্ত করে, যা Google-এর ব্যাকএন্ড দ্বারা মতামতের বৈধতা যাচাই করতে ব্যবহার করা হয়, এর বিশ্বাসযোগ্যতার লেভেল বাড়ায় এবং লাইভ ম্যাপের প্রভাবের জন্য এটিকে মূল্যায়ন করার অনুমতি দেয়।
  • App Check বাদ দেওয়ার প্রভাব: সঠিক App Check টোকেন ছাড়া জমা দেওয়া রিপোর্ট কম-বিশ্বস্ত মডেলের অধীনে মূল্যায়ন করা হয় এবং শুধুমাত্র সাইলেন্ট সিগন্যাল হিসেবে প্রসেস করা হতে পারে। এর অর্থ হল, আপনার ব্যবহারকারীরা এখনও রিপোর্ট করতে এবং ভোট দিতে পারলেও, তাদের রিপোর্ট ম্যাপে দৃশ্যমান হওয়ার বা অন্যান্য ড্রাইভারের রুটকে প্রভাবিত করার সম্ভাবনা কম এবং এর জন্য অতিরিক্ত যাচাইকরণের প্রয়োজন হবে।

App Check কি আমার জন্য সঠিক?

বেশিরভাগ ক্ষেত্রে App Check ব্যবহার করার সাজেশন দেওয়া হয়; তবে, নিম্নলিখিত পরিস্থিতিতে App Check-এর প্রয়োজন হয় না বা এটি কাজ করে না:

  • ব্যক্তিগত বা পরীক্ষামূলক অ্যাপ: আপনার অ্যাপ সর্বজনীনভাবে অ্যাক্সেসযোগ্য না হলে, App Check-এর প্রয়োজন নেই।
  • আপোস করা ডিভাইস: সাজেস্ট করা অ্যাটেস্টেশন প্রদানকারী, iOS-এর জন্য Navigation SDK-কে ভরসাযোগ্য নয় এমন ডিভাইসে চলতে বাধা দেয়, যেমন রুট করা বা জেলব্রোকেন ফোন। এইসব ডিভাইসে কাজ করার জন্য, কাস্টম অ্যাটেস্টেশন প্রোভাইডার ডেপ্লয় করুন।

প্রয়োগ করার বিভিন্ন ধাপের ওভারভিউ

App Check-এর সাথে আপনার অ্যাপ ইন্টিগ্রেট করতে, আপনাকে এইসব ধাপ অনুসরণ করতে হবে:

  1. আপনার অ্যাপে Firebase যোগ করুন।
  2. App Check লাইব্রেরি যোগ করুন এবং App Check শুরু করুন।
  3. টোকেন প্রদানকারী যোগ করুন। এই ধাপটি ডিভাইস বা অ্যাপের ইন্টিগ্রিটি যাচাই করার জন্য আপনার পছন্দের অ্যাটেস্টেশন প্রদানকারীকে কল করে।
  4. Navigation এবং App Check API শুরু করুন।
  5. ডিবাগিং চালু করুন। এটি ডেভেলপমেন্ট বা কন্টিনিউয়াস ইন্টিগ্রেশন (CI) এনভায়রনমেন্টে উপযোগী।
  6. এনফোর্সমেন্ট চালু করার আগে আপনার অ্যাপের অনুরোধ মনিটর করুন। এইভাবে, আপনি ব্যবহারকারীদের কোনও সমস্যা না করেই নির্বিঘ্নে App Check এনফোর্স করতে পারবেন।

App Check ইন্টিগ্রেশন প্ল্যান করার সময় যেসব বিষয় বিবেচনা করতে হবে

  • অ্যাটেস্টেশন প্রোভাইডার কোটা: আমরা যেসব অ্যাটেস্টেশন প্রোভাইডার সাজেস্ট করি, যেমন DeviceCheck বা App Attest, সেগুলি Apple-এর সেট করা কোটা ও সীমাবদ্ধতা অনুযায়ী কাজ করে।
  • স্টার্টআপ লেটেন্সি: বেশিরভাগ ক্ষেত্রে, আপনার ব্যবহারকারীরা নিয়মিত ব্যবহারের সময় লেটেন্সি অনুভব করবেন না, কারণ App Check টোকেন ডিভাইসে ক্যাশে করা থাকে। নির্বিঘ্ন পারফর্ম্যান্স বজায় রাখতে, সিস্টেম ব্যাকগ্রাউন্ডে মেয়াদ শেষ হওয়ার আগে App Check টোকেন অটোমেটিক রিফ্রেশ করে। তবে, সঠিক App Check টোকেন না থাকলে, আপনার অ্যাপ ব্যবহারকারীরা অ্যাপ চালু করার সময় কিছুটা লেটেন্সি অনুভব করবেন। যেমন, কোল্ড স্টার্টের সময় এই লেটেন্সি হয় যখন ক্যাশে করা টোকেনের মেয়াদ শেষ হয়ে যায় বা সেটি পাওয়া যায় না।
  • টোকেন TTL: টাইম টু লাইভ (TTL) নির্ধারণ করে যে App Check টোকেন রিফ্রেশ করার আগে কতক্ষণ পর্যন্ত বৈধ থাকবে। আপনি Firebase কনসোলে এই সময়সীমা ৩০ মিনিট থেকে ৭ দিন পর্যন্ত কনফিগার করতে পারবেন। নিরাপদ বেসলাইন হিসেবে ১ ঘণ্টা সময়সীমা সাজেস্ট করা হয়, তবে SDK অটোমেটিক TTL সময়সীমার প্রায় অর্ধেক সময়সীমাতেই ব্যাকগ্রাউন্ড রিফ্রেশ করার চেষ্টা করে। ধাপে-ধাপে কনসোল সংক্রান্ত নির্দেশাবলীর জন্য, Firebase App Check ডকুমেন্টেশন দেখুন।

App Check-এর সাথে আপনার অ্যাপ ইন্টিগ্রেট করা

পূর্বশর্ত ও প্রয়োজনীয়তা

  • iOS-এর জন্য Navigation SDK-এর ভার্সন 11.0 বা তার পরবর্তী ভার্সন ইনস্টল করা আছে এমন অ্যাপ।
  • অ্যাপের বান্ডেল আইডি।
  • আপনার Apple Developer কনসোলের মেম্বারশিপ ট্যাব থেকে আপনার টিম আইডি।
  • আপনি DeviceCheck ব্যবহার করার পরিকল্পনা করলে, আপনার ব্যক্তিগত কী ফাইল এবং কী আইডি।
  • আপনাকে Google Cloud কনসোলে অ্যাপের মালিক হতে হবে।
  • Google Cloud কনসোল থেকে আপনার অ্যাপের প্রোজেক্ট আইডি।

ধাপ ১: আপনার অ্যাপে Firebase যোগ করুন

আপনার অ্যাপে Firebase যোগ করতে Firebase ডেভেলপার ডকুমেন্টেশনে দেওয়া নির্দেশাবলী অনুসরণ করুন। আপনার প্রোজেক্টের রুট লেভেলে, আপনার GoogleService-Info.plist ফাইলটি অপরিবর্তিত অবস্থায় যোগ করুন।

আপনার AppDelegate ফাইলে, নিম্নলিখিত মডিউল ইমপোর্ট করুন:

Swift

import FirebaseCore
import FirebaseAppCheck
import GoogleNavigation

Objective-C

@import FirebaseCore;
@import FirebaseAppCheck;
@import GoogleNavigation;

ধাপ ২: App Check লাইব্রেরি যোগ করুন এবং App Check শুরু করুন

Firebase প্রতিটি ডিফল্ট অ্যাটেস্টেশন প্রদানকারীর জন্য নির্দেশাবলী প্রদান করে। এই নির্দেশাবলী থেকে আপনি জানতে পারবেন যে কীভাবে Firebase প্রোজেক্ট সেট-আপ করতে হয় এবং আপনার অ্যাপে App Check লাইব্রেরি যোগ করতে হয়। App Check শুরু করার জন্য প্রদত্ত কোড স্যাম্পেল অনুসরণ করুন।

  1. App Check লাইব্রেরি যোগ করতে Firebase-এর নির্দেশাবলী অনুসরণ করুন:
  2. আপনার AppDelegate-এ App Check শুরু করুন:
    • আপনি App Attest ব্যবহার করলে, AppCheckProviderFactory-এর একটি ইমপ্লিমেন্টেশন তৈরি করুন এবং FirebaseApp.configure() কল করার আগে এটি রেজিস্টার করুন:

      Swift

      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()

      Objective-C

      #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 ব্যবহার করেন, তাহলে নিম্নলিখিতগুলি ব্যবহার করে ফ্যাক্টরি সেট করুন:

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

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

ধাপ ৩: টোকেন প্রদানকারী যোগ করুন

আপনার অ্যাপের রুট লেভেলে AppCheckTokenProvider (অথবা, আপনি Objective-C ব্যবহার করলে, AppCheckTokenProvider.h এবং AppCheckTokenProvider.m নামে দুটি ফাইল) নামে একটি ফাইল তৈরি করুন।

এই ক্লাসকে অবশ্যই GMSAppCheckTokenProvider প্রোটোকল মেনে চলতে হবে এবং fetchAppCheckTokenWithCompletion পদ্ধতি প্রয়োগ করতে হবে।

Swift

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)
        }
    }
}

Objective-C

// 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

ধাপ ৪: Navigation এবং App Check API শুরু করা

iOS-এর জন্য Navigation SDK শুরু করুন এবং GMSServices-এ আপনার টোকেন প্রোভাইডার ইনস্ট্যান্স রেজিস্টার করুন:

Swift

// In application(_:didFinishLaunchingWithOptions:)
GMSServices.provideAPIKey("YOUR_API_KEY")

// Register your App Check token provider before initializing Navigation SDK for iOS
GMSServices.appCheckTokenProvider = AppCheckTokenProvider()

Objective-C

// In application:didFinishLaunchingWithOptions:
[GMSServices provideAPIKey:@"YOUR_API_KEY"];

// Register your App Check token provider before initializing Navigation SDK for iOS
GMSServices.appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];

ধাপ ৫: ডিবাগিং চালু করা (ঐচ্ছিক)

iOS-এর জন্য Navigation SDK-তে App Check এনফোর্স করার পরে, iOS-এর জন্য Navigation SDK-এর উপর নির্ভর করে এমন আপনার অ্যাপের ফিচার সিমুলেটর বা কন্টিনিউয়াস ইন্টিগ্রেশন (CI) এনভায়রনমেন্টে চলবে না, কারণ এইসব এনভায়রনমেন্ট বৈধ ডিভাইস হিসেবে উপযুক্ত নয়। ডেভেলপমেন্ট ও টেস্টিংয়ের সময় এইসব এনভায়রনমেন্টে আপনার অ্যাপ চালাতে, আপনাকে অ্যাপের একটি ডিবাগ বিল্ড তৈরি করতে হবে যা প্রোডাকশন অ্যাটেস্টেশন প্রোভাইডারের পরিবর্তে App Check ডিবাগ প্রোভাইডার ব্যবহার করে।

  1. আপনার AppDelegate-এ ডিবাগ প্রোভাইডার ফ্যাক্টরি কনফিগার করুন:

    Swift

    #if targetEnvironment(simulator)
    let providerFactory = AppCheckDebugProviderFactory()
    #else
    let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)

    Objective-C

    #if TARGET_OS_SIMULATOR
    id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init];
    #else
    id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init];
    #endif
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
  2. আপনার Xcode প্রোজেক্টে লগিং চালু করুন, অ্যাপ লঞ্চ করুন এবং কনসোল লগে লোকাল ডিবাগ টোকেন খুঁজুন।
  3. এই ডিবাগ টোকেন কপি করে Firebase কনসোলে যোগ করুন। আরও জানতে, Firebase App Check ডিবাগ প্রোভাইডার ডকুমেন্টেশন দেখুন।

ধাপ ৬: আপনার অ্যাপের অনুরোধ মনিটর করা এবং এনফোর্সমেন্ট সংক্রান্ত সিদ্ধান্ত নেওয়া

এনফোর্সমেন্ট চালু করার আগে, আপনার অ্যাপের অনুরোধ মনিটর করুন যাতে আপনি বৈধ ব্যবহারকারীদের বাধা না দেন।

  1. যাচাই করা বনাম যাচাই না করা ট্রাফিকের শতাংশ দেখতে Firebase কনসোলে App Check মেট্রিক্স স্ক্রিনে যান।
  2. আপনার বেশিরভাগ ট্রাফিক যাচাই করা হয়েছে এবং বৈধ ব্যবহারকারীরা আপনার অ্যাপের এমন একটি ভার্সনে আপডেট করেছেন যাতে আপনার App Check প্রয়োগ করা আছে, এই বিষয়ে নিশ্চিত হওয়ার পরে এনফোর্সমেন্ট চালু করুন।
  3. এনফোর্সমেন্ট চালু হয়ে গেলে, সঠিক App Check টোকেন ছাড়া সব ট্রাফিক App Check বাতিল করে দেবে।