ایجاد لیست بیانیه

دستورات در یک لیست دستورات کدگذاری شده با JSON در یک مکان شناخته شده روی یک principal، همانطور که توسط Asset Links Specification تعریف شده است، میزبانی می‌شوند. یک لیست دستورات شامل یک یا چند دستور است و یک principal می‌تواند فقط یک لیست دستورات داشته باشد.

سینتکس لیست دستورات

به سینتکس لیست دستورات مراجعه کنید.

محل فهرست بیانیه‌ها

فهرست بیانیه‌ها در یک مکان شناخته‌شده میزبانی می‌شود که به نوع مدیر (وب‌سایت یا برنامه‌ای که بیانیه‌ها را صادر می‌کند) بستگی دارد.

فهرست بیانیه‌های وب‌سایت

در یک وب‌سایت، فهرست بیانیه‌ها یک فایل متنی است که در آدرس زیر قرار دارد:

scheme // domain /.well-known/assetlinks.json

به نقطه در نام پوشه .well-known توجه کنید.

هر پاسخی از سرور علاوه بر HTTP 200 به عنوان خطا در نظر گرفته می‌شود و منجر به یک لیست دستور خالی می‌شود. برای HTTPS، هر اتصالی بدون زنجیره گواهی که بتوان آن را با لیست ریشه معتبر تأیید کرد، نیز منجر به یک لیست دستور خالی خواهد شد.

مثال

در اینجا یک لیست نمونه از دستورات در یک وب‌سایت آمده است: http://example.digitalassetlinks.org/.well-known/assetlinks.json

لیست‌های بیانیه برنامه اندروید

در یک برنامه اندروید، لیست دستورات یک قطعه کد JSON با همان سینتکس فایل دستورات وب‌سایت است، اما در فایل strings.xml جاسازی شده و همانطور که در ادامه نشان داده شده است، در مانیفست به آن ارجاع داده می‌شود.

در فایل AndroidManifest.xml:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

در فایل res/values/strings.xml:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

مثال

در اینجا یک نمونه قطعه کد res/values/strings.xml برای یک برنامه اندروید که از اشتراک‌گذاری موقعیت مکانی با برنامه پشتیبانی می‌کند (یک ویژگی اندروید که در حال حاضر پشتیبانی نمی‌شود) آورده شده است:

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

تطبیق با یک هدف

هر دستوری در مورد یک هدف است. وقتی شما یک دستور را استفاده می‌کنید، باید هدف موجود در یک دستور را با یک موجودیت در واقعیت مطابقت دهید. اگر هدف دستور با موجودیت مطابقت داشته باشد، دستور اعمال می‌شود. در اینجا قوانینی برای تعیین اینکه آیا یک هدف با یک موجودیت معین مطابقت دارد یا خیر، آورده شده است:

اهداف وب‌سایت

برای یک وب‌سایت، طرح سایت، میزبان و پورت باید دقیقاً مطابقت داشته باشند. پورت‌های پیش‌فرض برای HTTP و HTTPS (به ترتیب ۸۰ و ۴۴۳) به طور ضمنی در نظر گرفته می‌شوند؛ اگر یک عبارت target، http://www.example.com:80 را توصیف کند، آنگاه وب‌سایت http://www.example.com به عنوان یک منطبق در نظر گرفته می‌شود.

مثال

با توجه به عبارت target زیر

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

URI های زیر مطابقت خواهند داشت:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

URL های زیر مطابقت نخواهند داشت:

  • http://www.google.com/ ( طرح اشتباه )
  • https://google.com/ ( نام میزبان مطابقت ندارد )
  • https://www.google.com:444/ ( پورت مطابقت ندارد )

اهداف برنامه

برای یک برنامه، هش گواهی و نام بسته‌ی هدف باید دقیقاً با برنامه مطابقت داشته باشد.