কাস্টম DeepLinkMatcher ক্লাস তৈরি করা

আপনার ব্যবহারের ক্ষেত্রে প্রদান করা ম্যাচিং যথেষ্ট না হলে, আপনি DeepLinkMatcher ক্লাস এক্সটেন্ড করে নিজের ম্যাচিং তৈরি করতে পারেন।

DeepLinkMatcher<T, R> এক্সটেন্ড করার সময়, আপনাকে অবশ্যই দুটি টাইপ আর্গুমেন্ট নির্দিষ্ট করতে হবে: ডেস্টিনেশন নেভিগেশন কী টাইপ (T : Any) এবং ম্যাচ ফলাফল টাইপ (R : DeepLinkMatcher.MatchResult<T>)। আপনার ম্যাচারের কাস্টম ফলাফল র‍্যাঙ্কিং বা অতিরিক্ত মেটাডেটা প্রয়োজন না হলে, দ্বিতীয় টাইপ আর্গুমেন্ট হিসেবে DeepLinkMatcher.MatchResult<T> ব্যবহার করুন।

যেমন, এখানে TelDeepLinkMatcher-এর একটি প্রাথমিক প্রয়োগ দেওয়া হল যা tel URI (যেমন tel:5550100)-এর সাথে কাজ করে। যেহেতু tel URI হল অপেক, UriDeepLinkMatcher সেগুলির সাথে কাজ করে না:

কাস্টম MatchResult ক্লাস র‍্যাঙ্ক করুন

আপনার কাস্টম ম্যাচারের ম্যাচ করা ফলাফল তুলনা করার কোনও অর্থপূর্ণ উপায় থাকলে, আপনাকে DeepLinkMatcher.MatchResult এক্সটেন্ড করতে হবে এবং ফলাফল র‍্যাঙ্ক করার জন্য compareTo মেথড ওভাররাইড করতে হবে।

আপনি কাস্টম MatchResult সাবক্লাস তৈরি করলে, আপনার ম্যাচারের ক্লাস ডিক্লারেশন আপডেট করে, সেটির দ্বিতীয় টাইপ প্যারামিটার হিসেবে সেই সাবক্লাসকে নির্দিষ্ট করুন R (যেমন class TelDeepLinkMatcher : DeepLinkMatcher<DialerKey, TelMatchResult>())। এর ফলে, কলকারীরা আনচেকড ডাউনকাস্টিং ছাড়াই আপনার কাস্টম ফলাফল প্রপার্টি অ্যাক্সেস করতে পারবেন।

যেমন, TelDeepLinkMatcher-এ ওয়াইল্ডকার্ড প্যাটার্ন ম্যাচিং কাজ করানোর জন্য, আপনি TelMatchResult প্রয়োগ করতে পারেন যাতে হুবহু ম্যাচ করা কন্টেন্ট ওয়াইল্ডকার্ড ম্যাচ করা কন্টেন্টের থেকে বেশি র‍্যাঙ্ক পায়। ম্যাচারটি withBackStack-এর মধ্যে থাকলে, তুলনা করার আগে সেটি আনর‍্যাপ করুন WrappedMatchResult যাতে অন্তর্নিহিত ম্যাচ ফলাফলের বিরুদ্ধে অগ্রাধিকার মূল্যায়ন করা যায়: