आईओएस पर डायनामिक लिंक प्राप्त करें

आपके द्वारा बनाए गए फायरबेस डायनामिक लिंक प्राप्त करने के लिए, आपको अपने ऐप में डायनामिक लिंक एसडीके शामिल करना होगा और जब आपका ऐप डायनामिक लिंक में डेटा पास करने के लिए लोड होता है तो handleUniversalLink: और dynamicLinkFromCustomSchemeURL: विधियों को कॉल करना होगा।

आवश्यक शर्तें

शुरू करने से पहले, अपने iOS प्रोजेक्ट में Firebase जोड़ना सुनिश्चित करें।

फायरबेस निर्भरता को स्थापित और प्रबंधित करने के लिए स्विफ्ट पैकेज मैनेजर का उपयोग करें।

  1. Xcode में, अपना ऐप प्रोजेक्ट खुला होने पर, फ़ाइल > पैकेज जोड़ें पर नेविगेट करें।
  2. संकेत मिलने पर, Firebase Apple प्लेटफ़ॉर्म SDK रिपॉजिटरी जोड़ें:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. डायनामिक लिंक लाइब्रेरी चुनें.
  5. अपने लक्ष्य की बिल्ड सेटिंग्स के अन्य लिंकर फ़्लैग अनुभाग में -ObjC फ़्लैग जोड़ें।
  6. डायनेमिक लिंक के साथ इष्टतम अनुभव के लिए, हम आपके फायरबेस प्रोजेक्ट में Google Analytics को सक्षम करने और अपने ऐप में Google Analytics के लिए फायरबेस एसडीके जोड़ने की सलाह देते हैं। आप या तो आईडीएफए संग्रह के बिना या आईडीएफए संग्रह के साथ लाइब्रेरी का चयन कर सकते हैं।
  7. समाप्त होने पर, Xcode स्वचालित रूप से पृष्ठभूमि में आपकी निर्भरता को हल करना और डाउनलोड करना शुरू कर देगा।

