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

অ্যাপ লিংক হলো ডিপ লিংক যা HTTP অথবা HTTPS স্কিম ব্যবহার করে এবং আপনার ওয়েবসাইটের সাথে সম্পর্কিত হিসেবে অ্যান্ড্রয়েড দ্বারা যাচাই করা হয়। অ্যাপ লিংক পরিচালনা করার জন্য নিবন্ধন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার অ্যাপ ম্যানিফেস্টে এক বা একাধিক ইন্টেন্ট ফিল্টার যোগ করুন যা আপনার ওয়েবসাইট ডোমেন বা URL গুলি নির্দিষ্ট করে।
  2. Intent ফিল্টার উপাদানগুলিতে autoVerify="true"attribute যোগ করুন। এটি সিস্টেমকে সংকেত দেয় যে এটি আপনার ওয়েবসাইটের assetlinks.json কনফিগারেশনের বিরুদ্ধে স্কিম এবং হোস্ট ডোমেন(গুলি) যাচাই করার চেষ্টা করবে।
  3. ওয়েবসাইট অ্যাসোসিয়েশন ঘোষণা করুন।

নিচে স্কিম এবং হোস্টের পাশাপাশি autoVerify="true " সহ একটি অ্যাপ লিঙ্ক ঘোষণার উদাহরণ দেওয়া হল:

<activity
    android:name=".MainActivity"
    android:exported="true"
    ...>
    <!-- Make sure you explicitly set android:autoVerify to "true". -->
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <!-- If a user clicks on a link that uses the "http" scheme, your
             app should be able to delegate that traffic to "https". -->
        <!-- Do not include other schemes, as this will prevent verification. -->
        <data android:scheme="http" />
        <data android:scheme="https" />

        <!-- Include one or more domains that should be verified. -->
        <data android:host="www.example.com" />
        <data android:host="*.example.com" />
    </intent-filter>
</activity>

কোড সম্পর্কে গুরুত্বপূর্ণ বিষয়সমূহ

  • AutoVerify : অ্যাপ লিঙ্কের জন্য android:autoVerify="true " অ্যাট্রিবিউটটি প্রয়োজন। এটি সিস্টেমকে সংকেত দেয় যে এটি আপনার অ্যাপ এবং <data> ট্যাগে নির্দিষ্ট স্কিম এবং ডোমেন(গুলি) এর মধ্যে সম্পর্ক যাচাই করার চেষ্টা করবে। আপনি যে প্রতিটি Intent ফিল্টার যাচাইযোগ্য করতে চান তাতে autoVerify="true " যোগ করার পরামর্শ দেওয়া হচ্ছে।
  • ডেটা উপাদান : প্রতিটি অ্যাপ লিংক ইন্টেন্ট ফিল্টারে এক বা একাধিক <data> উপাদান থাকতে হবে যা আপনার যাচাইযোগ্য ওয়েবসাইট ডোমেনের সাথে মেলে এমন স্কিম এবং হোস্ট ফর্ম্যাটগুলি নির্দিষ্ট করে।
  • স্কিম : ইন্টেন্ট ফিল্টারে http এবং https উভয় স্কিমের জন্য <data> উপাদান অন্তর্ভুক্ত থাকতে হবে।
  • হোস্ট : ঐচ্ছিকভাবে আপনি এক বা একাধিক হোস্ট মেলানোর জন্য <data> উপাদান যোগ করতে পারেন। একাধিক সাবডোমেন (যেমন *.example.com ) মেলানোর জন্য একটি ওয়াইল্ডকার্ড ( * ) ব্যবহার করুন। সিস্টেমটি আপনার ওয়েবসাইটে আপনার assetlinks.json ফাইলের সাথে প্রতিটি হোস্ট যাচাই করার চেষ্টা করবে। মনে রাখবেন যে যেকোনো পাথ-লেভেল রাউটিং assetlinks.json ফাইল দ্বারা পরিচালিত হওয়া উচিত (নীচের সেরা অনুশীলন বিভাগটি দেখুন)।

  • একাধিক হোস্ট : যদি আপনি একাধিক হোস্ট ডোমেন ঘোষণা করেন, তাহলে সিস্টেম (Android 12+ এ) প্রতিটি ডোমেন যাচাই করার চেষ্টা করে। যদি কোনও হোস্ট যাচাই করা হয়, তাহলে অ্যাপটি সেই যাচাইকৃত হোস্টের লিঙ্কগুলির জন্য ডিফল্ট হ্যান্ডলার হয়ে যায়। Android 11 এবং তার নিচের সংস্করণে, যদি একটি হোস্টও যাচাই করা না যায় তবে যাচাইকরণ ব্যর্থ হয়।

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

ম্যানিফেস্ট ফিল্টার নিয়মের জন্য বিবেচনা

যদি আপনি Android 15 এবং তার পরবর্তী ভার্সনে Dynamic App Links ব্যবহারের জন্য ফিল্টার সেট আপ করেন, তাহলে মনে রাখা গুরুত্বপূর্ণ যে সার্ভার-সাইড assetlinks.json ফাইলে ঘোষিত ডায়নামিক নিয়মগুলি আপনার অ্যাপ ম্যানিফেস্টে স্ট্যাটিক্যালি ঘোষিত URL নিয়মগুলির পরিধি প্রসারিত করতে পারে না।

এই কারণে, আমরা এই পদ্ধতিটি ব্যবহার করার পরামর্শ দিচ্ছি:

  • আপনার অ্যাপ ম্যানিফেস্টে, সর্বাধিক বিস্তৃত সুযোগ সেট করুন, যেমন শুধুমাত্র স্কিম এবং ডোমেন ঘোষণা করে
  • আরও পরিমার্জনের জন্য সার্ভার-সাইড assetlinks.json নিয়মের উপর নির্ভর করুন, যেমন পাথ-লেভেল রাউটিং।

এই আদর্শ কনফিগারেশনের সাহায্যে, আপনি প্রয়োজন অনুসারে assetlinks.json ফাইলে নতুন অ্যাপ লিংক পাথগুলি গতিশীলভাবে যুক্ত করতে সক্ষম হবেন, কারণ এটি জেনে রাখবেন যে সেগুলি অ্যাপ ম্যানিফেস্টে আপনার সেট করা বিস্তৃত সুযোগের মধ্যে ফিট করবে।

একাধিক হোস্টের জন্য অ্যাপ লিঙ্ক সমর্থন করুন

সিস্টেমটিকে অবশ্যই অ্যাপের URL ইন্টেন্ট ফিল্টারের ডেটা এলিমেন্টে উল্লেখিত হোস্টটি সেই ইন্টেন্ট ফিল্টারের সংশ্লিষ্ট ওয়েব ডোমেনে হোস্ট করা ডিজিটাল অ্যাসেট লিংক ফাইলের বিপরীতে যাচাই করতে সক্ষম হতে হবে। যদি যাচাইকরণ ব্যর্থ হয়, তাহলে সিস্টেমটি "Create Deep Links to App Content" এ বর্ণিত ইন্টেন্টটি সমাধান করার জন্য তার স্ট্যান্ডার্ড আচরণে ডিফল্ট হয়। তবে, অ্যাপটির অন্যান্য ইন্টেন্ট ফিল্টারগুলিতে সংজ্ঞায়িত যেকোনো URL প্যাটার্নের জন্য অ্যাপটিকে এখনও ডিফল্ট হ্যান্ডলার হিসাবে যাচাই করা যেতে পারে।

উদাহরণস্বরূপ, নিম্নলিখিত ইন্টেন্ট ফিল্টার সহ একটি অ্যাপ শুধুমাত্র https://www.example.com এর জন্য যাচাইকরণ পাস করবে যদি https://www.example.com/.well-known/assetlinks.json এ একটি assetlinks.json ফাইল পাওয়া যায় কিন্তু https://www.example.net/.well-known/assetlinks.json পাওয়া যায় না:

<application>

  <activity android:name=”MainActivity”>
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="http" />
      <data android:scheme="https" />
      <data android:host="www.example.com" />
    </intent-filter>
  </activity>
  <activity android:name="SecondActivity">
    <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:scheme="https" />
     <data android:host="www.example.net" />
    </intent-filter>
  </activity>

</application>

একাধিক সাবডোমেনের জন্য অ্যাপ লিঙ্কিং সমর্থন করে

ডিজিটাল অ্যাসেট লিংক প্রোটোকল আপনার ইন্টেন্ট ফিল্টারের সাবডোমেনগুলিকে অনন্য, পৃথক হোস্ট হিসাবে বিবেচনা করে। তাই যদি আপনার ইন্টেন্ট ফিল্টারে বিভিন্ন সাবডোমেন সহ একাধিক হোস্ট তালিকাভুক্ত করা হয়, তাহলে আপনাকে প্রতিটি ডোমেনে একটি বৈধ assetlinks.json প্রকাশ করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত ইন্টেন্ট ফিল্টারে www.example.com এবং mobile.example.com স্বীকৃত ইন্টেন্ট URL হোস্ট হিসাবে অন্তর্ভুক্ত রয়েছে। তাই একটি বৈধ assetlinks.json https://www.example.com/.well-known/assetlinks.json এবং https://mobile.example.com/.well-known/assetlinks.json উভয় সাইটেই প্রকাশ করতে হবে।

<application>
  <activity android:name="MainActivity">
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https" />
      <data android:scheme="https" />
      <data android:host="www.example.com" />
      <data android:host="mobile.example.com" />
    </intent-filter>
  </activity>
</application>

বিকল্পভাবে, যদি আপনি আপনার হোস্টনেমটি একটি ওয়াইল্ডকার্ড (যেমন *.example.com ) দিয়ে ঘোষণা করেন, তাহলে আপনাকে অবশ্যই আপনার assetlinks.json ফাইলটি রুট হোস্টনেম ( example.com ) এ প্রকাশ করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত ইন্টেন্ট ফিল্টার সহ একটি অ্যাপ example.com এর যেকোনো সাব-নেমের (যেমন foo.example.com ) যাচাইকরণে উত্তীর্ণ হবে যতক্ষণ না assetlinks.json ফাইলটি https://example.com/.well-known/assetlinks.json এ প্রকাশিত হয়:

<application>
  <activity android:name="MainActivity">
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https" />
      <data android:host="*.example.com" />
    </intent-filter>
  </activity>
</application>

একই ডোমেনের সাথে সম্পর্কিত একাধিক অ্যাপ আছে কিনা তা পরীক্ষা করুন।

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

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