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:
- Uygulama manifestinize, web sitenizin alanını veya URL'lerini belirten bir veya daha fazla amaç filtresi ekleyin.
- Intent filtresi öğelerine
autoVerify="true"attributeekleyin. Bu, sisteme şemayı ve ana makine alanlarını web sitenizinassetlinks.jsonyapılandırmasına göre doğrulamaya çalışması gerektiğini bildirir. - 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ız ile<data>etiketlerinde belirtilen şemalar ve alanlar arasındaki ilişkilendirmeyi doğrulamaya çalışması gerektiğini bildirir. Doğrulanabilir olmasını istediğiniz her IntentFilter'aautoVerify="trueeklemeniz ö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>öğe içermelidir. - Şemalar: Intent filtresi, hem
httphem dehttpsş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ı (ör.*.example.com) eşleştirmek için joker karakter (*) kullanın. Sistem, her ana makineyi web sitenizdeki assetlinks.json dosyanıza göre doğrulamaya çalışır. 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'de 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 intent filtresi: Benzersiz URL'ler (ör. şema ve ana makinenin belirli bir kombinasyonu) bildirmek istediğinizde ayrı filtreler oluşturmanız önemlidir. Bunun nedeni, aynı intent filtresindeki birden fazla
<data>öğesinin, birleştirilmiş özelliklerinin tüm varyasyonlarını hesaba katmak için birleştirilmesidir.
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ını belirterek 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
Sistemin, uygulamanın URL intent filtrelerinin veri öğelerinde belirtilen ana makineyi, söz konusu intent filtresindeki ilgili web alanlarında barındırılan Digital Asset Links dosyalarına göre doğrulayabilmesi gerekir. Doğrulama başarısız olursa sistem, intent'i çözmek için Uygulama İçeriğine Derin Bağlantılar Oluşturma bölümünde açıklandığı gibi standart davranışına geri döner. 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 intent filtrelerine sahip bir uygulama, https://www.example.com için doğrulama adımını yalnızca https://www.example.com/.well-known/assetlinks.json konumunda assetlinks.json dosyası bulunursa ancak https://www.example.net/.well-known/assetlinks.json konumunda bulunmazsa 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, intent filtreniz farklı alt alan adlarına sahip birden fazla ana makineyi listeliyorsa her alan adında geçerli bir assetlinks.json yayınlamanız gerekir.
Örneğin, aşağıdaki intent filtresi, kabul edilen intent URL'si ana makineleri olarak www.example.com ve mobile.example.com'u 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) bildirirseniz 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 konumunda yayınlandığı sürece example.com'un herhangi bir alt adı (ör. foo.example.com) için doğrulama adımını 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.