अब, कुछ कॉन्फ़िगरेशन चरण निष्पादित करें:

  1. फायरबेस कंसोल में, डायनेमिक लिंक अनुभाग खोलें। यदि आपको ऐसा करने के लिए कहा जाए तो सेवा की शर्तों को स्वीकार करें।
  2. सुनिश्चित करें कि आपके ऐप की ऐप स्टोर आईडी और आपकी ऐप आईडी उपसर्ग आपके ऐप की सेटिंग में निर्दिष्ट है। अपने ऐप की सेटिंग देखने और संपादित करने के लिए, अपने फायरबेस प्रोजेक्ट के सेटिंग पृष्ठ पर जाएं और अपना iOS ऐप चुनें।

    आप निम्नलिखित URL खोलकर पुष्टि कर सकते हैं कि आपका फायरबेस प्रोजेक्ट आपके iOS ऐप में डायनामिक लिंक का उपयोग करने के लिए ठीक से कॉन्फ़िगर किया गया है:

    https://your_dynamic_links_domain/apple-app-site-association

    यदि आपका ऐप कनेक्ट है, apple-app-site-association फ़ाइल में आपके ऐप के ऐप आईडी उपसर्ग और बंडल आईडी का संदर्भ होता है। उदाहरण के लिए:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}

    यदि details फ़ील्ड खाली है, तो दोबारा जांचें कि आपने अपना ऐप आईडी उपसर्ग निर्दिष्ट किया है। ध्यान दें कि आपका ऐप आईडी उपसर्ग आपकी टीम आईडी के समान नहीं हो सकता है।

  3. वैकल्पिक : iOS पेस्टबोर्ड के डायनामिक लिंक SDK के उपयोग को अक्षम करें।

    डिफ़ॉल्ट रूप से, डायनामिक लिंक एसडीके पोस्ट-इंस्टॉल डीप लिंक की विश्वसनीयता में सुधार करने के लिए पेस्टबोर्ड का उपयोग करता है। पेस्टबोर्ड का उपयोग करके, डायनेमिक लिंक यह सुनिश्चित कर सकता है कि जब कोई उपयोगकर्ता डायनेमिक लिंक खोलता है, लेकिन उसे पहले आपका ऐप इंस्टॉल करना होता है, तो इंस्टॉलेशन के बाद पहली बार ऐप खोलने पर उपयोगकर्ता तुरंत मूल लिंक की गई सामग्री पर जा सकता है।

    इसका नकारात्मक पक्ष यह है कि पेस्टबोर्ड का उपयोग iOS 14 और बाद के संस्करण पर एक अधिसूचना ट्रिगर करता है। इसलिए, जब उपयोगकर्ता पहली बार आपका ऐप खोलते हैं, यदि पेस्टबोर्ड में एक यूआरएल है, तो उन्हें एक अधिसूचना दिखाई देगी कि आपके ऐप ने पेस्टबोर्ड तक पहुंच बनाई है, जिससे भ्रम हो सकता है।

    इस व्यवहार को अक्षम करने के लिए, अपने Xcode प्रोजेक्ट की Info.plist फ़ाइल को संपादित करें और FirebaseDeepLinkPasteboardRetrievalEnabled कुंजी को NO पर सेट करें।

  1. अपने ऐप के Xcode प्रोजेक्ट के जानकारी टैब में, डायनामिक लिंक के लिए उपयोग करने के लिए एक नया URL प्रकार बनाएं। पहचानकर्ता फ़ील्ड को एक अद्वितीय मान पर सेट करें और URL योजना फ़ील्ड को अपना बंडल पहचानकर्ता बनाएं, जो कि डायनामिक लिंक द्वारा उपयोग की जाने वाली डिफ़ॉल्ट URL योजना है।
  2. अपने ऐप के Xcode प्रोजेक्ट की क्षमताएं टैब में, एसोसिएटेड डोमेन को सक्षम करें और निम्नलिखित को एसोसिएटेड डोमेन सूची में जोड़ें:
    applinks:your_dynamic_links_domain
  3. यदि आप पूरी तरह से कस्टम डोमेन के साथ डायनामिक लिंक प्राप्त करना चाहते हैं, तो अपने Xcode प्रोजेक्ट की Info.plist फ़ाइल में, FirebaseDynamicLinksCustomDomains नामक एक कुंजी बनाएं और इसे अपने ऐप के डायनामिक लिंक URL उपसर्गों पर सेट करें। उदाहरण के लिए:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. अपने UIApplicationDelegate में FirebaseCore मॉड्यूल को आयात करें, साथ ही आपके ऐप प्रतिनिधि द्वारा उपयोग किए जाने वाले किसी भी अन्य Firebase मॉड्यूल को आयात करें। उदाहरण के लिए, क्लाउड फायरस्टोर और प्रमाणीकरण का उपयोग करने के लिए:

    स्विफ्टयूआई

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    तीव्र

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    उद्देश्य सी

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  5. अपने ऐप प्रतिनिधि के application(_:didFinishLaunchingWithOptions:) विधि में FirebaseApp साझा किए गए इंस्टेंस को कॉन्फ़िगर करें:

    स्विफ्टयूआई

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    तीव्र

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    उद्देश्य सी

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. यदि आप स्विफ्टयूआई का उपयोग कर रहे हैं, तो आपको एक एप्लिकेशन प्रतिनिधि बनाना होगा और इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के माध्यम से अपने App स्ट्रक्चर में संलग्न करना होगा। आपको ऐप डेलीगेट स्विज़लिंग को भी अक्षम करना होगा। अधिक जानकारी के लिए स्विफ्टयूआई निर्देश देखें।

    स्विफ्टयूआई

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  7. इसके बाद, 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<UIUserActivityRestoring>> *_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;
    }
  8. अंत में, application:openURL:options: अपने ऐप की कस्टम यूआरएल योजना के माध्यम से प्राप्त लिंक को संभालें। यह विधि तब कॉल की जाती है जब आपका ऐप इंस्टॉलेशन के बाद पहली बार खोला जाता है।

    यदि आपके ऐप के पहले लॉन्च पर डायनामिक लिंक नहीं मिलता है, तो इस विधि को DynamicLink के url nil पर सेट करके कॉल किया जाएगा, जो दर्शाता है कि एसडीके एक मिलान लंबित डायनामिक लिंक ढूंढने में विफल रहा है।

    तीव्र

    नोट: यह उत्पाद 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<NSString *, id> *)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;
    }