গভীর লিঙ্ক তৈরি করুন

ডিপ লিঙ্কিং আপনাকে ওয়েব ব্রাউজার, বিজ্ঞপ্তি, সোশ্যাল মিডিয়া, বিজ্ঞাপন এবং অন্যান্য উৎস থেকে ব্যবহারকারীদের সরাসরি আপনার অ্যাপে আনতে সাহায্য করে। ডিপ লিঙ্কগুলি সরাসরি অ্যাপ-টু-অ্যাপ এবং ওয়েব-টু-অ্যাপ ট্রানজিশন প্রদান করে যা আপনাকে প্রাসঙ্গিক, লক্ষ্যবস্তু সামগ্রীর মাধ্যমে ব্যস্ততা বাড়াতে সাহায্য করতে পারে।

এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে ডিপ লিঙ্কিং কাজ করে এবং কীভাবে আপনার কন্টেন্টে ডিপ লিঙ্ক তৈরি এবং পরীক্ষা করতে হয়।

আপনার নিজস্ব ওয়েবসাইট বা ডোমেন উল্লেখ করে এমন ডিপ লিঙ্কগুলির জন্য, আমরা অ্যাপ লিঙ্ক ব্যবহার করার পরামর্শ দিই, যা আপনার ব্যবহারকারীদের জন্য একটি নিরবচ্ছিন্ন, বিশ্বস্ত অভিজ্ঞতা প্রদান করে।

ডিপ লিঙ্কিং কীভাবে কাজ করে

ডিপ লিঙ্কিং হল অ্যান্ড্রয়েডের একটি সাধারণ সিস্টেম ক্ষমতা, যা সকল সংস্করণে, সকল ডিভাইসে সমর্থিত। এটি আগ্রহী অ্যাপগুলিতে ডিপ লিঙ্কগুলি রুট করার জন্য অ্যান্ড্রয়েডের ইন্টেন্টস সিস্টেমের সুবিধা গ্রহণ করে। যে অ্যাপগুলি একটি নির্দিষ্ট ডিপ লিঙ্ক পরিচালনা করতে চায় তারা তাদের অ্যাপ ম্যানিফেস্ট ফাইলগুলিতে একটি মিলিত ইন্টেন্ট ফিল্টার ঘোষণা করে।

রানটাইমে, যখন ব্যবহারকারী কোনও লিঙ্কে ট্যাপ করে, তখন অ্যান্ড্রয়েড একটি ইনটেন্ট ট্রিগার করে এবং এটিকে একটি অ্যাপে রুট করার চেষ্টা করে। যেহেতু একাধিক অ্যাপ একটি নির্দিষ্ট URI-এর সাথে মেলে এমন ইনটেন্ট ফিল্টার ঘোষণা করতে পারে, তাই অ্যান্ড্রয়েড এই ক্রমে ইনটেন্ট রুট করার জন্য এই পদক্ষেপগুলি নেয়:

  1. ব্যবহারকারীর ডিফল্ট অ্যাপটি খুলুন যা URI পরিচালনা করতে পারে, যদি কোনও URI নির্ধারিত থাকে।
  2. URI পরিচালনা করতে পারে এমন একমাত্র উপলব্ধ অ্যাপটি খুলুন।
  3. ব্যবহারকারীকে একটি দ্ব্যর্থতা নিরসন ডায়ালগ থেকে একটি অ্যাপ নির্বাচন করার অনুমতি দিন।

এর মানে হল, যদিও আপনার ইন্টেন্ট ফিল্টারগুলি একটি নির্দিষ্ট URI-এর সাথে মেলে, তবুও কোনও গ্যারান্টি নেই যে সিস্টেমটি আপনার অ্যাপে ডিপ লিঙ্ক ইন্টেন্টটি রুট করবে। কোন অ্যাপটি ইন্টেন্ট পরিচালনা করে তা পরিচালনা করার ক্ষেত্রে ব্যবহারকারীর একটি গুরুত্বপূর্ণ ভূমিকা রয়েছে, যা তাদের নিয়ন্ত্রণ দেয় এবং পছন্দ অফার করে। আপনার নিজস্ব ওয়েবসাইট এবং ডোমেনের ডিপ লিঙ্কগুলির উপর আরও নিয়ন্ত্রণের জন্য, অ্যাপ লিঙ্কগুলি ব্যবহার করে দেখুন।

অ্যান্ড্রয়েডের দ্ব্যর্থতা নিরসন ডায়ালগ ব্যবহারকারীকে ডিপ লিঙ্ক ইনটেন্ট পরিচালনা করার জন্য নিবন্ধিত সমস্ত ইনস্টল করা অ্যাপ দেখতে দেয়। ব্যবহারকারী এই ধরণের লিঙ্কের জন্য ডিফল্ট হিসাবে একটি অ্যাপও নির্বাচন করতে পারেন। ব্যবহারকারী একবার ডিফল্ট সেট করলে, সিস্টেমটি আর সেই নির্দিষ্ট ইনটেন্টের জন্য ডায়ালগটি দেখায় না এবং নির্বাচিত অ্যাপটি স্বয়ংক্রিয়ভাবে খুলবে।

চিত্র ১. দ্ব্যর্থতা নিরসনের ডায়ালগ

অ্যান্ড্রয়েড ভার্সন জুড়ে দ্ব্যর্থতা নিরসন ডায়ালগের আচরণ বিকশিত হয়েছে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী ভার্সনে, যাচাইকৃত অ্যাপ লিঙ্ক নয় এমন ওয়েব লিঙ্কগুলি সাধারণত ডিফল্টরূপে একটি ওয়েব ব্রাউজারে খুলবে, যেখানে পূর্ববর্তী ভার্সনগুলিতে, যদি কোনও অ্যাপ ওয়েব লিঙ্কটি পরিচালনা করতে পারত তবে একটি দ্ব্যর্থতা নিরসন ডায়ালগ উপস্থিত হতে পারত।

দ্রষ্টব্য : অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) থেকে শুরু করে, একটি জেনেরিক ওয়েব ইন্টেন্ট আপনার অ্যাপের কোনও কার্যকলাপের সমাধান করে শুধুমাত্র তখনই যদি আপনার অ্যাপটি সেই ওয়েব ইন্টেন্টে থাকা নির্দিষ্ট ডোমেনের জন্য অনুমোদিত হয়। যদি আপনার অ্যাপটি ডোমেনের জন্য অনুমোদিত না হয়, তাহলে ওয়েব ইন্টেন্টটি ব্যবহারকারীর ডিফল্ট ব্রাউজার অ্যাপে সমাধান করে।

ডিপ লিঙ্কের প্রকারভেদ

