Uygulama bağlantıları için intent filtreleri ekleme

Uygulama Bağlantıları, HTTP veya HTTPS şemasını kullanan ve Android tarafından web sitenizle ilişkili olduğu doğrulanan derin bağlantılardır. Uygulama Bağlantılarını işlemek için kaydolmak üzere aşağıdaki adımları uygulayın:

  1. Uygulama manifestinize, web sitenizin alanını veya URL'lerini belirten bir veya daha fazla amaç filtresi ekleyin.
  2. autoVerify="true"attribute öğesini Intent filtresi öğelerine ekleyin. Bu, sisteme şemayı ve ana makine alanlarını web sitenizin assetlinks.json yapılandırmasına göre doğrulamaya çalışması gerektiğini bildirir.
  3. Web sitesi ilişkilendirmelerini beyan edin.

Aşağıda, şemalar ve ana makinelerin yanı sıra autoVerify="true" içeren bir uygulama bağlantısı bildirimi örneği verilmiştir:

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

Kodla ilgili önemli noktalar

  • AutoVerify: Uygulama Bağlantıları için android:autoVerify="true" özelliği gereklidir. Sisteme, uygulamanızla <data> etiketlerinde belirtilen şemalar ve alan adları arasındaki ilişkilendirmeyi doğrulamaya çalışması gerektiğini bildirir. Doğrulanabilir olmasını istediğiniz her IntentFilter'a autoVerify="true eklemeniz önerilir.
  • Veri öğeleri: Her uygulama bağlantıları intent filtresi, doğrulanabilir web sitesi alanınızla eşleşen şemaları ve ana makine biçimlerini belirten bir veya daha fazla <data> öğesi içermelidir.
  • Şemalar: Intent filtresi, hem http hem de https şemaları için <data> öğelerini içermelidir.
  • Ana makineler: İsteğe bağlı olarak bir veya daha fazla ana makineyle eşleşecek <data> öğeleri ekleyebilirsiniz. Birden fazla alt alan adının (ör. *) eşleşmesi için joker karakter (*) kullanın. Sistem, her ana makineyi web sitenizdeki assetlinks.json dosyanıza göre doğrulamaya çalışır.*.example.com Yol düzeyindeki yönlendirmelerin assetlinks.json dosyası tarafından işlenmesi gerektiğini unutmayın (aşağıdaki en iyi uygulamalar bölümüne bakın).

  • Birden fazla ana makine: Birden fazla ana makine alanı beyan ederseniz sistem (Android 12 ve sonraki sürümlerde) her birini doğrulamaya çalışır. Herhangi bir ana makine doğrulanırsa uygulama, doğrulanmış ana makineden gelen bağlantılar için varsayılan işleyici olur. Android 11 ve önceki sürümlerde tek bir ana makine bile doğrulanamazsa doğrulama başarısız olur.

  • Birden fazla amaç filtresi: Benzersiz URL'ler (ör. şema ve ana makinenin belirli bir kombinasyonu) bildirmek istediğinizde ayrı filtreler oluşturmanız önemlidir. Aynı amaç filtresindeki birden fazla <data> öğesi, birleştirilmiş özelliklerinin tüm varyasyonlarını hesaba katmak için birleştirilir.

Manifest filtreleme kurallarıyla ilgili dikkat edilmesi gereken noktalar

Android 15 ve sonraki sürümlerde Dinamik Uygulama Bağlantıları ile kullanılacak filtreler ayarlıyorsanız sunucu tarafındaki assetlinks.json dosyasında tanımlanan dinamik kuralların, uygulama manifestinizde statik olarak tanımladığınız URL kurallarının kapsamını genişletemeyeceğini unutmayın.

Bu nedenle, şu yaklaşımı kullanmanızı öneririz:

  • Uygulama manifestinizde, yalnızca şema ve alan adı beyan ederek mümkün olan en geniş kapsamı ayarlayın.
  • Yol düzeyinde yönlendirme gibi daha fazla iyileştirme için sunucu tarafındaki assetlinks.json kurallarından yararlanın.

Bu ideal yapılandırmayla, uygulama manifestinde belirlediğiniz geniş kapsamın içine sığacağını bilerek assetlinks.json dosyasına gerektiğinde dinamik olarak yeni uygulama bağlantısı yolları ekleyebilirsiniz.

Birden fazla ana makine için uygulama bağlantılarını destekleme

Sistem, uygulamanın URL intent filtrelerinin veri öğelerinde belirtilen ana makineyi, bu intent filtresindeki ilgili web alanlarında barındırılan Digital Asset Links dosyalarına göre doğrulayabilmelidir. Doğrulama başarısız olursa sistem, Uygulama İçeriğine Derin Bağlantılar Oluşturma bölümünde açıklandığı gibi amacı çözmek için varsayılan olarak standart davranışını kullanır. Ancak uygulama, uygulamanın diğer intent filtrelerinde tanımlanan URL kalıplarından herhangi biri için varsayılan işleyici olarak doğrulanmaya devam edebilir.

Örneğin, aşağıdaki amaç filtrelerine sahip bir uygulama, https://www.example.com/.well-known/assetlinks.json konumunda assetlinks.json dosyası bulunursa ancak https://www.example.net/.well-known/assetlinks.json konumunda bulunmazsa yalnızca https://www.example.com için doğrulamayı geçer:

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

Birden fazla alt alan adı için uygulama bağlantısı desteği

Digital Asset Links protokolü, intent filtrelerinizdeki alt alan adlarını benzersiz ve ayrı ana makineler olarak değerlendirir. Bu nedenle, amaç filtreniz farklı alt alan adlarına sahip birden fazla ana makineyi listeliyorsa her alanda geçerli bir assetlinks.json yayınlamanız gerekir. Örneğin, aşağıdaki intent filtresi, kabul edilen intent URL ana makineleri olarak www.example.com ve mobile.example.com'yi içerir. Bu nedenle, geçerli bir assetlinks.json hem https://www.example.com/.well-known/assetlinks.json hem de https://mobile.example.com/.well-known/assetlinks.json adresinde yayınlanmalıdır.

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

Alternatif olarak, ana makine adınızı joker karakterle (ör. *.example.com) tanımlarsanız assetlinks.json dosyanızı kök ana makine adında (example.com) yayınlamanız gerekir. Örneğin, aşağıdaki intent filtresine sahip bir uygulama, assetlinks.json dosyası https://example.com/.well-known/assetlinks.json adresinde yayınlandığı sürece example.com'nin herhangi bir alt adı (ör. foo.example.com) için doğrulamayı geçer.

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

Aynı alanla ilişkili birden fazla uygulama olup olmadığını kontrol etme

Her biri aynı alanla ilişkili birden fazla uygulama yayınlarsanız her bir uygulama başarıyla doğrulanabilir. Ancak uygulamalar, bir uygulamanın lite ve tam sürümlerinde olduğu gibi tam olarak aynı alan ana makinesini ve yolu çözebiliyorsa yalnızca en son yüklenen uygulama, bu alan için web intent'lerini çözebilir.

Bu gibi durumlarda, gerekli paket görünürlüğüne sahip olduğunuz varsayılarak kullanıcının cihazında olası çakışan uygulamaları kontrol edin. Ardından, uygulamanızda queryIntentActivities çağrısından elde edilen sonuçları içeren özel bir seçici iletişim kutusu gösterin. Kullanıcı, iletişim kutusunda görünen eşleşen uygulamalar listesinden tercih ettiği uygulamayı seçebilir.