فیلترهای Intent را برای پیوندهای برنامه اضافه کنید

پیوندهای برنامه پیوندهای عمیقی هستند که از طرح HTTP یا HTTPS استفاده می کنند و توسط Android به عنوان مرتبط با وب سایت شما تأیید می شوند. برای ثبت نام برای مدیریت پیوندهای برنامه، این مراحل را دنبال کنید:

  1. یک یا چند فیلتر Intent را به مانیفست برنامه خود اضافه کنید که دامنه یا URL های وب سایت شما را مشخص می کند.
  2. autoVerify="true"attribute به عناصر فیلتر Intent اضافه کنید. این به سیستم سیگنال می دهد که باید سعی کند طرح و دامنه (های) میزبان را در برابر پیکربندی assetlinks.json وب سایت شما تأیید کند.
  3. انجمن های وب سایت را اعلام کنید.

در زیر نمونه ای از اعلامیه App Link با طرح ها و میزبان ها و همچنین 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>

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

  • تأیید خودکار : ویژگی android:autoVerify="true " برای پیوندهای برنامه مورد نیاز است. به سیستم سیگنال می دهد که باید تلاش کند ارتباط بین برنامه شما و طرح ها و دامنه(های) مشخص شده در تگ های <data> را تأیید کند. توصیه می شود به هر فیلتر Intent که می خواهید قابل تأیید باشد autoVerify="true " اضافه کنید.
  • عناصر داده : هر فیلتر هدف پیوندهای برنامه باید شامل یک یا چند عنصر <data> باشد که طرح‌ها و قالب‌های میزبانی را که با دامنه وب‌سایت قابل تأیید شما مطابقت دارند، مشخص می‌کند.
  • طرح‌ها : فیلتر هدف باید شامل عناصر <data> برای طرح‌های http و https باشد.
  • هاست ها : می توانید به صورت اختیاری عناصر <data> را برای مطابقت با یک یا چند میزبان اضافه کنید. برای تطبیق چندین زیر دامنه (مانند *.example.com ) از یک علامت عام ( * ) استفاده کنید. سیستم سعی می کند هر میزبان را در برابر فایل assetlinks.json شما در وب سایت شما تأیید کند. توجه داشته باشید که هر مسیریابی در سطح مسیر باید توسط فایل assetlinks.json مدیریت شود (به بخش بهترین روش ها در زیر مراجعه کنید).

  • میزبان های متعدد : اگر چندین دامنه میزبان را اعلام کنید، سیستم (در اندروید ۱۲ و بالاتر) سعی می کند هر یک را تأیید کند. اگر هر میزبانی تأیید شود، برنامه به کنترل‌کننده پیش‌فرض پیوندهای آن میزبان تأیید شده تبدیل می‌شود. در Android 11 و پایین‌تر، اگر حتی یک میزبان نتواند تأیید شود، تأیید انجام نمی‌شود.

  • فیلترهای هدف چندگانه : هنگامی که قصد شما این است که URLهای منحصر به فرد را اعلام کنید (مانند ترکیب خاصی از طرح و میزبان) مهم است که فیلترهای جداگانه ایجاد کنید، زیرا چندین عنصر <data> در فیلتر هدف یکسان با هم ادغام می شوند تا همه تغییرات ویژگی های ترکیبی آنها را در نظر بگیرند.

ملاحظاتی برای قوانین فیلتر مانیفست

اگر فیلترهایی را برای استفاده با پیوندهای برنامه پویا در Android 15 و بالاتر تنظیم می‌کنید، مهم است که به خاطر داشته باشید که قوانین پویا اعلام‌شده در فایل assetlinks.json سمت سرور نمی‌توانند دامنه قوانین URL را که به‌صورت ایستا در مانیفست برنامه خود اعلام می‌کنید گسترش دهند.

به همین دلیل توصیه می کنیم از این روش استفاده کنید:

  • در مانیفست برنامه خود، وسیع‌ترین دامنه ممکن را تنظیم کنید، مثلاً فقط طرح و دامنه را اعلام کنید
  • برای اصلاح بیشتر، مانند مسیریابی در سطح مسیر، به قوانین assetlinks.json سمت سرور اعتماد کنید.

با این پیکربندی ایده‌آل، می‌توانید به صورت پویا مسیرهای App Links جدید را در صورت نیاز به فایل assetlinks.json اضافه کنید، و بدانید که آنها در محدوده وسیعی که در مانیفست برنامه تنظیم کرده‌اید، قرار می‌گیرند.

پشتیبانی از پیوندهای برنامه برای چندین میزبان

سیستم باید بتواند میزبان مشخص شده در عناصر داده فیلترهای هدف URL برنامه را در برابر فایل‌های پیوندهای دارایی دیجیتال میزبانی شده در دامنه‌های وب مربوطه در آن فیلتر هدف تأیید کند. اگر راستی‌آزمایی ناموفق باشد، سیستم به‌طور پیش‌فرض رفتار استاندارد خود را برای حل هدف، همانطور که در ایجاد پیوندهای عمیق به محتوای برنامه توضیح داده شده است، تنظیم می‌کند. با این حال، برنامه همچنان می‌تواند به‌عنوان یک کنترل‌کننده پیش‌فرض برای هر یک از الگوهای URL تعریف‌شده در فیلترهای هدف دیگر برنامه تأیید شود.

برای مثال، اگر یک فایل assetlinks.json در https://www.example.com/.well-known/assetlinks.json یافت شود، اما نه https://www.example.net/.well-known/assetlinks.json ، یک برنامه با فیلترهای هدف زیر، تأیید را فقط برای https://www.example.com پاس می کند:

<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>

پشتیبانی از پیوند برنامه برای چندین زیر دامنه

پروتکل Digital Asset Links با زیردامنه ها در فیلترهای هدف شما به عنوان میزبان های منحصر به فرد و مجزا رفتار می کند. بنابراین اگر فیلتر قصد شما چندین میزبان را با زیر دامنه های مختلف لیست می کند، باید یک 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 ) منتشر کنید. به عنوان مثال، تا زمانی که فایل assetlinks.json در https://example.com/.well-known/assetlinks.json منتشر شده باشد، برنامه‌ای با فیلتر هدف زیر، تأیید را برای هر نام فرعی example.com (مانند foo.example.com ) ارسال می‌کند:

<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 است. کاربر می تواند برنامه مورد نظر خود را از لیست برنامه های منطبق که در کادر گفتگو ظاهر می شود انتخاب کند.