অ্যান্ড্রয়েডে আপনি তিন ধরণের ডিপ লিঙ্ক সাপোর্ট করতে পারেন:

  • কাস্টম ডিপ লিঙ্ক : এগুলি হল ডিপ লিঙ্ক যা একটি কাস্টম URI স্কিম (যেমন example://products/123 ) ব্যবহার করে ব্যবহারকারীকে সরাসরি একটি অ্যাপের মধ্যে নির্দিষ্ট কন্টেন্টে নিয়ে যায়। এগুলি অভ্যন্তরীণ নেভিগেশন বা আপনার নিয়ন্ত্রণাধীন উৎস থেকে লিঙ্কগুলির জন্য শক্তিশালী, তবে এগুলি স্ট্যান্ডার্ড ওয়েব লিঙ্ক নয় এবং যদি অন্য কোনও অ্যাপ একই কাস্টম স্কিম নিবন্ধন করে তবে দ্ব্যর্থতা নিরসন ডায়ালগটি ট্রিগার করতে পারে।
  • ওয়েব লিঙ্ক : এগুলি হল ডিপ লিঙ্ক যা স্ট্যান্ডার্ড http এবং https স্কিম ব্যবহার করে। এগুলি আরও বহুমুখী কারণ এগুলি স্ট্যান্ডার্ড URL, কিন্তু Android 12 এবং উচ্চতর সংস্করণগুলিতে এগুলি প্রায় সর্বদা দ্ব্যর্থতা নিরসন ডায়ালগ ট্রিগার করবে, যার অর্থ হল এগুলি আপনার অ্যাপে রাউটেড হওয়ার পরিবর্তে ডিফল্টরূপে ব্যবহারকারীর ওয়েব ব্রাউজার দ্বারা পরিচালিত হওয়ার সম্ভাবনা রয়েছে।
  • অ্যাপ লিঙ্ক : অ্যান্ড্রয়েড ৬.০ (এপিআই লেভেল ২৩) থেকে উপলব্ধ, এগুলি যাচাইকৃত ওয়েব লিঙ্ক। ওয়েবসাইট অ্যাসোসিয়েশনের একটি প্রক্রিয়ার মাধ্যমে, আপনি অ্যান্ড্রয়েড সিস্টেমের কাছে প্রমাণ করতে পারেন যে আপনি ডোমেনটির মালিক। একবার যাচাই হয়ে গেলে, সিস্টেমটি স্বয়ংক্রিয়ভাবে সেই ডোমেনের লিঙ্কগুলি সরাসরি আপনার অ্যাপে পাঠায়, দ্ব্যর্থতা নিরসন ডায়ালগ সম্পূর্ণরূপে এড়িয়ে যায়। এটি আপনার ব্যবহারকারীদের জন্য একটি বিশ্বস্ত এবং নিরবচ্ছিন্ন অভিজ্ঞতা তৈরি করে।

ইনকামিং লিঙ্কগুলির জন্য ইন্টেন্ট ফিল্টার যোগ করুন

আপনার অ্যাপ কন্টেন্টের লিঙ্ক তৈরি করতে, আপনার ম্যানিফেস্টে এই উপাদান এবং অ্যাট্রিবিউট মানগুলি ধারণকারী একটি ইন্টেন্ট ফিল্টার যোগ করুন:

<action>

ACTION_VIEW ইন্টেন্ট অ্যাকশনটি নির্দিষ্ট করুন যাতে Google অনুসন্ধান থেকে ইন্টেন্ট ফিল্টারটি পৌঁছানো যায়।

<data>

এক বা একাধিক <data> ট্যাগ যোগ করুন, যার প্রতিটি একটি URI ফর্ম্যাট উপস্থাপন করে যা কার্যকলাপের সমাধান করে। কমপক্ষে, <data> ট্যাগে android:scheme অ্যাট্রিবিউট অন্তর্ভুক্ত থাকতে হবে।

অ্যাক্টিভিটিটি যে ধরণের URI গ্রহণ করে তা আরও পরিমার্জন করার জন্য আপনি আরও অ্যাট্রিবিউট যোগ করতে পারেন। উদাহরণস্বরূপ, আপনার একাধিক অ্যাক্টিভিটি থাকতে পারে যা একই রকম URI গ্রহণ করে, কিন্তু পাথের নামের উপর ভিত্তি করে ভিন্ন হয়। এই ক্ষেত্রে, android:path অ্যাট্রিবিউট অথবা এর pathPattern অথবা pathPrefix ভেরিয়েন্ট ব্যবহার করে সিস্টেমটি বিভিন্ন URI পাথের জন্য কোন অ্যাক্টিভিটি খুলবে তা আলাদা করুন।

<category>

BROWSABLE বিভাগটি অন্তর্ভুক্ত করুন। ওয়েব ব্রাউজার থেকে ইন্টেন্ট ফিল্টার অ্যাক্সেস করার জন্য এটি প্রয়োজন। এটি ছাড়া, ব্রাউজারে কোনও লিঙ্কে ক্লিক করলে আপনার অ্যাপটি সমাধান হবে না।

এছাড়াও DEFAULT বিভাগটি অন্তর্ভুক্ত করুন। এটি আপনার অ্যাপকে অন্তর্নিহিত উদ্দেশ্যের প্রতি সাড়া দিতে সাহায্য করে। এটি ছাড়া, কার্যকলাপটি কেবল তখনই শুরু করা যেতে পারে যদি অভিপ্রায়টি আপনার অ্যাপ উপাদানের নাম নির্দিষ্ট করে।

নিম্নলিখিত XML স্নিপেটটি দেখায় কিভাবে আপনি আপনার ম্যানিফেস্টে ডিপ লিঙ্কিংয়ের জন্য একটি ইন্টেন্ট ফিল্টার নির্দিষ্ট করতে পারেন। URI "example://gizmos" এবং "http://www.example.com/gizmos" উভয়ই এই কার্যকলাপের সমাধান করে।

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_view_http_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />
    </intent-filter>
</activity>

লক্ষ্য করুন যে দুটি ইন্টেন্ট ফিল্টার শুধুমাত্র <data> উপাদান দ্বারা পৃথক। যদিও একই ফিল্টারে একাধিক <data> উপাদান অন্তর্ভুক্ত করা সম্ভব, তবে যখন আপনার উদ্দেশ্য অনন্য URL (যেমন scheme এবং host একটি নির্দিষ্ট সংমিশ্রণ) ঘোষণা করার হয় তখন পৃথক ফিল্টার তৈরি করা গুরুত্বপূর্ণ, কারণ একই ইন্টেন্ট ফিল্টারের একাধিক <data> উপাদান আসলে তাদের সম্মিলিত বৈশিষ্ট্যের সমস্ত বৈচিত্র্যের জন্য একত্রিত হয়। উদাহরণস্বরূপ, নিম্নলিখিতগুলি বিবেচনা করুন:

<intent-filter>
  ...
  <data android:scheme="https" android:host="www.example.com" />
  <data android:scheme="app" android:host="open.my.app" />
</intent-filter>

মনে হতে পারে এটি কেবল https://www.example.com এবং app://open.my.app সমর্থন করে। তবে, এটি আসলে এই দুটি, এবং এই দুটি সমর্থন করে: app://www.example.com এবং https://open.my.app

সতর্কতা : যদি একাধিক কার্যকলাপে এমন ইনটেন্ট ফিল্টার থাকে যা একই যাচাইকৃত অ্যান্ড্রয়েড অ্যাপ লিঙ্কে সমাধান করে, তাহলে কোন কার্যকলাপ লিঙ্কটি পরিচালনা করে তার কোনও গ্যারান্টি নেই।

একবার আপনি আপনার অ্যাপ ম্যানিফেস্টে অ্যাক্টিভিটি কন্টেন্টের জন্য URI সহ ইন্টেন্ট ফিল্টার যোগ করলে, Android রানটাইমের সময় আপনার অ্যাপে ম্যাচিং URI আছে এমন যেকোনো Intent রুট করতে সক্ষম হবে।

ইনটেন্ট ফিল্টার সংজ্ঞায়িত করার বিষয়ে আরও জানতে, অন্যান্য অ্যাপগুলিকে আপনার কার্যকলাপ শুরু করার অনুমতি দিন দেখুন।

ইনকামিং ইন্টেন্ট থেকে ডেটা পড়ুন

সিস্টেমটি একবার একটি ইন্টেন্ট ফিল্টারের মাধ্যমে আপনার কার্যকলাপ শুরু করলে, আপনি কী রেন্ডার করতে হবে তা নির্ধারণ করতে Intent দ্বারা প্রদত্ত ডেটা ব্যবহার করতে পারেন। ইনকামিং Intent সাথে সম্পর্কিত ডেটা এবং ক্রিয়া পুনরুদ্ধার করতে getData() এবং getAction() পদ্ধতিগুলি কল করুন। কার্যকলাপের জীবনচক্রের সময় আপনি যেকোনো সময় এই পদ্ধতিগুলি কল করতে পারেন, তবে সাধারণত onCreate() বা onStart এর মতো প্রাথমিক কলব্যাকের সময় আপনার এটি করা উচিত।

এখানে একটি স্নিপেট দেওয়া হল যা দেখায় কিভাবে একটি Intent থেকে ডেটা পুনরুদ্ধার করতে হয়:

কোটলিন

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

    val action: String? = intent?.action
    val data: Uri? = intent?.data
}

জাভা

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এই সেরা অনুশীলনগুলি অনুসরণ করুন:

  • ডিপ লিঙ্কটি ব্যবহারকারীদের সরাসরি কন্টেন্টে নিয়ে যাবে, কোনও প্রম্পট, ইন্টারস্টিশিয়াল পেজ বা লগইন ছাড়াই। ব্যবহারকারীরা আগে কখনও অ্যাপ্লিকেশন না খোলা সত্ত্বেও অ্যাপের কন্টেন্ট দেখতে পাচ্ছেন তা নিশ্চিত করুন। পরবর্তী ইন্টারঅ্যাকশনের সময় বা লঞ্চার থেকে অ্যাপ খোলার সময় ব্যবহারকারীদের প্রম্পট করা ঠিক আছে।
  • নেভিগেশন উইথ ব্যাক অ্যান্ড আপ- এ বর্ণিত ডিজাইন নির্দেশিকা অনুসরণ করুন যাতে আপনার অ্যাপটি ব্যবহারকারীরা একটি ডিপ লিঙ্কের মাধ্যমে আপনার অ্যাপে প্রবেশ করার পরে ব্যাকওয়ার্ড নেভিগেশনের জন্য তাদের প্রত্যাশার সাথে মেলে।

আপনার ডিপ লিঙ্ক পরীক্ষা করুন

