Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

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

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

एंड्रॉयड

Android पर, आपको अपने डोमेन के डीप लिंक को पकड़ने के लिए एक नया इंटेंट फ़िल्टर जोड़ना होगा, क्योंकि यदि आपका ऐप इंस्टॉल है तो डायनामिक लिंक आपके डोमेन पर रीडायरेक्ट करेगा। Play Store से डायनामिक लिंक डेटा इंस्टॉल/अपडेट होने के बाद यह आपके ऐप के लिए आवश्यक है और कंटिन्यू बटन पर एक टैप करें। 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>

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

ऐप्पल प्लेटफॉर्म

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

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

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

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

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

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

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

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

    5. अगर आपने अपने Firebase प्रोजेक्ट के लिए एक कस्टम डोमेन सेट किया है, तो 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. वैकल्पिक: आईओएस पेस्टबोर्ड के डायनामिक लिंक एसडीके के उपयोग को अक्षम करें।

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

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

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

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

समाप्त राज्य

यदि एप्लिकेशन को समाप्त कर दिया जाता है, तो FirebaseDynamicLinks.getInitialLink विधि आपको एप्लिकेशन को खोलने वाले डायनामिक लिंक को पुनः प्राप्त करने की अनुमति देती है।

यह एक एसिंक्रोनस अनुरोध है, इसलिए एप्लिकेशन लॉजिक, जैसे नेविगेटर को रेंडर करने से पहले एक लिंक को हैंडल करना समझ में आता है। उदाहरण के लिए, आप इसे main कार्य में संभाल सकते हैं:

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

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  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);
}

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

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

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

पृष्ठभूमि / अग्रभूमि राज्य

जब भी एप्लिकेशन खुला हो, या पृष्ठभूमि में, आप स्ट्रीम हैंडलर का उपयोग करके डायनामिक लिंक ईवेंट सुन सकते हैं। FirebaseDynamicLinks.onLink गेटटर एक Stream देता है जिसमें एक PendingDynamicLinkData है:

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