আপনার তৈরি করা Firebase Dynamic Links পেতে হলে, আপনাকে অবশ্যই আপনার অ্যাপে Dynamic Links SDK অন্তর্ভুক্ত করতে হবে এবং অ্যাপ লোড হওয়ার সময় Dynamic Link এ পাঠানো ডেটা পাওয়ার জন্য handleUniversalLink: এবং dynamicLinkFromCustomSchemeURL: মেথডগুলো কল করতে হবে।
পূর্বশর্ত
শুরু করার আগে, আপনার iOS প্রজেক্টে Firebase যোগ করে নিতে ভুলবেন না।
Firebase এবং Dynamic Links SDK সেট আপ করুন
ফায়ারবেস ডিপেন্ডেন্সিগুলো ইনস্টল ও পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
- Xcode-এ আপনার অ্যাপ প্রজেক্টটি খুলে, File > Add Packages- এ যান।
- অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK রিপোজিটরিটি যোগ করুন:
- Dynamic Links লাইব্রেরিটি নির্বাচন করুন।
- আপনার টার্গেটের বিল্ড সেটিংসের ' Other Linker Flags' সেকশনে
-ObjCফ্ল্যাগটি যোগ করুন। - Dynamic Links এর সর্বোত্তম অভিজ্ঞতার জন্য, আমরা আপনার ফায়ারবেস প্রজেক্টে Google Analytics সক্রিয় করার এবং আপনার অ্যাপে গুগল অ্যানালিটিক্স-এর জন্য ফায়ারবেস এসডিকে যোগ করার পরামর্শ দিই। আপনি আইডিএফএ কালেকশন ছাড়া অথবা আইডিএফএ কালেকশন সহ লাইব্রেরিটি বেছে নিতে পারেন। Google Analytics ফর ফায়ারবেস এসডিকে-তে মডিউলগুলির সর্বশেষ বিন্যাস সম্পর্কে জানতে আমাদের প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।
- কাজ শেষ হলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার ডিপেন্ডেন্সিগুলো রিজলভ ও ডাউনলোড করা শুরু করবে।
https://github.com/firebase/firebase-ios-sdk.git
এখন, কিছু কনফিগারেশন ধাপ সম্পন্ন করুন:
- Firebase কনসোলে , Dynamic Links সেকশনটি খুলুন। অনুরোধ করা হলে পরিষেবার শর্তাবলী গ্রহণ করুন।
আপনার অ্যাপের সেটিংসে আপনার অ্যাপের অ্যাপ স্টোর আইডি এবং অ্যাপ আইডি প্রিফিক্স উল্লেখ করা আছে কিনা তা নিশ্চিত করুন। আপনার অ্যাপের সেটিংস দেখতে ও সম্পাদনা করতে, আপনার Firebase প্রজেক্টের সেটিংস পৃষ্ঠায় যান এবং আপনার iOS অ্যাপটি নির্বাচন করুন।
আপনার iOS অ্যাপে Dynamic Links ব্যবহার করার জন্য আপনার Firebase প্রজেক্টটি সঠিকভাবে কনফিগার করা আছে কিনা, তা নিম্নলিখিত URL-টি খুলে নিশ্চিত করতে পারেন:
https://your_dynamic_links_domain/apple-app-site-association
আপনার অ্যাপটি সংযুক্ত থাকলে,
apple-app-site-associationফাইলটিতে আপনার অ্যাপের অ্যাপ আইডি প্রিফিক্স এবং বান্ডেল আইডির একটি রেফারেন্স থাকে। উদাহরণস্বরূপ:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}যদি
detailsক্ষেত্রটি খালি থাকে, তবে আপনি আপনার অ্যাপ আইডি প্রিফিক্স উল্লেখ করেছেন কিনা তা পুনরায় যাচাই করুন। মনে রাখবেন যে আপনার অ্যাপ আইডি প্রিফিক্স আপনার টিম আইডির মতো নাও হতে পারে।ঐচ্ছিক : Dynamic Links এসডিকে-এর আইওএস পেস্টবোর্ড ব্যবহার নিষ্ক্রিয় করুন।
ডিফল্টরূপে, Dynamic Links এসডিকে পোস্ট-ইনস্টল ডিপ লিঙ্কের নির্ভরযোগ্যতা উন্নত করতে পেস্টবোর্ড ব্যবহার করে। পেস্টবোর্ড ব্যবহারের মাধ্যমে, Dynamic Links এটা নিশ্চিত করতে পারে যে, যখন কোনো ব্যবহারকারী একটি Dynamic Link খোলেন কিন্তু তার আগে আপনার অ্যাপটি ইনস্টল করার প্রয়োজন হয়, তখন ইনস্টলেশনের পর প্রথমবার অ্যাপটি খোলার সময় তিনি যেন সরাসরি মূল লিঙ্ক করা কন্টেন্টে যেতে পারেন।
এর অসুবিধা হলো, iOS 14 এবং এর পরবর্তী সংস্করণগুলোতে পেস্টবোর্ড ব্যবহার করলে একটি নোটিফিকেশন চালু হয়। ফলে, ব্যবহারকারীরা যখন প্রথমবার আপনার অ্যাপটি খুলবেন, তখন পেস্টবোর্ডে কোনো URL থাকলে তারা একটি নোটিফিকেশন দেখতে পাবেন যে আপনার অ্যাপটি পেস্টবোর্ডটি অ্যাক্সেস করেছে, যা বিভ্রান্তির কারণ হতে পারে।
এই আচরণটি নিষ্ক্রিয় করতে, আপনার Xcode প্রজেক্টের
Info.plistফাইলটি সম্পাদনা করুন এবংFirebaseDeepLinkPasteboardRetrievalEnabledকী-টির মানNOসেট করুন।
আপনার অ্যাপে Dynamic Links খুলুন
- আপনার অ্যাপের Xcode প্রজেক্টের Info ট্যাবে, Dynamic Links জন্য একটি নতুন URL type তৈরি করুন। Identifier ফিল্ডটিকে একটি অনন্য মানে এবং URL scheme ফিল্ডটিকে আপনার বান্ডেল আইডেন্টিফায়ারে সেট করুন, যা Dynamic Links দ্বারা ব্যবহৃত ডিফল্ট URL স্কিম।
- আপনার অ্যাপের Xcode প্রজেক্টের Capabilities ট্যাবে, Associated Domains সক্রিয় করুন এবং Associated Domains তালিকায় নিম্নলিখিতগুলি যোগ করুন:
applinks:your_dynamic_links_domain
- আপনি যদি সম্পূর্ণ কাস্টম ডোমেন সহ Dynamic Links পেতে চান, তাহলে আপনার Xcode প্রজেক্টের
Info.plistফাইলেFirebaseDynamicLinksCustomDomainsনামে একটি কী তৈরি করুন এবং এটিকে আপনার অ্যাপের Dynamic Links URL প্রিফিক্সগুলিতে সেট করুন। উদাহরণস্বরূপ:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - আপনার
UIApplicationDelegateএFirebaseCoreমডিউলটি ইম্পোর্ট করুন, সেইসাথে আপনার অ্যাপ ডেলিগেট দ্বারা ব্যবহৃত অন্য যেকোনো Firebase মডিউলও ইম্পোর্ট করুন। উদাহরণস্বরূপ, Cloud Firestore এবং Authentication ব্যবহার করতে:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
সুইফট
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
উদ্দেশ্য-সি
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- আপনার অ্যাপ ডেলিগেটের
application(_:didFinishLaunchingWithOptions:)মেথডে একটিFirebaseAppশেয়ার্ড ইনস্ট্যান্স কনফিগার করুন:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
সুইফট
// Use Firebase library to configure APIs FirebaseApp.configure()
উদ্দেশ্য-সি
// Use Firebase library to configure APIs [FIRApp configure];
- আপনি যদি SwiftUI ব্যবহার করেন, তাহলে আপনাকে অবশ্যই একটি অ্যাপ্লিকেশন ডেলিগেট তৈরি করতে হবে এবং
UIApplicationDelegateAdaptorবাNSApplicationDelegateAdaptorমাধ্যমে সেটিকে আপনারAppstruct-এর সাথে সংযুক্ত করতে হবে। আপনাকে অবশ্যই অ্যাপ ডেলিগেট সুইজলিং নিষ্ক্রিয় করতে হবে। আরও তথ্যের জন্য, SwiftUI নির্দেশাবলী দেখুন।SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- এরপরে,
application:continueUserActivity:restorationHandler:মেথডে, অ্যাপটি আগে থেকেই ইনস্টল করা থাকলে ইউনিভার্সাল লিঙ্ক হিসেবে প্রাপ্ত লিঙ্কগুলি পরিচালনা করুন:সুইফট
দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, tvOS বা watchOS-এ উপলব্ধ নয়।func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
উদ্দেশ্য-সি
দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, tvOS বা watchOS-এ উপলব্ধ নয়।- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id
> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; } - অবশেষে,
application:openURL:options:মেথডে আপনার অ্যাপের কাস্টম ইউআরএল স্কিমের মাধ্যমে প্রাপ্ত লিঙ্কগুলো পরিচালনা করুন। ইনস্টলেশনের পর আপনার অ্যাপটি প্রথমবার খোলার সময় এই মেথডটি কল করা হয়।আপনার অ্যাপটি প্রথমবার চালু করার সময় যদি Dynamic Link খুঁজে না পাওয়া যায়, তাহলে এই মেথডটি কল করা হবে এবং
DynamicLinkএরurlnilসেট করা থাকবে, যা নির্দেশ করে যে SDK একটি উপযুক্ত অপেক্ষাধীন Dynamic Link খুঁজে পেতে ব্যর্থ হয়েছে।সুইফট
দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, tvOS বা watchOS-এ উপলব্ধ নয়।@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
উদ্দেশ্য-সি
দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, tvOS বা watchOS-এ উপলব্ধ নয়।- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
*)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }