ওয়েবসাইট অ্যাসোসিয়েশন এবং গতিশীল নিয়ম কনফিগার করুন

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

অ্যান্ড্রয়েড 15+ এ ডায়নামিক অ্যাপ লিঙ্কগুলির জন্য, assetlinks.json ফাইলটিও যেখানে আপনি আপনার গতিশীল নিয়ম কনফিগারেশন সংজ্ঞায়িত করেন , যেমন পাথ, ফ্র্যাগমেন্ট এবং কোয়েরি প্যারামিটারের জন্য প্যাটার্ন ম্যাচার। Android 15 (API লেভেল 35) বা তার পরে চলমান Android ডিভাইসগুলিতে Google পরিষেবাগুলি ইনস্টল করা আছে সেগুলি পর্যায়ক্রমে ফাইলটি পুনরুদ্ধার করবে এবং অ্যাপের ম্যানিফেস্টে স্ট্যাটিক কনফিগারেশনের সাথে আপনার গতিশীল কনফিগারেশন একত্রিত করবে।

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

ওয়েবসাইট সমিতি ঘোষণা

ওয়েবসাইটের সাথে যুক্ত অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি নির্দেশ করতে এবং অ্যাপের URL ইন্টেন্টগুলি যাচাই করতে আপনাকে অবশ্যই আপনার ওয়েবসাইটে একটি ডিজিটাল সম্পদ লিঙ্ক JSON ফাইল প্রকাশ করতে হবে৷ JSON ফাইলটি সংশ্লিষ্ট অ্যাপ সনাক্ত করতে নিম্নলিখিত ক্ষেত্রগুলি ব্যবহার করে:

  • package_name : অ্যাপের build.gradle ফাইলে ঘোষিত অ্যাপ্লিকেশন আইডি
  • sha256_cert_fingerprints : আপনার অ্যাপের সাইনিং সার্টিফিকেটের SHA256 ফিঙ্গারপ্রিন্ট। আপনি জাভা কীটুল ব্যবহার করে ফিঙ্গারপ্রিন্ট তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

keytool -list -v -keystore my-release-key.keystore

  • এই ক্ষেত্রটি একাধিক আঙ্গুলের ছাপ সমর্থন করে, যা আপনার অ্যাপের বিভিন্ন সংস্করণকে সমর্থন করতে ব্যবহার করা যেতে পারে, যেমন ডিবাগ এবং প্রোডাকশন বিল্ড৷ আপনি যদি আপনার অ্যাপের জন্য প্লে অ্যাপ সাইনিং ব্যবহার করেন, তাহলে স্থানীয়ভাবে keytool চালানোর মাধ্যমে উত্পাদিত শংসাপত্র ফিঙ্গারপ্রিন্ট সাধারণত ব্যবহারকারীদের ডিভাইসে থাকা একের সাথে মেলে না। আপনি Release > Setup > App signing এর অধীনে আপনার প্লে কনসোল ডেভেলপার অ্যাকাউন্টে আপনার অ্যাপের জন্য Play অ্যাপ সাইনিং ব্যবহার করছেন কিনা তা যাচাই করতে পারেন; যদি আপনি তা করেন, তাহলে আপনি একই পৃষ্ঠায় আপনার অ্যাপের জন্য সঠিক ডিজিটাল সম্পদ লিঙ্ক JSON স্নিপেটও পাবেন।

নিম্নলিখিত উদাহরণ assetlinks.json ফাইলটি একটি com.example Android অ্যাপে লিঙ্ক খোলার অধিকার প্রদান করে:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

একাধিক অ্যাপের সাথে একটি ওয়েবসাইট সংযুক্ত করুন

একটি ওয়েবসাইট একই assetlinks.json ফাইলের মধ্যে একাধিক অ্যাপের সাথে অ্যাসোসিয়েশন ঘোষণা করতে পারে। নিম্নলিখিত ফাইল তালিকাটি একটি বিবৃতি ফাইলের একটি উদাহরণ দেখায় যা পৃথকভাবে দুটি অ্যাপের সাথে সম্পর্ক ঘোষণা করে এবং https://www.example.com/.well-known/assetlinks.json এ থাকে:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.puppies.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
  },
  {
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.monkeys.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

বিভিন্ন অ্যাপ একই ওয়েব হোস্টের অধীনে বিভিন্ন সংস্থানের লিঙ্ক পরিচালনা করতে পারে। উদাহরণস্বরূপ, app1 https://example.com/articles জন্য একটি অভিপ্রায় ফিল্টার ঘোষণা করতে পারে এবং app2 https://example.com/videos জন্য একটি অভিপ্রায় ফিল্টার ঘোষণা করতে পারে।

একটি একক অ্যাপের সাথে একাধিক ওয়েবসাইট সংযুক্ত করুন

একাধিক ওয়েবসাইট তাদের নিজ নিজ assetlinks.json ফাইলে একই অ্যাপের সাথে অ্যাসোসিয়েশন ঘোষণা করতে পারে। নিম্নলিখিত ফাইল তালিকাগুলি app1 এর সাথে example.com এবং example.net এর অ্যাসোসিয়েশন ঘোষণা করার একটি উদাহরণ দেখায়৷ প্রথম তালিকাটি app1-এর সাথে example.com-এর সংযোগ দেখায়:

https://www.example.com/.well-known/assetlinks.json

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.mycompany.app1",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

পরবর্তী তালিকায় app1 এর সাথে example.net এর সংযোগ দেখায়। শুধুমাত্র সেই অবস্থান যেখানে এই ফাইলগুলি হোস্ট করা হয়েছে তা আলাদা (. com এবং . net ):

https://www.example.net/.well-known/assetlinks.json

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.mycompany.app1",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

গতিশীল নিয়ম কনফিগার করুন

অ্যান্ড্রয়েড 15+ এ ডায়নামিক অ্যাপ লিঙ্কগুলি আপনাকে সার্ভার-সাইড ডিপ লিঙ্ক ম্যাচিং নিয়মগুলি ব্যবহার করতে দেয় যা আপনার অ্যাপ ম্যানিফেস্টে স্ট্যাটিকভাবে সংজ্ঞায়িত নিয়মগুলির সাথে একসাথে কাজ করে। আপনার assetlinks.json ফাইল যেখানে আপনি গতিশীল নিয়ম সংজ্ঞায়িত করেন। এটি অন্তর্ভুক্ত করা ঐচ্ছিক।

Android 15 (API লেভেল 35) বা তার পরে চলমান Android ডিভাইসগুলিতে Google পরিষেবাগুলি ইনস্টল করা আছে সেগুলি পর্যায়ক্রমে আপনার সার্ভার থেকে এই ফাইলটি পুনরুদ্ধার করবে এবং অ্যাপের ম্যানিফেস্টে স্ট্যাটিক কনফিগারেশনের সাথে আপনার গতিশীল নিয়ম কনফিগারেশনকে একত্রিত করবে। ডায়নামিক নিয়ম সহ একটি assetlinks.json ফাইলের উদাহরণ নিচে দেওয়া হল:

[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": [...]
    },
    "relation_extensions": {
      "delegate_permission/common.handle_all_urls": {
        "dynamic_app_link_components": [
          {"?": {"dl": "*"}},
          {"#": "app"},
          {"/": "/products/*"},
          {"/": "/shoes", "?": {"in_app": "true"}},
          {"/": "*", "exclude": true}
        ]
      }
    }
  }
]

কোড সম্পর্কে মূল পয়েন্ট

  • ডায়নামিক অ্যাপ লিঙ্কগুলি dynamic_app_link_components নামে একটি নতুন ডিজিটাল সম্পদ লিঙ্ক সম্পর্ক এক্সটেনশন যুক্ত করে, যেখানে আপনি আপনার গতিশীল নিয়মগুলি কনফিগার করেন৷
  • গতিশীল নিয়মে পাথ, ফ্র্যাগমেন্ট এবং ক্যোয়ারী প্যারামিটারের জন্য প্যাটার্ন ম্যাচার অন্তর্ভুক্ত থাকতে পারে।
  • আপনি যেকোন প্যাটার্ন ম্যাচারকে বাদ দেওয়া হিসাবে চিহ্নিত করতে পারেন, যাতে ম্যাচিং ইউআরএলগুলি আপনার অ্যাপ খুলতে না পারে।
  • এই উদাহরণটি পাথ ( "/" ), ফ্র্যাগমেন্ট ( "#" ), এবং ক্যোয়ারী প্যারামিটার ( "?" ), এবং বাদ দেওয়া মিলারদের উদাহরণ দেখায় ( "exclude" )
  • ফাইলের যেকোন ক্ষেত্র ত্রুটিপূর্ণ বা খালি থাকলে, অ্যান্ড্রয়েড গতিশীল নিয়মগুলিকে বাতিল করে দেয় এবং ডিভাইসটি সেই নিয়মগুলিতে ফিরে আসে যা অ্যাপের ম্যানিফেস্টে স্থিরভাবে সংজ্ঞায়িত করা হয়েছে৷

ডায়নামিক নিয়মগুলি শুধুমাত্র সেই নিয়মগুলি নির্দিষ্ট করতে পারে যা আপনি আপনার অ্যাপের ম্যানিফেস্ট ফাইলে ঘোষণা করা ডোমেনের সুযোগের মধ্যে প্রযোজ্য। নিচে দেখুন.

গতিশীল নিয়ম ঘোষণা করুন

