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