Flutter ऐप्लिकेशन में Firebase डाइनैमिक लिंक पाएं

अपने बनाए गए Firebase के डाइनैमिक लिंक पाने के लिए, आपको अपने ऐप्लिकेशन में डाइनैमिक लिंक SDK टूल शामिल करना होगा और FirebaseDynamicLinks.getDynamicLink() तरीका, जब आपका ऐप्लिकेशन डाइनैमिक लिंक में डेटा पास करना.

  1. Flutter के लिए Firebase SDK टूल को इंस्टॉल और शुरू करना पहले से नहीं किया है.

  2. अपने Flutter प्रोजेक्ट की रूट डायरेक्ट्री से, नीचे दिए गए काम करें कमांड:

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

प्लैटफ़ॉर्म इंटिग्रेशन

आप जिन प्लैटफ़ॉर्म पर हैं उनके लिए, नीचे दिए गए प्लैटफ़ॉर्म इंटिग्रेशन के चरणों को पूरा करें आपका ऐप्लिकेशन बनाने में मदद मिलती है.

Android

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>

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

अगले चरण में यह पक्का किया जाता है कि साइनिंग सर्टिफ़िकेट का SHA-256 फ़िंगरप्रिंट Firebase कंसोल में रजिस्टर हो ऐप के लिए. अपने SHA-256 फ़िंगरप्रिंट को वापस पाने के तरीके के बारे में ज़्यादा जानकारी के लिए, अपने क्लाइंट की पुष्टि करना पेज.

Apple के प्लैटफ़ॉर्म

  1. Apple डेवलपर खाता बनाना अगर आपके पास पहले से कोई AdSense खाता नहीं है, तो

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

  3. Apple Developer साइट पर, अपने ऐप्लिकेशन के लिए प्रावधान करने वाली प्रोफ़ाइल बनाएं इससे जुड़े डोमेन की सुविधा चालू हो.

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

    1. टारगेट हेडर में अपना ऐप्लिकेशन खोलें.

    2. साइन इन करने पर & क्षमताओं वाले पेज पर जाकर, पक्का करें कि आपकी टीम रजिस्टर हो, और आपकी प्रॉविज़निंग प्रोफ़ाइल सेट हो गई है.

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

      applinks:example.page.link
      
    4. जानकारी वाले पेज पर, अपने प्रोजेक्ट का यूआरएल टाइप जोड़ें. यूआरएल स्कीम सेट करना फ़ील्ड में वैल्यू डालें. (आइडेंटिफ़ायर Bundle ID या जो भी आप चाहें.)

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

      <?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 पेस्टबोर्ड का इस्तेमाल बंद करें.

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

      इसका नकारात्मक पहलू यह है कि पेस्टबोर्ड का उपयोग iOS 14 और उसके बाद के वर्शन पर सूचना मिलेगी. इसलिए, जब उपयोगकर्ता पहली बार आपके ऐप का इस्तेमाल कर रहे हैं, तो अगर पेस्टबोर्ड में कोई डायनैमिक लिंक यूआरएल है, तो उन्हें यह सूचना कि आपके ऐप्लिकेशन ने पेस्टबोर्ड को ऐक्सेस किया था. इससे भ्रम है.

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

आपके ऐप्लिकेशन में डाइनैमिक लिंक को मैनेज करने के लिए, दो स्थितियों को लागू करना ज़रूरी होता है.

खत्म की गई स्थिति

इन तरीकों को सेट अप करें:

  1. FirebaseDynamicLinks.getInitialLink - Future<PendingDynamicLinkData?> दिखाता है
  2. FirebaseDynamicLinks.onLink - इवेंट हैंडलर जो PendingDynamicLinkData? वाला Stream दिखाता है

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), अगर ऐप्लिकेशन की स्थिति से डाइनैमिक लिंक की जांच की जा रही है. इसका मतलब है कि ऐप्लिकेशन को बंद किए गए लिंक पर स्विच किया गया है.