আপনি অ্যাক্টিভিটি ম্যানেজার (am) টুল ব্যবহার করে অ্যান্ড্রয়েড ডিবাগ ব্রিজ ব্যবহার করে পরীক্ষা করতে পারেন যে ডিপ লিঙ্কিংয়ের জন্য আপনার নির্দিষ্ট করা ইন্টেন্ট ফিল্টার URI সঠিক অ্যাপ অ্যাক্টিভিটির সাথে সম্পর্কিত কিনা। আপনি একটি ডিভাইস বা এমুলেটরের বিরুদ্ধে adb কমান্ড চালাতে পারেন।

adb দিয়ে একটি ইন্টেন্ট ফিল্টার URI পরীক্ষা করার জন্য সাধারণ বাক্য গঠন হল:

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি নির্দিষ্ট URI-এর সাথে সম্পর্কিত একটি লক্ষ্য অ্যাপ কার্যকলাপ দেখার চেষ্টা করে।

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android

দ্রষ্টব্য : যখন কোনও রুটে আদিম ধরণের সংগ্রহ সংজ্ঞায়িত করা হয়, যেমন **@Serializable data class Product(val colors: List)** , তখন স্বয়ংক্রিয়ভাবে তৈরি হওয়া ডিপ লিঙ্ক URL ফর্ম্যাট হল **basePath?colors={value**} । যদি আপনি একাধিক কোয়েরি প্যারামিটার (উদাহরণস্বরূপ, **basepath?colors=red&colors=blue** ) সহ একটি URI নির্দিষ্ট করার চেষ্টা করেন, তাহলে আপনাকে অবশ্যই অ্যাম্পারস্যান্ড থেকে বেরিয়ে আসতে হবে (উদাহরণস্বরূপ, **basepath?colors=red\&colors=blue** )।

আপনার সেট করা ম্যানিফেস্ট ডিক্লেয়ারেশন এবং ইনটেন্ট হ্যান্ডলার আপনার অ্যাপ এবং ওয়েবসাইটের মধ্যে সংযোগ এবং ইনকামিং লিঙ্কগুলির সাথে কী করতে হবে তা নির্ধারণ করে। তবে, সিস্টেমটি যাতে আপনার অ্যাপটিকে URI-এর একটি সেটের জন্য ডিফল্ট হ্যান্ডলার হিসেবে বিবেচনা করে, আপনাকে সিস্টেমটিকে এই সংযোগটি যাচাই করার অনুরোধও করতে হবে। Verify App Links ব্যাখ্যা করে যে কীভাবে এই যাচাইকরণ বাস্তবায়ন করতে হয়।

ইন্টেন্ট এবং অ্যাপ লিঙ্ক সম্পর্কে আরও জানতে, নিম্নলিখিত রিসোর্সগুলি দেখুন: