আপনার অ্যাপের ব্যাক স্ট্যাকে যোগ করা যেতে পারে এমন কী-তে ইনকামিং DeepLinkRequest ইনস্ট্যান্স ম্যাপ করতে, আপনি DeepLinkMatcher ইনস্ট্যান্স সংজ্ঞায়িত করেন।
DeepLinkMatcher হল একটি অ্যাবস্ট্রাক্ট ক্লাস যার মধ্যে দুটি পদ্ধতি অন্তর্ভুক্ত, match
এবং matchRequest। সাবক্লাসকে অবশ্যই matchRequest প্রয়োগ করতে হবে, যা একটি
DeepLinkRequest নেয় এবং অনুরোধ মিলে গেলে DeepLinkMatcher.MatchResult রিটার্ন করে, অথবা অন্যথায় null রিটার্ন করে।
একাধিক ম্যাচিং টুল একটি অনুরোধের সাথে ম্যাচ করতে পারে বলে, MatchResult
Comparable প্রয়োগ করে ফলাফল র্যাঙ্ক করে এবং সবচেয়ে ভালো ম্যাচ বেছে নেয়।
প্যারামিটার টাইপ করুন
DeepLinkMatcher ক্লাস দুটি জেনেরিক টাইপ প্যারামিটার ঘোষণা করে:
DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>।
T : Any: ডিপ লিঙ্ক ম্যাচ করলে ডেস্টিনেশন নেভিগেশন কী-এর ধরন (যেমনUserProfileKeyবাNavKey) রিটার্ন করা হয়।R : DeepLinkMatcher.MatchResult<T>:matchRequestএবংmatch-এর মাধ্যমে ফেরত আসা নির্দিষ্টMatchResultসাবটাইপ।
দ্বিতীয় ধরনের প্যারামিটার, R, আনচেক করা ডাউনকাস্টিংয়ের প্রয়োজন ছাড়াই
বিশেষায়িত ম্যাচ তথ্য সংরক্ষণ করে:
StaticKeyDeepLinkMatcherR-কেDeepLinkMatcher.MatchResult<T>-এর সাথে বাইন্ড করে।UriDeepLinkMatcher,R-কেUriMatchResult-এর সাথে বাইন্ড করে, পার্স করা পাথ ও কোয়েরি আর্গুমেন্ট এবং প্যাটার্ন-ম্যাচিং স্কোর রেখে দেয়।BackStackMatcherR-কেBackStackMatchResult-এর সাথে বাইন্ড করে,withBackStack-এর মাধ্যমে তৈরি করা সিন্থেটিক ব্যাক স্ট্যাক লিস্ট ধরে রাখে।
প্রি-ফিল্টার অনুরোধ
DeepLinkMatcher প্রয়োগের ক্ষেত্রে, অনুরোধ মূল্যায়ন করার আগে সেগুলি ফিল্টার করার জন্য
DeepLinkMatcher.Filter ইনস্ট্যান্সের তালিকা নির্দিষ্ট করা যেতে পারে।
সাধারণ ফিল্টার তৈরি করার জন্য লাইব্রেরিতে হেল্পার ফাংশন অন্তর্ভুক্ত থাকে:
DeepLinkMatcher.mimeTypeFilter: হুবহুmimeTypeস্ট্রিংয়ের সাথে মিলে যায় (MimeTypeExtrasKeyচেক করে)।DeepLinkMatcher.actionFilter: একদম সঠিকactionস্ট্রিংয়ের সাথে মেলে (ActionExtrasKeyচেক করে)।
এই পদ্ধতি আপনাকে বিভিন্ন অ্যাকশনের জন্য একই URI প্যাটার্ন আবার ব্যবহার করতে দেয়, যেমন দেখার সাথে এডিট করার তুলনা:
val viewFilter = DeepLinkMatcher.actionFilter(Intent.ACTION_VIEW) val editFilter = DeepLinkMatcher.actionFilter(Intent.ACTION_EDIT) val imageUriPattern = DeepLinkUri("www.example.com/image/{id}") val viewMatcher = UriDeepLinkMatcher(imageUriPattern, serializer<Gallery>(), filters = listOf(viewFilter)) val editMatcher = UriDeepLinkMatcher(imageUriPattern, serializer<Editor>(), filters = listOf(editFilter))
Filter একটি ফাংশনাল (SAM) ইন্টারফেস হওয়ার কারণে, আপনি ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে
ফিল্টারও তৈরি করতে পারবেন:
val myFilter = DeepLinkMatcher.Filter { request -> request.uri != null }
প্রদান করা ম্যাচিং টুল ব্যবহার করুন
লাইব্রেরিতে তিনটি স্ট্যান্ডার্ড DeepLinkMatcher ইমপ্লিমেন্টেশন অন্তর্ভুক্ত:
StaticKeyDeepLinkMatcher, UriDeepLinkMatcher এবং
BackStackMatcher. এইসব ম্যাচিং টুল আপনার অ্যাপের প্রয়োজনীয়তা পূরণ না করলে,
আপনি কাস্টম ডিপ লিঙ্ক ম্যাচিং টুল তৈরি করতে পারবেন।
প্রাথমিক ডিপ লিঙ্ক ম্যাচ করা
এক্সট্র্যাক্ট করার জন্য আর্গুমেন্ট নেই এমন বেসিক ডিপ লিঙ্কের জন্য, প্রদান করা সব ফিল্টার পূরণ করে এমন অনুরোধের সাথে ম্যাচ করতে
StaticKeyDeepLinkMatcher ব্যবহার করুন।
যেমন, ACTION_APPLICATION_PREFERENCES-এর জন্য ইনটেন্ট ম্যানেজ করতে:
val preferencesActionFilter = DeepLinkMatcher.actionFilter(Intent.ACTION_APPLICATION_PREFERENCES) val preferencesActionDeepLinkMatcher = StaticKeyDeepLinkMatcher(PreferencesScreen, listOf(preferencesActionFilter))
URI ডিপ লিঙ্ক ম্যাচ করুন
প্যাটার্নের সাথে হায়ারার্কিক্যাল URI ম্যাচ করা এবং আর্গুমেন্ট এক্সট্র্যাক্ট করার জন্য, UriDeepLinkMatcher ব্যবহার করুন। যেমন, আপনি www.example.com/users/{id}-এর সাথে ম্যাচ করে
id আর্গুমেন্টকে ডেস্টিনেশন কীতে এক্সট্র্যাক্ট করতে পারবেন। আরও তথ্যের জন্য, URI ডিপ লিঙ্ক ম্যাচ করুন দেখুন।
সিন্থেটিক ব্যাক স্ট্যাক তৈরি করুন
সফল ম্যাচ থেকে কীভাবে সিন্থেটিক ব্যাক স্ট্যাক তৈরি করতে হয় তা নির্ধারণ করতে, BackStackMatcher ব্যবহার করুন। সরাসরি BackStackMatcher
ইনস্ট্যান্টিয়েট করার পরিবর্তে, অন্য DeepLinkMatcher-এ withBackStack এক্সটেনশন ফাংশন কল করুন। withBackStack রিসিভারকে BackStackMatcher-এ র্যাপ করে
যা সিন্থেটিক ব্যাক স্ট্যাক সহ BackStackMatchResult রিটার্ন করে
List। কারণ BackStackMatchResult অন্তর্নিহিত ম্যাচ ফলাফলের সাথে তুলনা করে, withBackStack-এ একটি ম্যাচিং র্যাপ করলে তার আসল ম্যাচ র্যাঙ্কিং বজায় থাকে।
val homeMatcher = StaticKeyDeepLinkMatcher(HomeKey, listOf(DeepLinkMatcher.actionFilter(Intent.ACTION_VIEW))) val userListMatcher = UriDeepLinkMatcher( DeepLinkUri("www.example.com/users?page={page}"), serializer<UserListKey>() ).withBackStack { matchResult -> listOf(HomeKey, matchResult.key) } val userProfileMatcher = UriDeepLinkMatcher( DeepLinkUri("www.example.com/users/{id}"), serializer<UserProfileKey>() ).withBackStack { matchResult -> listOf(HomeKey, UserListKey(), matchResult.key) }
আপনার অ্যাক্টিভিটিতে ব্যাক স্ট্যাকের ফলাফল ম্যানেজ করতে, ইনকামিং অনুরোধ ম্যাচ করুন দেখুন।