ज़रूरी शर्तें
शुरू करने से पहले, पक्का करें कि आपने अपने iOS प्रोजेक्ट में Firebase जोड़ा हो.
Firebase और Dynamic Links SDK टूल सेट अप करना
Firebase की डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift Package Manager का इस्तेमाल करें.
Apple प्रोजेक्ट में Firebase SDK टूल जोड़ने के अलग-अलग तरीकों के बारे में जानने के लिए,- Xcode में, अपने ऐप्लिकेशन का प्रोजेक्ट खोलें. इसके बाद, फ़ाइल > पैकेज जोड़ें पर जाएं.
- प्रॉम्प्ट मिलने पर, Firebase Apple प्लैटफ़ॉर्म SDK टूल का रिपॉज़िटरी जोड़ें:
- Dynamic Links लाइब्रेरी चुनें.
- अपने टारगेट की बिल्ड सेटिंग के Other Linker Flags सेक्शन में,
-ObjCफ़्लैग जोड़ें. - Dynamic Links के साथ बेहतर अनुभव पाने के लिए, हमारा सुझाव है कि आप अपने Firebase प्रोजेक्ट में Google Analytics की सुविधा चालू करें. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ें. आपके पास आईडीएफ़ए कलेक्शन के बिना या आईडीएफ़ए कलेक्शन के साथ लाइब्रेरी चुनने का विकल्प होता है. Google Analytics for Firebase SDK टूल में मॉड्यूल के सबसे नए संगठन के बारे में जानने के लिए, अक्सर पूछे जाने वाले सवाल देखें.Google Analytics
- इसके बाद, 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फ़ील्ड खाली है, तो दोबारा जांच करें कि आपने अपना ऐप्लिकेशन आईडी प्रीफ़िक्स डाला है या नहीं. ध्यान दें कि आपका ऐप्लिकेशन आईडी प्रीफ़िक्स, टीम आईडी से अलग हो सकता है. -
ज़रूरी नहीं: iOS के क्लिपबोर्ड का इस्तेमाल करने से रोकने के लिए, Dynamic Links SDK टूल की सुविधा बंद करें.
डिफ़ॉल्ट रूप से, 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 - अपने
UIApplicationDelegateमेंFirebaseCoreमॉड्यूल इंपोर्ट करें. साथ ही, अपने ऐप्लिकेशन के डेलिगेट के इस्तेमाल किए जाने वाले अन्य 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 का इस्तेमाल किया जा रहा है, तो आपको एक ऐप्लिकेशन डेलिगेट बनाना होगा. साथ ही, इसे
अपने
Appस्ट्रक्चर सेUIApplicationDelegateAdaptorयाNSApplicationDelegateAdaptorके ज़रिए जोड़ना होगा. आपको ऐप्लिकेशन डेलिगेट स्विज़लिंग की सुविधा भी बंद करनी होगी. ज़्यादा जानकारी के लिए, 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'surlको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; }