आपके बनाए गए Firebase Dynamic Links को पाने के लिए, आपको अपने ऐप्लिकेशन में Dynamic Links SDK टूल को शामिल करना होगा. साथ ही, Dynamic Link में पास किए गए डेटा को पाने के लिए, ऐप्लिकेशन लोड होने पर handleUniversalLink: और dynamicLinkFromCustomSchemeURL: तरीकों को कॉल करना होगा.
ज़रूरी शर्तें
शुरू करने से पहले, अपने iOS प्रोजेक्ट में Firebase जोड़ना न भूलें.
Firebase और Dynamic Links SDK टूल सेट अप करना
Firebase डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift Package Manager का इस्तेमाल करें.
- Xcode में, अपना ऐप्लिकेशन प्रोजेक्ट खोलें. इसके बाद, File > Add Packages पर जाएं.
- प्रॉम्प्ट मिलने पर, Firebase Apple प्लैटफ़ॉर्म SDK टूल की रिपॉज़िटरी जोड़ें:
- Dynamic Links लाइब्रेरी चुनें.
- अपने टारगेट की बिल्ड सेटिंग के अन्य लिंकर फ़्लैग सेक्शन में,
-ObjCफ़्लैग जोड़ें. - Dynamic Links का बेहतर अनुभव पाने के लिए, हमारा सुझाव है कि आप अपने Firebase प्रोजेक्ट में Google Analytics को चालू करें. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ें. आपके पास आईडीएफ़ए कलेक्शन के बिना या आईडीएफ़ए कलेक्शन वाली लाइब्रेरी चुनने का विकल्प है. Google Analytics for Firebase SDK में मॉड्यूल के नए संगठन के बारे में अक्सर पूछे जाने वाले सवाल देखें.
- इसके बाद, Xcode बैकग्राउंड में आपकी डिपेंडेंसी से जुड़ी समस्या को हल करना और उन्हें डाउनलोड करना शुरू कर देगा.
https://github.com/firebase/firebase-ios-sdk.git
अब, कॉन्फ़िगरेशन के कुछ चरण पूरे करें:
- Firebase कंसोल में, Dynamic Links सेक्शन खोलें. अगर आपसे सेवा की शर्तें स्वीकार करने के लिए कहा जाए, तो उन्हें स्वीकार करें.
-
पक्का करें कि आपके ऐप्लिकेशन की सेटिंग में, ऐप्लिकेशन का App Store आईडी और ऐप्लिकेशन आईडी का प्रीफ़िक्स दिया गया हो. अपने ऐप्लिकेशन की सेटिंग देखने और उनमें बदलाव करने के लिए, अपने Firebase प्रोजेक्ट के सेटिंग पेज पर जाएं और अपना iOS ऐप्लिकेशन चुनें.
यह पुष्टि की जा सकती है कि आपके Firebase प्रोजेक्ट को आपके iOS ऐप्लिकेशन में Dynamic Links का इस्तेमाल करने के लिए सही तरीके से कॉन्फ़िगर किया गया है. इसके लिए, यह यूआरएल खोलें:
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 SDK टूल के लिए, iOS पेस्टबोर्ड का इस्तेमाल बंद करें.
डिफ़ॉल्ट रूप से, Dynamic Links SDK टूल, पेस्टबोर्ड का इस्तेमाल करता है, ताकि इंस्टॉल करने के बाद डीप लिंक ज़्यादा भरोसेमंद तरीके से काम कर सकें. पेस्टबोर्ड का इस्तेमाल करके, Dynamic Links यह पक्का कर सकता है कि जब कोई उपयोगकर्ता Dynamic Link को खोलता है, लेकिन उसे पहले आपका ऐप्लिकेशन इंस्टॉल करना पड़ता है, तो उपयोगकर्ता इंस्टॉल करने के बाद पहली बार ऐप्लिकेशन खोलने पर, लिंक किए गए ओरिजनल कॉन्टेंट पर तुरंत जा सकता है.
इसका नुकसान यह है कि पेस्टबोर्ड का इस्तेमाल करने पर, iOS 14 और इसके बाद के वर्शन पर सूचना ट्रिगर होती है. इसलिए, जब उपयोगकर्ता पहली बार आपका ऐप्लिकेशन खोलते हैं, तो अगर पेस्टबोर्ड में कोई यूआरएल मौजूद है, तो उन्हें एक सूचना दिखेगी कि आपके ऐप्लिकेशन ने पेस्टबोर्ड को ऐक्सेस किया है. इससे भ्रम की स्थिति पैदा हो सकती है.
इस सुविधा को बंद करने के लिए, अपने Xcode प्रोजेक्ट की
Info.plistफ़ाइल में बदलाव करें. इसके बाद,FirebaseDeepLinkPasteboardRetrievalEnabledकुंजी कोNOपर सेट करें.
अपने ऐप्लिकेशन में Dynamic Links खोलें
- अपने ऐप्लिकेशन के Xcode प्रोजेक्ट के जानकारी टैब में, Dynamic Links के लिए इस्तेमाल किया जाने वाला एक नया यूआरएल टाइप बनाएं. आइडेंटिफ़ायर फ़ील्ड को किसी यूनीक वैल्यू पर सेट करें. साथ ही, यूआरएल स्कीम फ़ील्ड को अपने बंडल आइडेंटिफ़ायर पर सेट करें. यह Dynamic Links की ओर से इस्तेमाल की जाने वाली डिफ़ॉल्ट यूआरएल स्कीम है.
- अपने ऐप्लिकेशन के Xcode प्रोजेक्ट के Capabilities टैब में,
Associated Domains को चालू करें. इसके बाद, Associated
Domains की सूची में यह जोड़ें:
applinks:your_dynamic_links_domain
- अगर आपको पूरी तरह से कस्टम डोमेन के साथ Dynamic Links पाने हैं, तो अपने Xcode प्रोजेक्ट की
Info.plistफ़ाइल में,FirebaseDynamicLinksCustomDomainsनाम की एक कुंजी बनाएं. इसके बाद, इसे अपने ऐप्लिकेशन के Dynamic Links यूआरएल प्रीफ़िक्स पर सेट करें. उदाहरण के लिए:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share FirebaseCoreमॉड्यूल को अपनेUIApplicationDelegateमें इंपोर्ट करें. साथ ही, ऐसे अन्य Firebase मॉड्यूल भी इंपोर्ट करें जिनका इस्तेमाल आपका ऐप्लिकेशन डेलिगेट करता है. उदाहरण के लिए, Cloud Firestore और Authentication का इस्तेमाल करने के लिए:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- अपने ऐप्लिकेशन डेलिगेट के
application(_:didFinishLaunchingWithOptions:)तरीके में, शेयर किया गयाFirebaseAppइंस्टेंस कॉन्फ़िगर करें:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- अगर SwiftUI का इस्तेमाल किया जा रहा है, तो आपको एक ऐप्लिकेशन डेलिगेट बनाना होगा और उसे
UIApplicationDelegateAdaptorयाNSApplicationDelegateAdaptorके ज़रिए अपनेAppस्ट्रक्चर से अटैच करना होगा. आपको ऐप्लिकेशन डेलिगेट स्विज़लिंग को भी बंद करना होगा. ज़्यादा जानकारी के लिए, 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:तरीके में, ऐप्लिकेशन पहले से इंस्टॉल होने पर यूनिवर्सल लिंक के तौर पर मिले लिंक मैनेज करें:Swift
ध्यान दें: यह प्रॉडक्ट 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 }
Objective-C
ध्यान दें: यह प्रॉडक्ट 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केurlके साथ कॉल किया जाएगा. इसेnilपर सेट किया जाएगा. इससे पता चलता है कि SDK टूल को, मैच होने वाला कोई Dynamic Link नहीं मिला.Swift
ध्यान दें: यह प्रॉडक्ट 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 }
Objective-C
ध्यान दें: यह प्रॉडक्ट 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; }