আপনার তৈরি করা Firebase Dynamic Link-গুলো পেতে হলে, আপনাকে অবশ্যই আপনার অ্যাপে Dynamic Links SDK অন্তর্ভুক্ত করতে হবে এবং অ্যাপ লোড হওয়ার সময় Dynamic Link-এ পাঠানো ডেটা পাওয়ার জন্য FirebaseDynamicLinks.getDynamicLink() মেথডটি কল করতে হবে।
Firebase এবং Dynamic Links SDK সেট আপ করুন
যদি আগে থেকে না করে থাকেন, তাহলে Flutter-এর জন্য Firebase SDK-গুলো ইনস্টল ও চালু করুন ।
আপনার ফ্লাটার প্রজেক্টের রুট ডিরেক্টরি থেকে ডাইনামিক লিঙ্কস প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
flutter pub add firebase_dynamic_linksআপনি যদি একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করেন, তাহলে Firebase কনসোলের প্রজেক্ট সেটিংস পৃষ্ঠাটি খুলুন এবং নিশ্চিত করুন যে আপনি আপনার SHA-1 সাইনিং কী নির্দিষ্ট করেছেন। আপনি যদি অ্যাপ লিঙ্ক ব্যবহার করেন, তাহলে আপনার SHA-256 কী-ও নির্দিষ্ট করুন।
প্ল্যাটফর্ম ইন্টিগ্রেশন
আপনি যে প্ল্যাটফর্মগুলোর জন্য আপনার অ্যাপ তৈরি করছেন, সেগুলোর জন্য নিম্নলিখিত প্ল্যাটফর্ম ইন্টিগ্রেশন ধাপগুলো সম্পূর্ণ করুন।
অ্যান্ড্রয়েড
অ্যান্ড্রয়েডে, আপনাকে অবশ্যই আপনার ডোমেইনের ডিপ লিঙ্কগুলি ধরার জন্য একটি নতুন ইন্টেন্ট ফিল্টার যোগ করতে হবে, কারণ আপনার অ্যাপ ইনস্টল করা হলে ডাইনামিক লিঙ্কটি আপনার ডোমেইনে রিডাইরেক্ট করবে। প্লে স্টোর থেকে অ্যাপটি ইনস্টল/আপডেট হওয়ার পর এবং 'Continue' বোতামে ট্যাপ করার পরে ডাইনামিক লিঙ্কের ডেটা পাওয়ার জন্য এটি প্রয়োজন। 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 ফিঙ্গারপ্রিন্টটি নিবন্ধিত আছে কিনা তা নিশ্চিত করা। আপনার SHA-256 ফিঙ্গারপ্রিন্ট কীভাবে পুনরুদ্ধার করবেন সে সম্পর্কে আরও বিস্তারিত তথ্য 'আপনার ক্লায়েন্ট প্রমাণীকরণ' পৃষ্ঠায় পাবেন।
অ্যাপল প্ল্যাটফর্ম
আপনার যদি আগে থেকে একটি অ্যাপল ডেভেলপার অ্যাকাউন্ট না থাকে, তাহলে একটি তৈরি করুন ।
Firebase কনসোলের প্রজেক্ট সেটিংস পেজে, নিশ্চিত করুন যে আপনার iOS অ্যাপটি আপনার অ্যাপ স্টোর আইডি এবং টিম আইডি দিয়ে সঠিকভাবে কনফিগার করা আছে।
Apple Developer সাইটে, আপনার অ্যাপের জন্য একটি প্রভিশনিং প্রোফাইল তৈরি করুন যেখানে Associated Domain সক্ষমতাটি সক্রিয় থাকবে।
Xcode-এ নিম্নলিখিত কাজগুলো করুন:
TARGETS হেডারের অধীনে আপনার অ্যাপটি খুলুন।
সাইনিং ও ক্যাপাবিলিটিস পেজে, নিশ্চিত করুন যে আপনার টিম নিবন্ধিত আছে এবং আপনার প্রভিশনিং প্রোফাইল সেট করা আছে।
Signing & Capabilities পৃষ্ঠায়, Associated Domains সক্রিয় করুন এবং Associated Domains তালিকায় নিম্নলিখিতগুলি যোগ করুন (উদাহরণটির জায়গায় আপনার ডোমেইন বসান):
applinks:example.page.linkইনফো পেজে, আপনার প্রজেক্টে একটি ইউআরএল টাইপ যোগ করুন। ইউআরএল স্কিমস ফিল্ডটি আপনার অ্যাপের বান্ডেল আইডিতে সেট করুন। (আইডেন্টিফায়ারটি
Bundle IDবা আপনার ইচ্ছামতো যেকোনো কিছু হতে পারে।)আপনি যদি আপনার Firebase প্রোজেক্টের জন্য একটি কাস্টম ডোমেইন সেট আপ করে থাকেন, তাহলে আপনার iOS প্রোজেক্টের
Info.plistফাইলেFirebaseDynamicLinksCustomDomainsকী-টি ব্যবহার করে Dynamic Link 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>ঐচ্ছিক: ডাইনামিক লিঙ্কস এসডিকে-এর আইওএস পেস্টবোর্ড ব্যবহার নিষ্ক্রিয় করুন।
ডিফল্টরূপে, ডাইনামিক লিঙ্কস এসডিকে পোস্ট-ইনস্টল ডিপ লিঙ্কের নির্ভরযোগ্যতা উন্নত করতে পেস্টবোর্ড ব্যবহার করে। পেস্টবোর্ড ব্যবহারের মাধ্যমে, ডাইনামিক লিঙ্কস এটা নিশ্চিত করতে পারে যে, যখন কোনো ব্যবহারকারী একটি ডাইনামিক লিঙ্ক খোলেন কিন্তু তার আগে আপনার অ্যাপটি ইনস্টল করার প্রয়োজন হয়, তখন ইনস্টলেশনের পর প্রথমবার অ্যাপটি খোলার সময় তিনি যেন সরাসরি মূল লিঙ্ক করা কন্টেন্টে যেতে পারেন।
এর অসুবিধা হলো, iOS 14 এবং এর পরবর্তী সংস্করণগুলোতে পেস্টবোর্ড ব্যবহার করলে একটি নোটিফিকেশন চালু হয়। ফলে, ব্যবহারকারীরা যখন প্রথমবার আপনার অ্যাপটি খুলবেন, তখন পেস্টবোর্ডে কোনো ডাইনামিক লিঙ্ক ইউআরএল (Dynamic Link URL) থাকলে তারা একটি নোটিফিকেশন দেখতে পাবেন যে আপনার অ্যাপটি পেস্টবোর্ডটি অ্যাক্সেস করেছে, যা বিভ্রান্তির কারণ হতে পারে।
এই আচরণটি নিষ্ক্রিয় করতে, আপনার Xcode প্রজেক্টের
Info.plistফাইলটি সম্পাদনা করুন এবংFirebaseDeepLinkPasteboardRetrievalEnabledকী-টির মানNOসেট করুন।
গভীর লিঙ্কগুলি পরিচালনা করুন
আপনার অ্যাপ্লিকেশনে একটি ডাইনামিক লিঙ্ক পরিচালনা করতে দুটি সিনারিও বাস্তবায়ন করতে হবে।
সমাপ্ত অবস্থা
নিম্নলিখিত পদ্ধতিগুলি সেট আপ করুন:
-
FirebaseDynamicLinks.getInitialLink- একটিFuture<PendingDynamicLinkData?>রিটার্ন করে -
FirebaseDynamicLinks.onLink- একটি ইভেন্ট হ্যান্ডলার যা PendingDynamicLinkData ধারণকারী একটিStreamরিটার্ন করেPendingDynamicLinkData?
অ্যান্ড্রয়েডে টার্মিনেটেড অবস্থা থেকেও 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 .) চালাতে হবে।