फ़्लटर ऐप में फ़ायरबेस डायनेमिक लिंक प्राप्त करें

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

  1. यदि आपने पहले से ऐसा नहीं किया है तो फ़्लटर के लिए फ़ायरबेस एसडीके स्थापित करें और प्रारंभ करें

  2. अपने फ़्लटर प्रोजेक्ट की रूट निर्देशिका से, डायनामिक लिंक प्लगइन स्थापित करने के लिए निम्न कमांड चलाएँ:

    flutter pub add firebase_dynamic_links
    
  3. यदि आप एक एंड्रॉइड ऐप बना रहे हैं, तो फायरबेस कंसोल का प्रोजेक्ट सेटिंग पेज खोलें और सुनिश्चित करें कि आपने अपनी SHA-1 साइनिंग कुंजी निर्दिष्ट कर दी है। यदि आप ऐप लिंक का उपयोग करते हैं, तो अपनी SHA-256 कुंजी भी निर्दिष्ट करें।

प्लेटफार्म एकीकरण

जिन प्लेटफ़ॉर्म के लिए आप अपना ऐप बना रहे हैं, उनके लिए निम्नलिखित प्लेटफ़ॉर्म एकीकरण चरणों को पूरा करें।

एंड्रॉयड

एंड्रॉइड पर, आपको अपने डोमेन के लिए एक नया इंटेंट फ़िल्टर कैच डीप लिंक जोड़ना होगा, क्योंकि यदि आपका ऐप इंस्टॉल है तो डायनेमिक लिंक आपके डोमेन पर रीडायरेक्ट करेगा। प्ले स्टोर से इंस्टॉल/अपडेट होने और जारी रखें बटन पर टैप करने के बाद आपके ऐप को डायनामिक लिंक डेटा प्राप्त करने के लिए यह आवश्यक है। AndroidManifest.xml में:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>

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

अगला कदम यह सुनिश्चित करना है कि हस्ताक्षर प्रमाणपत्र का SHA-256 फिंगरप्रिंट ऐप के लिए फायरबेस कंसोल में पंजीकृत है। आप अपने ग्राहक को प्रमाणित करने वाले पृष्ठ पर अपने SHA-256 फ़िंगरप्रिंट को पुनः प्राप्त करने के तरीके के बारे में अधिक विवरण पा सकते हैं।

एप्पल प्लेटफार्म

  1. यदि आपके पास पहले से कोई Apple डेवलपर खाता नहीं है तो एक Apple डेवलपर खाता बनाएँ

  2. फायरबेस कंसोल के प्रोजेक्ट सेटिंग पेज पर, सुनिश्चित करें कि आपका iOS ऐप आपके ऐप स्टोर आईडी और टीम आईडी के साथ सही ढंग से कॉन्फ़िगर किया गया है।

  3. Apple डेवलपर साइट पर, एसोसिएटेड डोमेन क्षमता सक्षम करके अपने ऐप के लिए एक प्रोविज़निंग प्रोफ़ाइल बनाएं।

  4. Xcode में, निम्न कार्य करें:

    1. लक्ष्य शीर्षक के अंतर्गत अपना ऐप खोलें।

    2. हस्ताक्षर और क्षमताएं पृष्ठ पर, सुनिश्चित करें कि आपकी टीम पंजीकृत है, और आपकी प्रावधान प्रोफ़ाइल सेट है।

    3. हस्ताक्षर और क्षमताएं पृष्ठ पर, एसोसिएटेड डोमेन सक्षम करें और निम्नलिखित को एसोसिएटेड डोमेन सूची में जोड़ें (उदाहरण को अपने डोमेन से बदलें):

      applinks:example.page.link
      
    4. जानकारी पृष्ठ पर, अपने प्रोजेक्ट में एक URL प्रकार जोड़ें। यूआरएल स्कीम फ़ील्ड को अपने ऐप की बंडल आईडी पर सेट करें। (पहचानकर्ता Bundle ID या जो भी आप चाहें, हो सकता है।)

    5. यदि आपने अपने फायरबेस प्रोजेक्ट के लिए एक कस्टम डोमेन सेट किया है, तो FirebaseDynamicLinksCustomDomains कुंजी का उपयोग करके अपने iOS प्रोजेक्ट की Info.plist फ़ाइल में डायनेमिक लिंक URL उपसर्ग जोड़ें।

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. वैकल्पिक: iOS पेस्टबोर्ड के डायनामिक लिंक SDK के उपयोग को अक्षम करें।

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

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

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

आपके एप्लिकेशन में डायनामिक लिंक को संभालने के लिए, दो परिदृश्यों को लागू करने की आवश्यकता होती है।

समाप्त अवस्था

निम्नलिखित विधियाँ सेट करें:

  1. FirebaseDynamicLinks.getInitialLink - एक Future<PendingDynamicLinkData?> लौटाता है
  2. FirebaseDynamicLinks.onLink - इवेंट हैंडलर जो PendingDynamicLinkData युक्त Stream लौटाता है PendingDynamicLinkData?

एंड्रॉइड को हमेशा समाप्त स्थिति से FirebaseDynamicLinks.getInitialLink के माध्यम से लिंक प्राप्त होगा, लेकिन iOS पर, इसकी गारंटी नहीं है। इसलिए, यह सुनिश्चित करने के लिए कि आपके एप्लिकेशन को लिंक प्राप्त हो, इन दोनों को निम्नलिखित क्रम में स्थापित करना उचित है:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Check if you received the link via `getInitialLink` first
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  if (initialLink != null) {
    final Uri deepLink = initialLink.link;
    // Example of using the dynamic link to push the user to a different screen
    Navigator.pushNamed(context, deepLink.path);
  }

  FirebaseDynamicLinks.instance.onLink.listen(
        (pendingDynamicLinkData) {
          // Set up the `onLink` event listener next as it may be received here
          if (pendingDynamicLinkData != null) {
            final Uri deepLink = pendingDynamicLinkData.link;
            // Example of using the dynamic link to push the user to a different screen
            Navigator.pushNamed(context, deepLink.path);
          }
        },
      );

  runApp(MyApp(initialLink));
}

अपने एप्लिकेशन तर्क के भीतर, आप यह जांच सकते हैं कि कोई लिंक संभाला गया था या नहीं और एक क्रिया निष्पादित करें, उदाहरण के लिए:

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

पृष्ठभूमि/अग्रभूमि स्थिति

जब एप्लिकेशन खुला हो, या पृष्ठभूमि में हो, तो FirebaseDynamicLinks.onLink गेटर का उपयोग करें:

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});

वैकल्पिक रूप से, यदि आप यह पहचानना चाहते हैं कि एप्लिकेशन को खोलने के लिए सटीक डायनेमिक लिंक का उपयोग किया गया था, तो इसे getDynamicLink विधि में पास करें:

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

iOS पर डायनामिक लिंक का परीक्षण करने के लिए, यह आवश्यक है कि आप एक वास्तविक डिवाइस का उपयोग करें। यदि किसी समाप्त (यानी ऐप को स्वाइप करके बंद कर दिया गया है) ऐप स्थिति से डायनामिक लिंक का परीक्षण कर रहे हैं, तो आपको ऐप को रिलीज़ मोड (यानी flutter run --release ) में चलाने की भी आवश्यकता होगी।