1. ভূমিকা
আপনি আপনার ব্যাকএন্ড পরিষেবাগুলিকে সুরক্ষিত করতে এবং আপনার খাঁটি অ্যাপ থেকে Firebase পরিষেবাগুলির অনুরোধগুলি আসছে কিনা তা যাচাই করতে অ্যাপ অ্যাটেস্টের সাথে Firebase অ্যাপ চেক ব্যবহার করতে পারেন৷
সাধারণত কোটা সীমা আঘাত এড়াতে ব্যবহারকারীদেরকে ধীরে ধীরে অ্যাপ অ্যাটেস্ট পরিষেবাতে অনবোর্ড করার পরামর্শ দেওয়া হয়। আরও তথ্যের জন্য, অ্যাপলের " প্রিপারিং টু ইউজ দ্য অ্যাপ অ্যাটেস্ট সার্ভিস " ডকুমেন্টেশন দেখুন।
অ্যাপলের অ্যাপ স্টোর কানেক্ট বৈশিষ্ট্যটি ব্যবহার করে ক্রমবর্ধমানভাবে অ্যাপ আপডেট প্রকাশ করার ক্ষমতা, যেমন " পর্যায়ক্রমে একটি সংস্করণ আপডেট প্রকাশ করা " এ বর্ণনা করা হয়েছে, অ্যাপ চেক রোলআউটকে আরও মসৃণ করে তুলতে পারে। এটি একটি সোজা, সহজ সমাধান। যাইহোক, পর্যায়ক্রমে একটি অ্যাপ সংস্করণ আপডেট প্রকাশ করা আপনাকে নতুন অ্যাপ সংস্করণ প্রকাশ না করেই বিদ্যমান, আপডেট হওয়া অ্যাপগুলির রোলআউট নিয়ন্ত্রণ বা আচরণ পরিবর্তন করার অনুমতি দেয় না।
অ্যাপ অ্যাটেস্ট রোলআউটের মাধ্যমে আপনার অ্যাপ চেকের উপর আরও নিয়ন্ত্রণের একটি উপায় হল Firebase রিমোট কনফিগারেশন ব্যবহার করা যাতে আপনার অ্যাপের ব্যবহারকারীদের এক শতাংশের জন্য অ্যাপ অ্যাটেস্ট দিয়ে অ্যাপ চেক করা যায়। এটি সত্যায়িত সার্ভার থেকে থ্রটলিং এড়াতে সাহায্য করতে পারে। ব্যবহারকারীদের উপর রোলআউটের প্রভাব পর্যবেক্ষণ করতে Google Analytics ব্যবহার করা যেতে পারে।
আপনি কি শিখবেন
এই মাল্টিস্টেপ কোডল্যাবে, আপনি শিখবেন কীভাবে আপনার অ্যাপের জন্য অ্যাপ চেক রোল আউট করতে ফায়ারবেস রিমোট কনফিগ ব্যবহার করবেন।
এই কোডল্যাবটি DatabaseExample quickstart অ্যাপের উপর ভিত্তি করে একটি Firebase প্রজেক্ট ব্যবহার করে এবং Firebase অ্যাপ চেকের সাথে একীভূত, যেমনটি Apple প্ল্যাটফর্ম কোডল্যাবের জন্য Firebase অ্যাপ চেক -এ বর্ণিত হয়েছে। DatabaseExample quickstart অ্যাপ ব্যবহারকারীদের Firebase রিয়েলটাইম ডেটাবেসের বৈশিষ্ট্যগুলি ব্যবহার করে লগ ইন করতে এবং পোস্ট যোগ করতে দেয়।
আপনার নিজের অ্যাপটি পরীক্ষা করার জন্য আপনি এই কোডল্যাবের ধাপগুলিও মানিয়ে নিতে পারেন।
পূর্বশর্ত
- অ্যাপল প্ল্যাটফর্ম কোডল্যাবের জন্য ফায়ারবেস অ্যাপ পরীক্ষা সম্পূর্ণ হয়েছে
আপনি কি প্রয়োজন হবে
- Xcode 12.5+
- অ্যাপ অ্যাটেস্ট পরীক্ষার জন্য:
- একটি Apple ডেভেলপার অ্যাকাউন্ট যা আপনাকে নতুন অ্যাপ শনাক্তকারী তৈরি করতে দেয়
- অ্যাপ্লিকেশান অ্যাটেস্ট সক্ষমতার সাথে একটি স্পষ্ট অ্যাপ আইডি সহ একটি অ্যাপ্লিকেশন সক্ষম। একটি অ্যাপ আইডি নিবন্ধন করুন এবং প্রক্রিয়াটিতে সহায়তার প্রয়োজন হলে অ্যাপ সক্ষমতা নিবন্ধগুলি সক্ষম করুন দেখুন।
- একটি iOS/iPadOS ডিভাইস যা অ্যাপ অ্যাটেস্ট সমর্থন করে
- এর সাথে ফায়ারবেস প্রকল্প:
- একটি iOS অ্যাপ কনফিগার করা হয়েছে ( আরো জানুন )
- Google Analytics , রিমোট কনফিগ এবং অ্যাপ চেক সক্ষম৷
- রিমোট কনফিগ তৈরি ও পরিচালনা করার অনুমতি এবং Google Analytics দেখার অনুমতি সহ আপনার অ্যাপের সংশ্লিষ্ট ফায়ারবেস প্রকল্পে অ্যাক্সেস করুন
2. একটি কাস্টম প্রত্যয়ন প্রদানকারী তৈরি করুন৷
এই ধাপে, আমরা একটি কাস্টম প্রোভাইডার ক্লাস তৈরি করব যাতে শুধুমাত্র অ্যাপ অ্যাটেস্ট চালু করা থাকে। রিমোট কনফিগার একটি কনফিগার করা ফায়ারবেস অ্যাপ ইন্সট্যান্সের উপর নির্ভর করে এবং এই ধাপে আপনি যে কাস্টম প্রোভাইডারটি প্রয়োগ করেন সেটি কনফিগারেশন শেষ করতে স্থানধারক হিসেবে কাজ করে।
নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে, আপনাকে Xcode-এ আপনার অ্যাপের ফ্রেমওয়ার্ক, লাইব্রেরি এবং এমবেডেড সামগ্রী বিভাগে Firebase
, FirebaseRemoteConfig
, এবং FirebaseAnalytics
যোগ করতে হবে৷ কিভাবে এটি করতে হয় তার একটি উদাহরণের জন্য, Apple প্ল্যাটফর্ম কোডল্যাবের জন্য Firebase অ্যাপ চেক দেখুন।
- একটি ফাইল তৈরি করুন " MyAppCheckProvider " যেটি
AppCheckProvider
প্রোটোকলের সাথে সঙ্গতিপূর্ণNSObject
এর একটি সাবক্লাস। - একটি খালি
getToken()
পদ্ধতি অন্তর্ভুক্ত করুন যা আপনি পরে পূরণ করবেন।
খালি getToken()
পদ্ধতি সহ কাস্টম প্রদানকারী শ্রেণীর জন্য নিম্নলিখিত উদাহরণ কোড দেখুন।
// MyAppCheckProvider.swift
import Firebase
import FirebaseAnalytics
import FirebaseAppCheck
import FirebaseRemoteConfig
class MyAppCheckProvider: NSObject, AppCheckProvider {
func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {}
}
AppAttestProvider
ইনস্ট্যান্ট করার জন্য, আপনাকে সংশ্লিষ্ট FirebaseApp
এর একটি উদাহরণ পাস করতে হবে। এটির জন্য একটি সঞ্চিত সম্পত্তি তৈরি করুন এবং এটি একটি প্রাথমিক পরামিতি হিসাবে গ্রহণ করুন:
// MyAppCheckProvider.swift
import Firebase
import FirebaseAnalytics
import FirebaseAppCheck
import FirebaseRemoteConfig
class MyAppCheckProvider: NSObject, AppCheckProvider {
// Firebase app instance served by the provider.
let firebaseApp: FirebaseApp
// The App Check provider factory should pass the FirebaseApp instance.
init(app: FirebaseApp) {
self.firebaseApp = app
super.init()
}
func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {}
}
অ্যাপ অ্যাটেস্ট প্রদানকারীর কাছে টোকেন অনুরোধ ফরোয়ার্ড করুন
এখন আপনার getToken()
পদ্ধতিতে অ্যাপ অ্যাটেস্ট প্রদানকারীর কাছে টোকেন অনুরোধ ফরওয়ার্ড করার জন্য আপনার কাছে সবকিছু আছে।
দ্রষ্টব্য: FirebaseAppCheck ফ্রেমওয়ার্ক রেফারেন্সে getToken()
পদ্ধতি সম্পর্কে আরও জানুন।
আপনার getToken()
পদ্ধতিতে নিম্নলিখিত কোড যোগ করুন:
// MyAppCheckProvider.swift
import Firebase
import FirebaseAnalytics
import FirebaseAppCheck
import FirebaseRemoteConfig
class MyAppCheckProvider: NSObject, AppCheckProvider {
// Firebase app instance served by the provider.
let firebaseApp: FirebaseApp
// The App Check provider factory should pass the FirebaseApp instance.
init(app: FirebaseApp) {
self.firebaseApp = app
super.init()
}
private lazy var appAttestProvider = AppAttestProvider(app: firebaseApp)
func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {
// Fetch App Attest flag from Remote Config
let remoteConfig = RemoteConfig.remoteConfig(app: firebaseApp)
remoteConfig.fetchAndActivate { remoteConfigStatus, error in
// Get App Attest flag value
let appAttestEnabled = remoteConfig.configValue(forKey: "AppAttestEnabled").boolValue
guard appAttestEnabled else {
// Skip attestation if App Attest is disabled. Another attestation
// method like DeviceCheck may be used instead of just skipping.
handler(nil, MyProviderError.appAttestIsDisabled)
return
}
// Try to obtain an App Attest provider instance and fail if cannot
guard let appAttestProvider = self.appAttestProvider else {
handler(nil, MyProviderError.appAttestIsUnavailable)
return
}
// If App Attest is enabled for the app instance, then forward the
// Firebase App Check token request to the App Attest provider
appAttestProvider.getToken(completion: handler)
}
}
}
enum MyProviderError: Error {
case appAttestIsDisabled
case appAttestIsUnavailable
case unexpected(code: Int)
}
পূর্ববর্তী কোডটি একটি রিমোট কনফিগারেশন AppAttestEnabled
বুলিয়ান প্যারামিটার চেক করে (এই রিমোট কনফিগ প্যারামিটারটি কোডল্যাবে পরে তৈরি করা হবে)। মানটি মিথ্যা হলে, কোডটি ব্যর্থ হয়, যা নির্দেশ করে যে অ্যাপ চেক বর্তমান ডিভাইসে রোল আউট করা হয়নি। মানটি সত্য হলে, কোডটি একটি অ্যাপ অ্যাটেস্ট প্রদানকারী পাওয়ার চেষ্টা করে এবং যদি না পারে তবে ব্যর্থ হয়। এই ত্রুটি পরীক্ষা পাস করা হলে, কোডটি অ্যাপ অ্যাটেস্ট প্রদানকারীর কাছে টোকেন অনুরোধ ফরোয়ার্ড করবে।
বিশ্লেষণ ইভেন্ট যোগ করুন
অ্যানালিটিক্স ইভেন্টগুলি যোগ করার মাধ্যমে, আপনি অ্যাপ চেক রোলআউট কতটা সফল তা সম্পর্কে আরও ভাল অন্তর্দৃষ্টি পাবেন। অ্যানালিটিক্স বৃহত্তর দর্শকদের জন্য অ্যাপ অ্যাটেস্ট সক্ষম করা উচিত কিনা তা নির্ধারণ করতে সাহায্য করবে৷
দুটি অ্যানালিটিক্স ইভেন্ট লগ করুন: সাফল্যের উপর AppAttestSuccess এবং ব্যর্থতার উপর AppAttestFailure । এই দুটি অ্যানালিটিক্স ইভেন্ট আপনার অ্যাপ চেক রোলআউটের সাফল্য ট্র্যাক করতে এবং একটি বড় রোলআউট এগিয়ে যাওয়া উচিত কিনা তা সিদ্ধান্ত নিতে সাহায্য করতে পারে৷
func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {
// Fetch Remote Config.
let remoteConfig = RemoteConfig.remoteConfig(app: firebaseApp)
remoteConfig.fetchAndActivate { remoteConfigStatus, error in
// Get App Attest flag value from Remote Config.
let appAttestEnabled = remoteConfig.configValue(forKey: "AppAttestEnabled").boolValue
guard appAttestEnabled else {
// Skip attestation if App Attest is disabled. Another attestation
// method like DeviceCheck may be used instead of just skipping.
handler(nil, MyProviderError.appAttestIsDisabled)
return
}
// Try to obtain an App Attest provider instance and fail otherwise.
guard let appAttestProvider = self.appAttestProvider else {
handler(nil, MyProviderError.appAttestIsUnavailable)
return
}
// If App Attest is enabled for the app instance, then forward the
// Firebase App Check token request to the App Attest provider.
appAttestProvider.getToken { token, error in
// Log an Analytics event to track attestation success rate.
let appAttestEvent: String
if (token != nil && error == nil) {
appAttestEvent = "AppAttestSuccess"
} else {
appAttestEvent = "AppAttestFailure"
}
Analytics.logEvent(appAttestEvent, parameters: nil)
// Pass the result to the handler
handler(token, error)
}
}
}
3. প্রোভাইডার ফ্যাক্টরি ক্লাস আপডেট করুন
আপনি অ্যাপ অ্যাটেস্ট প্রদানকারীর কাছে টোকেন অনুরোধ ফরোয়ার্ড করার যুক্তি প্রয়োগ করার পরে এবং কিছু অ্যানালিটিক্স ইভেন্ট যোগ করার পরে, আপনাকে MyAppCheckProviderFactory.class
আপডেট করতে হবে যা আপনি অ্যাপ চেক ফর অ্যাপল প্ল্যাটফর্ম কোডল্যাবে তৈরি করেছেন। এই ক্লাসটি সিমুলেটরগুলির জন্য অ্যাপ চেক ডিবাগ প্রদানকারীকে লক্ষ্য করবে এবং অন্যথায় আপনার কাস্টম প্রদানকারীকে লক্ষ্য করবে।
Firebase অ্যাপ চেক ফর অ্যাপল প্ল্যাটফর্ম কোডল্যাবে তৈরি MyAppCheckProviderFactory
ক্লাসে নিম্নলিখিত কোডটি সম্পাদনা করুন:
// MyAppCheckProviderFactory.swift
import Firebase
class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if targetEnvironment(simulator)
// App Attest is not available on simulators.
// Use a debug provider.
let provider = AppCheckDebugProvider(app: app)
// Print only locally generated token to avoid a valid token leak on CI.
print("Firebase App Check debug token: \(provider?.localDebugToken() ?? "" )")
return provider
#else
if #available(iOS 14.0, *) {
// Use your custom App Attest provider on real devices.
return MyAppCheckProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
#endif
}
}
FirebaseApp
কনফিগার করার আগে আপনি AppCheckProviderFactory
সেট করেছেন তা নিশ্চিত করুন:
// DatabaseExampleApp.swift
import SwiftUI
import Firebase
import FirebaseAppCheck
@main
struct DatabaseExampleApp: App {
init() {
AppCheck.setAppCheckProviderFactory(MyAppCheckProviderFactory())
FirebaseApp.configure()
}
// ...
}
4. Firebase কনসোলে একটি দূরবর্তী কনফিগার প্যারামিটার যোগ করুন
আপনি এখন Firebase কনসোলে Remote Config প্যারামিটার AppAttestEnabled যোগ করবেন। আপনার getToken
পদ্ধতির জন্য এই পরামিতি প্রয়োজন।
Firebase কনসোলে একটি রিমোট কনফিগার প্যারামিটার তৈরি করতে:
- আপনার প্রকল্পের জন্য রিমোট কনফিগ খুলুন এবং প্যারামিটার যোগ করুন ক্লিক করুন। যদি এটি আপনার প্রথমবার রিমোট কনফিগারেশন ব্যবহার করে, তাহলে কনফিগারেশন তৈরি করুন ক্লিক করুন।
- প্যারামিটার নাম (কী) ক্ষেত্রে,
AppAttestEnabled
লিখুন। - ডেটা টাইপ ড্রপ-ডাউন থেকে, বুলিয়ান নির্বাচন করুন।
- ডিফল্ট মান ড্রপ-ডাউন থেকে মিথ্যা নির্বাচন করুন।
সংরক্ষণ ক্লিক করার আগে, 10% ব্যবহারকারীর জন্য একটি শর্তসাপেক্ষ মান তৈরি করুন:
- নতুন যোগ করুন > শর্তাধীন মান > নতুন শর্ত তৈরি করুন ক্লিক করুন।
- নাম ক্ষেত্রে, একটি শর্তের নাম লিখুন।
- প্রযোজ্য হলে... এর অধীনে , এলোমেলো শতাংশে ব্যবহারকারী নির্বাচন করুন , <= , এবং তারপর % ক্ষেত্রে 10 লিখুন।
- শর্ত তৈরি করুন ক্লিক করুন।
শর্তসাপেক্ষ মানটিকে সত্যে সেট করুন যাতে অ্যাপ অ্যাটেস্ট আপনার 10% ব্যবহারকারীর কাছে রোল আউট হয়৷
- আপনি যে অবস্থাটি তৈরি করেছেন তার জন্য মানটিকে সত্য হিসাবে সেট করুন।
- Save এ ক্লিক করুন।
আপনার হয়ে গেলে, রিমোট কনফিগার পরিবর্তনগুলি প্রকাশ করুন৷
আপনার ডিভাইসে রোলআউট পরীক্ষা করুন
অ্যাপ কোড পরিবর্তন না করেই আপনার ডিভাইসে বিভিন্ন রিমোট কনফিগার ফ্ল্যাগ মান পরীক্ষা করতে, A/B টেস্টিং টিউটোরিয়াল দিয়ে Firebase রিমোট কনফিগার পরীক্ষা তৈরি করুন অনুসরণ করে AppAttestEnabled প্যারামিটারে একটি পরীক্ষা কনফিগার করুন। টিউটোরিয়াল বিভাগ " একটি পরীক্ষা ডিভাইসে আপনার পরীক্ষা যাচাই করুন " ব্যাখ্যা করে কিভাবে আপনার পরীক্ষার ডিভাইসের জন্য বিভিন্ন মান নির্ধারণ করতে হয়।
আপনার অ্যাপ অ্যাটেস্ট রোলআউটের সাফল্য নিরীক্ষণ করতে Google Analytics ব্যবহার করাই চূড়ান্ত ধাপ।
5. আপনার AppCheck রোলআউটের সাফল্য পর্যালোচনা করুন৷
আপনি Analytics ইভেন্ট ড্যাশবোর্ডে আপনার রোলআউটের সাফল্য পরিমাপ করতে পারেন। AppAttestSuccess এবং AppAttestFailure ইভেন্টের জন্য দেখুন। ড্যাশবোর্ডে ইভেন্টগুলি দেখতে 24 ঘন্টা পর্যন্ত সময় লাগতে পারে৷ বিকল্পভাবে, আপনি ডিবাগিং সক্ষম করতে পারেন এবং ডিবাগ ইভেন্টগুলি আরও দ্রুত দেখতে DebugView ব্যবহার করতে পারেন।
ঐচ্ছিকভাবে, ক্র্যাশ রেট বাড়ানোর জন্য আপনি Crashlytics ড্যাশবোর্ড নিরীক্ষণ করতে পারেন। আপনার অ্যাপে Crashlytics যোগ করার বিষয়ে আরও তথ্যের জন্য, Firebase Crashlytics এর সাথে শুরু করুন দেখুন।
একবার আপনি বেশিরভাগ AppAttestSuccess ইভেন্ট এবং কয়েকটি AppAttestFailure ইভেন্ট দেখতে পেলে, এটি একটি ভাল লক্ষণ যে আপনি রিমোট কনফিগারেশন প্যারামিটার AppAttestEnabled- এ শর্তটি পরিবর্তন করে অ্যাপ অ্যাটেস্ট সক্ষম করা ব্যবহারকারীদের শতাংশ বাড়াতে পারেন।
ঐচ্ছিক: Google Analytics অডিয়েন্সের সুবিধা নিন
আপনি যদি AppAttestEnabled অ্যানালিটিক্স ইভেন্টের আরও বেশি সুবিধা পেতে চান, তাহলে আপনি AppAttestEnabled সত্যে সেট করা ব্যবহারকারীদের ট্র্যাক করার জন্য একটি Analytics অডিয়েন্স তৈরি করতে পারেন।
অ্যাপ অ্যাটেস্ট iOS 14.0 এর সাথে প্রকাশিত হয়েছিল। আপনার কিছু ব্যবহারকারী এই রিলিজে নাও থাকতে পারে, এবং তাই অ্যাপ অ্যাটেস্টের জন্য যোগ্য নয়৷ আপনি এই ব্যবহারকারীদের ট্র্যাক করতে অন্য একটি অ্যানালিটিক্স ইভেন্ট লগ করতে পারেন, তারপর সেই দর্শকদেরকে অন্য একটি প্রমাণীকরণ পদ্ধতির জন্য লক্ষ্য করুন, যেমন DeviceCheck ।
ঐচ্ছিক: ক্র্যাশ নিরীক্ষণ করতে Crashlytics ব্যবহার করুন
রোলআউটের সময় আপনার অ্যাপের স্থিতিশীলতা আরও ভালভাবে বোঝার জন্য, ক্র্যাশ এবং অ-প্রাণ নিরীক্ষণ করতে Firebase Crashlytics ব্যবহার করুন।
6. অভিনন্দন!
আপনি সফলভাবে রিমোট কনফিগারেশনের মাধ্যমে অ্যাপ চেক চালু করেছেন 🎉