अपने बनाए गए Firebase डाइनैमिक लिंक पाने के लिए, आपको अपने ऐप्लिकेशन में डाइनैमिक लिंक SDK टूल को शामिल करना होगा. साथ ही, डाइनैमिक लिंक में पास किया गया डेटा पाने के लिए, जब आपका ऐप्लिकेशन लोड हो रहा हो, तब FirebaseDynamicLinks.getDynamicLink()
तरीके को कॉल करें.
Firebase और डाइनैमिक लिंक SDK टूल सेट अप करना
अगर आपने अभी तक ऐसा नहीं किया है, तो Flutter के लिए Firebase SDK टूल को इंस्टॉल करें और उन्हें शुरू करें.
अपने Flutter प्रोजेक्ट की रूट डायरेक्ट्री से, डाइनैमिक लिंक प्लगिन इंस्टॉल करने के लिए यह कमांड चलाएं:
flutter pub add firebase_dynamic_links
अगर आपको कोई Android ऐप्लिकेशन बनाना है, तो Firebase कंसोल का प्रोजेक्ट सेटिंग पेज खोलें और पक्का करें कि आपने 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 के प्लैटफ़ॉर्म
अगर आपके पास पहले से कोई Apple डेवलपर खाता नहीं है, तो एक Apple डेवलपर खाता बनाएं.
Firebase कंसोल के प्रोजेक्ट सेटिंग पेज पर, पक्का करें कि आपका iOS ऐप्लिकेशन आपके App Store आईडी और टीम आईडी के साथ सही तरीके से कॉन्फ़िगर किया गया हो.
Apple Developer साइट पर, अपने ऐप्लिकेशन के लिए प्रावधान करने वाली ऐसी प्रोफ़ाइल बनाएं जिसमें असोसिएटेड डोमेन की सुविधा चालू हो.
Xcode में, ये काम करें:
टारगेट हेडर में अपना ऐप्लिकेशन खोलें.
'हस्ताक्षर और क्षमता' पेज पर, पक्का करें कि आपकी टीम रजिस्टर है और आपकी प्रॉविज़निंग प्रोफ़ाइल सेट है.
'हस्ताक्षर और क्षमताएं' पेज पर, असोसिएटेड डोमेन को चालू करें और असोसिएटेड डोमेन की सूची में इन्हें जोड़ें (उदाहरण के तौर पर, अपने डोमेन का इस्तेमाल करें):
applinks:example.page.link
जानकारी वाले पेज पर, अपने प्रोजेक्ट का यूआरएल टाइप जोड़ें. यूआरएल स्कीम फ़ील्ड को अपने ऐप्लिकेशन के बंडल आईडी पर सेट करें. (आइडेंटिफ़ायर
Bundle ID
या कुछ भी हो सकता है.)अगर आपने अपने Firebase प्रोजेक्ट के लिए कस्टम डोमेन सेट अप किया है, तो
FirebaseDynamicLinksCustomDomains
कुंजी का इस्तेमाल करके अपने iOS प्रोजेक्ट कीInfo.plist
फ़ाइल में डाइनैमिक लिंक के यूआरएल प्रीफ़िक्स को जोड़ें.<?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>
ज़रूरी नहीं: डाइनैमिक लिंक SDK टूल के लिए, iOS पेस्टबोर्ड का इस्तेमाल बंद करें.
डिफ़ॉल्ट रूप से, डाइनैमिक लिंक SDK टूल, पेस्टबोर्ड का इस्तेमाल करके पोस्ट-इंस्टॉल डीप लिंक को ज़्यादा भरोसेमंद बनाता है. पेस्टबोर्ड का इस्तेमाल करके, डाइनैमिक लिंक यह पक्का कर सकते हैं कि जब कोई उपयोगकर्ता डाइनैमिक लिंक खोले, लेकिन पहले आपका ऐप्लिकेशन इंस्टॉल करे, तो वह इंस्टॉल करने के बाद पहली बार ऐप्लिकेशन खोलते समय, लिंक किए गए ओरिजनल कॉन्टेंट पर तुरंत जा सके.
इसकी समस्या यह है कि पेस्टबोर्ड का इस्तेमाल करने से, iOS 14 और उसके बाद के वर्शन पर सूचना ट्रिगर होती है. इसलिए, जब उपयोगकर्ता पहली बार आपका ऐप्लिकेशन खोलते हैं, तो अगर पेस्टबोर्ड में कोई डाइनैमिक लिंक यूआरएल होगा, तो उन्हें एक सूचना दिखेगी कि आपके ऐप्लिकेशन ने पेस्टबोर्ड को ऐक्सेस किया है. इससे भ्रम की स्थिति पैदा हो सकती है.
इस व्यवहार को बंद करने के लिए, अपने Xcode प्रोजेक्ट की
Info.plist
फ़ाइल में बदलाव करें औरFirebaseDeepLinkPasteboardRetrievalEnabled
बटन कोNO
पर सेट करें.
डीप लिंक मैनेज करना
आपके ऐप्लिकेशन में डाइनैमिक लिंक को मैनेज करने के लिए, दो स्थितियों को लागू करना ज़रूरी होता है.
खत्म की गई स्थिति
इन तरीकों को सेट अप करें:
FirebaseDynamicLinks.getInitialLink
-Future<PendingDynamicLinkData?>
दिखाता है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 प्लैटफ़ॉर्म पर डाइनैमिक लिंक की जांच करना
iOS पर डाइनैमिक लिंक की जांच करने के लिए, आपको किसी असल डिवाइस का इस्तेमाल करना होगा. अगर बंद किए गए (यानी ऐप्लिकेशन बंद कर दिया गया है) वाले डाइनैमिक लिंक की जांच की जा रही है, तो आपको ऐप्लिकेशन को रिलीज़ मोड (यानी flutter run --release
) में भी चलाना होगा.