Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

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

    flutter pub add firebase_dynamic_links
    
  3. यदि आप एक Android ऐप बना रहे हैं, तो Firebase कंसोल का प्रोजेक्ट सेटिंग पृष्ठ खोलें और सुनिश्चित करें कि आपने अपनी 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 फ़िंगरप्रिंट ऐप के लिए Firebase कंसोल में पंजीकृत है। आप अपने क्लाइंट पृष्ठ को प्रमाणित करने पर अपने SHA-256 फ़िंगरप्रिंट को पुनर्प्राप्त करने के तरीके के बारे में अधिक विवरण प्राप्त कर सकते हैं।

Apple प्लेटफॉर्म

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

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

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

  4. एक्सकोड में, निम्न कार्य करें:

    1. TARGETS हेडर के तहत अपना ऐप खोलें।

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

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

      applinks:example.page.link
      
    4. जानकारी पृष्ठ पर, अपने प्रोजेक्ट में URL प्रकार जोड़ें। 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. वैकल्पिक: आईओएस पेस्टबोर्ड के गतिशील लिंक एसडीके के उपयोग को अक्षम करें।

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

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

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

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

समाप्त राज्य

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

  1. FirebaseDynamicLinks.getInitialLink - एक Future<PendingDynamicLinkData?> लौटाता है
  2. FirebaseDynamicLinks.onLink - ईवेंट हैंडलर जो एक लंबित डायनामिकलिंकडेटा वाली Stream लौटाता है PendingDynamicLinkData?

Android हमेशा समाप्त स्थिति से 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 ) में चलाने की आवश्यकता होगी।