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 डेवलपर खाता नहीं है, तो एक खाता बनाएं.
Firebase कंसोल के प्रोजेक्ट सेटिंग पेज पर, पक्का करें कि आपका iOS ऐप्लिकेशन, App Store आईडी और टीम आईडी के साथ सही तरीके से कॉन्फ़िगर किया गया हो.
Apple डेवलपर साइट पर, अपने ऐप्लिकेशन के लिए एक प्रोविज़निंग प्रोफ़ाइल बनाएं. इसमें, असोसिएटेड डोमेन की सुविधा चालू होनी चाहिए.
Xcode में, यह तरीका अपनाएं:
TARGETS हेडर में जाकर, अपना ऐप्लिकेशन खोलें.
साइनिंग और क्षमताएं पेज पर, पक्का करें कि आपकी टीम रजिस्टर हो और आपकी प्रोविज़निंग प्रोफ़ाइल सेट हो.
साइनिंग और क्षमताएं पेज पर, असोसिएटेड डोमेन की सुविधा चालू करें. इसके बाद, असोसिएटेड डोमेन की सूची में यह जोड़ें. यहां, उदाहरण को अपने डोमेन से बदलें:
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>ज़रूरी नहीं: iOS क्लिपबोर्ड के लिए, डाइनैमिक लिंक SDK टूल का इस्तेमाल बंद करें.
डाइनैमिक लिंक 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 गेटर का इस्तेमाल करें:
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.