ডায়নামিক অ্যাপ লিংক একটি নতুন dynamic_app_link_components রিলেশন এক্সটেনশন সমর্থন করে, যা নিয়ম অবজেক্টের একটি অ্যারে ধারণ করে। প্রতিটি নিয়ম পাথ, টুকরো এবং ক্যোয়ারী প্যারামিটারের জন্য প্যাটার্ন ম্যাচার ব্যবহার করে সংজ্ঞায়িত করা হয় যা আপনার অ্যাপ খুলবে। ম্যাচার্সকে পৃথকভাবে বাদ দেওয়া যেতে পারে যাতে তারা আপনার অ্যাপ খুলতে না পারে। এই সব ঐচ্ছিক.

  • পাথ ম্যাচিং
    • কী: "/"
    • মান: একক স্ট্রিং, ইউআরএল পাথের জন্য মিলিত অভিব্যক্তি
  • টুকরো ম্যাচিং
    • কী: "#"
    • মান: একক স্ট্রিং, URL খণ্ডের জন্য মিলিত অভিব্যক্তি
  • ক্যোয়ারী পরামিতি মিল
    • কী: "?"
    • মান: ইউআরএল ক্যোয়ারী প্যারামিটারে কী/মান জোড়া মেলে অভিধান।
    • উদাহরণস্বরূপ {" ?", {"dl": "*", "in_app":"true "} কোয়েরি স্ট্রিং " ?in_app=true&dl=abc " এর সাথে মিলবে৷
    • অভিধানে কী/মান জোড়ার ক্রম ক্যোয়ারী স্ট্রিং-এর জোড়ার ক্রমটির সাথে মেলে না। অতিরিক্তভাবে, অভিধানের ক্যোয়ারী স্ট্রিং-এর সমস্ত কী/মান জোড়ার সাথে মিলিত হওয়ার প্রয়োজন নেই, তবে প্রতিটি অভিধান এন্ট্রির জন্য একটি মিল খুঁজে পাওয়া আবশ্যক।
    • উদাহরণস্বরূপ অভিধানটি কোয়েরি স্ট্রিং " ?lang=en&in_app=true&tz=pst&dl=abc " এর সাথেও মিলবে, কিন্তু কোয়েরি স্ট্রিং " ?lang=en&tz=pst&dl=abc " এর সাথে মেলে না
  • বাদ
    • কী: "বাদ"
    • মান: dynamic_app_link_components এ সংজ্ঞায়িত প্রতিটি নিয়মের জন্য ঐচ্ছিক সত্য/মিথ্যা মান (উদাহরণ দেখুন)।

আপনি প্যাটার্ন ম্যাচার্সে এই বিশেষ অক্ষর ব্যবহার করতে পারেন:

  • প্যাটার্নে ওয়াইল্ডকার্ডের পরের অক্ষরটি ম্যাচিং স্ট্রিংয়ে পাওয়া না যাওয়া পর্যন্ত "*" শূন্য বা তার বেশি অক্ষর মেলে
  • "?" যেকোনো একক অক্ষরের সাথে মিলে যায়
  • "?*" 1 বা তার বেশি অক্ষর মেলে

মানগুলির জন্য অন্য কোন অক্ষর সীমাবদ্ধতা নেই।

গতিশীল নিয়ম অর্ডার করুন

যে ক্রমানুসারে বিধি ঘোষণা করা হয় তা গুরুত্বপূর্ণ। অ্যান্ড্রয়েড একটি মিল খুঁজে না পাওয়া পর্যন্ত প্রতিটি নিয়মকে ক্রমানুসারে মূল্যায়ন করে।

নিম্নোক্ত উদাহরণ দেখায় কিভাবে অর্ডার হ্যান্ডলিং প্রভাবিত করতে পারে। প্রথম নিয়মটি সমস্ত পাথের সাথে মেলে ("*") কিন্তু মিলগুলিকে বাদ দেয় (বাদ: সত্য), যার অর্থ এটি অ্যাপ খোলা থেকে সমস্ত URL বাদ দেয়৷ এই ক্ষেত্রে, দ্বিতীয় নিয়ম যা "/path1" কে অনুমতি দেয় তা কখনই মূল্যায়ন করা হবে না।

dynamic_app_link_components: [
  {​"/": "*", exclude: true},
  {​"/": "/path1"}
]

যাইহোক, পরবর্তী উদাহরণে, "/path1" নিয়মটি প্রথমে ঘোষণা করা হয়েছে, তাই এটি প্রথমে মূল্যায়ন করা হবে এবং "/path1" এর সাথে মিলে যাওয়া একটি URL এর জন্য অ্যাপটি খুলবে৷ দ্বিতীয় নিয়ম, যা অ্যাপটি খোলা থেকে সমস্ত URL বাদ দেয়, দ্বিতীয়টি মূল্যায়ন করা হবে, তবে শুধুমাত্র যদি প্রথম নিয়মটি মিল না হয়।

dynamic_app_link_components: [
  {​"/": "/path1"},
  {​"/": "*", exclude: true}
]

সঠিকভাবে আপনার গতিশীল নিয়ম স্কোপ

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

assetlinks.json ফাইলে ঘোষিত ডায়নামিক নিয়মগুলি শুধুমাত্র সেই হোস্টগুলির জন্য নিয়ম নির্দিষ্ট করতে পারে যা আপনি আপনার অ্যাপের AndroidManifest.xml ফাইলে ঘোষণা করেন। ডায়নামিক নিয়মগুলি আপনার অ্যাপ ম্যানিফেস্টে স্ট্যাটিকভাবে ঘোষণা করা URL নিয়মগুলির পরিধি প্রসারিত করতে পারে না

এই কারণে, আমরা আপনার গতিশীল এবং স্ট্যাটিক নিয়ম জুড়ে এই পদ্ধতিটি ব্যবহার করার পরামর্শ দিই:

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

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

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

  • একই সাইট, সম্পর্ক এবং অ্যাপের জন্য একাধিক বিবৃতি দেখুন, যা একটি ডাইনামিক_অ্যাপ_লিঙ্ক_কম্পোনেন্ট অবজেক্ট ঘোষণা করে।
  • একাধিক ডাইনামিক_অ্যাপ_লিঙ্ক_কম্পোনেন্ট অবজেক্টের জন্য দেখুন যেগুলি একক বিবৃতিতে ঘোষণা করা হয়েছে

এই ধরনের ক্ষেত্রে, অ্যান্ড্রয়েড গ্যারান্টি দেয় না যে কোন গতিশীল নিয়ম কনফিগারেশন ব্যবহার করা হবে।

আগের অ্যাপ লিঙ্ক কনফিগারেশনের সাথে গতিশীল নিয়মের সামঞ্জস্য

আপনি যদি ইতিমধ্যেই অ্যাপ লিঙ্ক সমর্থন করেন, তাহলে আপনি সরাসরি আপনার বিদ্যমান assetlinks.json ফাইলে ডায়নামিক অ্যাপ লিঙ্কের জন্য সমর্থন যোগ করতে পারেন। আপনার অ্যাপ লিঙ্কগুলি যাচাই করার জন্য সম্পর্ক ক্ষেত্রগুলি একই থাকে এবং আপনি অন্য কোনও পরিবর্তন ছাড়াই গতিশীল নিয়মগুলির জন্য নতুন সম্পর্ক এক্সটেনশন ক্ষেত্রগুলি যোগ করতে পারেন৷

অ্যান্ড্রয়েড 14 (API স্তর 34 বা তার আগের) চলমান Android ডিভাইসগুলি গতিশীল নিয়মগুলির জন্য নতুন সম্পর্ক এক্সটেনশন ক্ষেত্রগুলিকে উপেক্ষা করে, যখন Android 15 এবং পরবর্তীতে চলমান ডিভাইসগুলি সেই নিয়মগুলিকে আপনার ম্যানিফেস্ট-সংজ্ঞায়িত নিয়মগুলির সাথে একত্রিত করবে৷

JSON যাচাইকরণ ফাইলটি প্রকাশ করুন

আপনাকে অবশ্যই নিম্নলিখিত অবস্থানে আপনার JSON যাচাইকরণ ফাইল প্রকাশ করতে হবে:

https://domain.name/.well-known/assetlinks.json

নিম্নলিখিত বিষয়ে নিশ্চিত হন:

  • assetlinks.json ফাইলটি কন্টেন্ট-টাইপ application/json সাথে পরিবেশন করা হয়।
  • assetlinks.json ফাইলটি অবশ্যই HTTPS সংযোগের মাধ্যমে অ্যাক্সেসযোগ্য হতে হবে, আপনার অ্যাপের উদ্দেশ্য ফিল্টারগুলি HTTPS কে ডেটা স্কিম হিসাবে ঘোষণা করুক না কেন।
  • assetlinks.json ফাইলটি অবশ্যই কোনো রিডাইরেক্ট ছাড়াই অ্যাক্সেসযোগ্য হতে হবে (কোন 301 বা 302 রিডাইরেক্ট নয়)।
  • যদি আপনার অ্যাপ লিঙ্ক একাধিক হোস্ট ডোমেন সমর্থন করে, তাহলে আপনাকে অবশ্যই প্রতিটি ডোমেনে assetlinks.json ফাইল প্রকাশ করতে হবে। একাধিক হোস্টের জন্য সহায়ক অ্যাপ লিঙ্কিং দেখুন।
  • ম্যানিফেস্ট ফাইলে পরীক্ষার URL সহ আপনার অ্যাপ প্রকাশ করবেন না যা জনসাধারণের কাছে অ্যাক্সেসযোগ্য নাও হতে পারে (যেমন যেকোনও যা শুধুমাত্র একটি VPN দিয়ে অ্যাক্সেসযোগ্য)৷ এই ধরনের ক্ষেত্রে একটি কাজ হল ডেভ বিল্ডগুলির জন্য একটি ভিন্ন ম্যানিফেস্ট ফাইল তৈরি করতে বিল্ড ভেরিয়েন্টগুলি কনফিগার করা

নিম্নলিখিত সম্পর্কিত নির্দেশিকা দেখুন: