Android uygulama bağlantısı, web sitesi URL'lerinizin kullanıcının uygulamayı seçmesini gerektirmeden Android uygulamanızda ilgili içeriği hemen açmasına olanak tanıyan özel bir derin bağlantı türüdür. Android uygulama bağlantıları, uygulamanızın web sitesi tarafından onaylandığına dair güven oluşturmak ve bu alan adının bağlantılarını otomatik olarak açmak için Digital Asset Links API'yi kullanır. Sistem, URL'lerin sahibi olduğunuzu başarıyla doğrularsa sistemimiz bu URL amaçlarını otomatik olarak uygulamanıza yönlendirir.
Hem uygulamanızın hem de web sitesi URL'lerinin sahibi olduğunuzu doğrulamak için şu adımları uygulayın:
autoVerify
özelliğini içeren intent filtreleri ekleyin. Bu özellik, sisteme, doğrulamanın mevcut olup olmadığının uygulamanız, intent filtrelerinizde kullanılan URL alanlarına ait.Aşağıdaki konumda bir Digital Asset Links JSON dosyası barındırarak web siteniz ile intent filtreleriniz arasındaki ilişkilendirmeyi belirtin:
https://domain.name/.well-known/assetlinks.json
İlgili bilgileri aşağıdaki kaynaklarda bulabilirsiniz:
Uygulama bağlantıları doğrulaması için intent filtreleri ekleme
Uygulamanız için bağlantı işleme doğrulamasını etkinleştirmek üzere aşağıdaki biçimle eşleşen intent filtreleri ekleyin:
<!-- 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 shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
autoVerify
yönergesinin yalnızca bir <intent-filter>
içinde yer alması yeterli olsa da
bildirimi (bu ana makine, işaretlenmemiş diğer
her bir açıklamaya autoVerify
eklemeniz önerilir
Tutarlılık için <intent-filter>
öğesi. Bu aynı zamanda,
öğeleri kaldırmanız veya yeniden düzenlememeniz durumunda uygulamanız ilişkilendirilmiş olarak kalır.
hale getirebilirsiniz.
Alan doğrulama işlemi için internet bağlantısı gerekir ve işlemin tamamlanması biraz zaman alabilir. Sistem, sürecin verimliliğini artırmak için
Android 12 veya sonraki sürümleri hedefleyen bir uygulamanın alanını doğrular
yalnızca söz konusu alan adı<intent-filter>
önceki kod snippet'inde belirtilenle tam olarak aynı biçimde olmalıdır.
Birden fazla ana makine için uygulama bağlama desteği
Sistem, uygulamanın URL intent filtrelerinin verilerinde belirtilen ana makineyi doğrulayabilmelidir. ilgili web alanlarında barındırılan ve Dijital Varlık Bağlantıları intent filtresine dokunun. Doğrulama başarısız olursa sistem varsayılan olarak standart çalışma biçimini kullanır. aşağıda açıklandığı gibi, bu amacı çözümlemek için Uygulama İçeriğine Derin Bağlantılar Oluşturma Ancak, uygulama yine de varsayılan işleyici olarak doğrulanabilir uygulamanın diğer intent filtrelerinde tanımlanan URL kalıplarından herhangi biri için
Not: Android 11 (API düzeyi 30) ve önceki sürümlerde sistem Kullanıcı, eşleşen bir eşleşme bulmadığı sürece uygulamanızı varsayılan işleyici olarak doğrulamaz. manifest'ini kullanabilirsiniz.
Örneğin, aşağıdaki amaca sahip bir uygulama:
filtreler yalnızca https://www.example.com
için doğrulamayı geçer
assetlinks.json
dosyası şu konumda bulunursa:
https://www.example.com/.well-known/assetlinks.json
ancak şu değil:
https://www.example.net/.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="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>
Not: Tüm <data>
öğeleri aynı intent filtresinde
özellikleri birleştirilir. Örneğin, yukarıdaki ilk intent filtresi yalnızca HTTPS şemasını açıklayan bir <data>
öğesi içerir. Ancak amacın gerçekleşebilmesi için diğer <data>
öğesiyle birleştirilir.
filtresi hem http://www.example.com
hem de https://www.example.com
değerini destekler.
Bu nedenle, belirli kombinasyonlar tanımlamak istediğinizde ayrı intent filtreleri oluşturmanız gerekir.
hakkında bilgi edindiniz.
Birden fazla alt alan adı için uygulama bağlamayı destekleme
Digital Asset Links protokolü, intent filtrelerinizdeki alt alan adlarını benzersiz,
ayrı ana makineler. Hedefiniz
farklı alt alan adlarına sahip birden çok ana makine listeliyor, geçerli bir
Her alanda assetlinks.json
. Örneğin,
aşağıdaki intent filtresi www.example.com
ve
Kabul edilen amaç URL'si ana makineleri olarak mobile.example.com
. Bu nedenle,
assetlinks.json
, hem
https://www.example.com/.well-known/assetlinks.json
ve
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>
Alternatif olarak, ana makine adınızı bir joker karakterle (*.example.com
gibi) belirtirseniz,
assetlinks.json
dosyanızı kök ana makine adında yayınlamalısınız
(example.com
). Örneğin, aşağıdaki intent filtresine sahip bir uygulama
example.com
alt adları için (örneğin, foo.example.com
) doğrulama
assetlinks.json
dosyası şurada yayınlandığı sürece:
https://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:host="*.example.com" /> </intent-filter> </activity> </application>
Aynı alanla ilişkilendirilmiş birden çok uygulama olup olmadığını kontrol edin
Her biri aynı alanla ilişkilendirilmiş birden fazla uygulama yayınlarsanız bunların her biri başarıyla doğrulanabilir. Ancak uygulamalar tam olarak basit ve tam sürümlerinde olduğu gibi, aynı alan adı barındırıcısını ve yolunu bir uygulama varsa yalnızca en son yüklenen uygulama web intent'lerini çözümleyebilir ekleyebilirsiniz.
Bu gibi durumlarda, gerekli paket görünürlüğüne sahip olmanız koşuluyla kullanıcının cihazında olası çakışan uygulamaları kontrol edin. Ardından, uygulamanızda queryIntentActivities()
çağrısının sonuçlarını içeren özel bir seçici iletişim kutusu gösterin.
Kullanıcı, tercih ettiği uygulamayı eşleşen uygulamalar listesinden
iletişim kutusunda görünür.
Web sitesi ilişkilendirmelerini bildirme
Dijital Varlık Bağlantıların JSON dosyası, Android uygulamalarını belirtmek için web sitenizde yayınlanmalıdır Bunlar web sitesiyle ilişkilendirilen ve uygulamanın URL amaçlarıdır. JSON dosyası, ilişkili uygulamaları tanımlamak için aşağıdaki alanları kullanır:
package_name
: Uygulama kimliği uygulamanınbuild.gradle
dosyasında tanımlanmıştır.sha256_cert_fingerprints
: Uygulamanızın imza sertifikasının SHA256 parmak izleri. Java keytool aracılığıyla parmak izi oluşturmak için aşağıdaki komutu kullanabilirsiniz: Bu alan, birden fazla parmak izini destekler. Bunları desteklemek için kullanabilirsiniz uygulamanızın farklı sürümlerini (ör. hata ayıklama ve üretim derlemeleri) kullanabilirsiniz.keytool -list -v -keystore my-release-key.keystore
Uygulamanız için Play Uygulama İmzalama kullanıyorsanız sertifika
keytool
yerel olarak çalıştırılarak oluşturulan parmak izi genellikle kullanıcıların web sitelerindeki cihazlar. Kontrol etmek için Play Console geliştirici hesabınızda, uygulamanız için Play Uygulama İmzalamaRelease > Setup > App signing
; bir sonraki aşamaya da Aynı sayfasını ziyaret edin.
Aşağıdaki örnek assetlinks.json
dosyası, com.example
Android uygulamasına bağlantı açma hakları verir:
[{ "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"] } }]
Bir web sitesini birden fazla uygulamayla ilişkilendirme
Bir web sitesi, aynı assetlinks.json
içindeki birden fazla uygulamayla ilişkilendirme bildirebilir
dosyası olarak kaydedebilirsiniz. Aşağıdaki dosya listelemesinde, ilişkilendirme beyan eden bir beyan dosyası örneği gösterilmektedir
olmak üzere iki uygulama arasında ayrı ayrı
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"] } }]
Farklı uygulamalar, aynı web barındırıcısı altında farklı kaynakların bağlantılarını işleyebilir. Örneğin,
uygulama1, https://example.com/articles
için amaç filtresi, uygulama2 ise beyan edebilir
https://example.com/videos
için intent filtresi.
Not: Bir alanla ilişkili birden çok uygulama aynı veya farklı sertifikalarınız olur.
Birden fazla web sitesini tek bir uygulamayla ilişkilendirme
Birden çok web sitesi,
ilgili assetlinks.json
dosyası. Aşağıdaki dosya girişleri
example.com ve ilişkilendirmenin nasıl bildirileceğine ilişkin bir örnek
app1 ile example.net kullanılır. İlk giriş, example.com'un ilişkilendirmesini gösterir
uygulama1 ile:
[{ "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"] } }]
Sonraki giriş, example.net ile uygulama1 arasındaki ilişkiyi göstermektedir. Yalnızca
bu dosyaların barındırıldığı konum farklı (.com
ve .net
):
[{ "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"] } }]
JSON doğrulama dosyasını yayınlama
JSON doğrulama dosyanızı şu konumda yayınlamanız gerekir:
https://domain.name/.well-known/assetlinks.json
Aşağıdakilerden emin olun:
assetlinks.json
dosyası, içerik türüyle yayınlanırapplication/json
.- Uygulamanızın intent filtrelerinin veri şeması olarak HTTPS'yi tanımlayıp tanımlamadığına bakılmaksızın
assetlinks.json
dosyasına HTTPS bağlantısı üzerinden erişilebilmelidir. assetlinks.json
dosyasına herhangi bir yönlendirme olmadan erişilebilir ( 301 veya 302 yönlendirmeleri).- Uygulama bağlantılarınız birden fazla ana makine alan adını destekliyorsa
Her alanda
assetlinks.json
dosya var. Görüntüleyin Şu kullanıcılar için uygulama bağlama desteği: birden fazla ana makine. - Uygulamanızı aşağıdaki manifest dosyasındaki geliştirici/test URL'leriyle yayınlamayın: herkes tarafından erişilebilir (örneğin yalnızca VPN ile erişilebilen) olmalıdır. CEVAP bu tür durumlarda geçici bir çözüm olarak derlemeyi varyantlarını kullanarak geliştirici derlemeleri için farklı manifest dosyası oluşturabilirsiniz.
Android App Links doğrulaması
Uygulamanızın amaçlarından en az birinde android:autoVerify="true"
mevcut olduğunda
kullanıyorsanız, uygulamanızı Android 6.0 (API düzeyi 23) çalıştıran bir cihaza yükleyerek
bunun yüksek olması, sistemin
Uygulamanızın intent filtrelerindeki URL'ler. Android 12 ve sonraki sürümlerde, doğrulama mantığını test etmek için doğrulama sürecini manuel olarak da çağırabilirsiniz.
Otomatik doğrulama
Sistemin otomatik doğrulaması şunları içerir:
- Sistem, aşağıdakilerden herhangi birini içeren tüm intent filtrelerini inceler:
- İşlem:
android.intent.action.VIEW
- Kategoriler:
android.intent.category.BROWSABLE
veandroid.intent.category.DEFAULT
- Veri şeması:
http
veyahttps
- İşlem:
- Android, yukarıdaki intent filtrelerinde bulunan her benzersiz ana makine adı için
https://hostname/.well-known/assetlinks.json
adresindeki Digital Asset Links dosyasıyla ilgili web sitelerini sorgulayarak
Uygulamanızla ilişkilendirilecek web sitelerinin listesini onayladıktan sonra ve barındırılan JSON dosyasının geçerli olduğunu doğruladıysanız uygulamayı cihazınıza yükleyin. olanak tanır. Eşzamansız doğrulama işleminin gerçekleşmesi için en az 20 saniye bekleyin belirir. Sistemin aşağıdakileri doğrulayıp doğrulamadığını kontrol etmek için: uygulamasına ve doğru bağlantı işleme politikalarını ayarlayın:
adb shell am start -a android.intent.action.VIEW \ -c android.intent.category.BROWSABLE \ -d "http://domain.name:optional_port"
Manuel doğrulama
Android 12'den itibaren alanı manuel olarak çağırabilirsiniz. doğrulamada bulunabileceğimizi unutmayın. Bu işlemi gerçekleştirebilirsiniz uygulamanızın Android 12'yi hedefleyip hedeflemediğinden bağımsız olarak süreci geride bırakın.
İnternet bağlantısı kurma
Alan doğrulaması gerçekleştirmek için test cihazınızın internet.
Güncellenen alan doğrulama sürecini destekleme
Uygulamanız Android 12 veya sonraki bir sürümü hedefliyorsa sistem alan doğrulama süreci otomatik olarak güncellenir.
Aksi takdirde, güncellenen doğrulama sürecini manuel olarak etkinleştirebilirsiniz. Bunun için, bir terminal penceresinde aşağıdaki komutu çalıştırın:
adb shell am compat enable 175408749 PACKAGE_NAME
Bir cihazda Android uygulama bağlantılarının durumunu sıfırlama
Bir cihazda alan doğrulamasını manuel olarak çağırmadan önce test cihazındaki Android uygulama bağlantılarının durumunu sıfırlamanız gerekir. Bunu yapmak için aşağıdaki komutu çalıştırın: komutunu girin:
adb shell pm set-app-links --package PACKAGE_NAME 0 all
Bu komut, cihazı kullanıcının bulunduğu duruma getirir. tüm alan adları için varsayılan uygulamaları seçer.
Alan doğrulama sürecini başlat
Bir cihazda Android App Links'in durumunu sıfırladıktan sonra doğrulamanın bir parçasıdır. Bunu yapmak için bir terminal penceresinde aşağıdaki komutu çalıştırın:
adb shell pm verify-app-links --re-verify PACKAGE_NAME
Doğrulama sonuçlarını inceleme
Doğrulama temsilcisinin isteklerini tamamlaması için biraz zaman geçtikten sonra doğrulama sonuçlarını inceleyin. Bunu yapmak için aşağıdaki komutu çalıştırın:
adb shell pm get-app-links PACKAGE_NAME
Bu komutun sonucu şuna benzer:
com.example.pkg: ID: 01234567-89ab-cdef-0123-456789abcdef Signatures: [***] Domain verification state: example.com: verified sub.example.com: legacy_failure example.net: verified example.org: 1026
Doğrulamayı başarıyla geçen alanların alan adı doğrulaması durumu görünür
/ verified
. Diğer tüm durumlar, alan doğrulamasının yapılamadığını belirtir.
karar verilebilir. Özellikle, none
durumu, doğrulama işleminin
müşteri temsilcisi doğrulama sürecini henüz tamamlamamış olabilir.
Aşağıdaki listede, alan doğrulamasının döndürebileceği olası değerler gösterilmektedir belirli bir alan adı için döndürme:
none
- Bu alan için hiçbir şey kaydedilmedi. Şunun için birkaç dakika daha bekleyin: karşılayıp karşılamadığını kontrol edebilir, ardından alan doğrulama sürecini yeniden başlatın.
verified
- Alan, beyan eden uygulama için başarıyla doğrulandı.
approved
- Alan, genellikle bir kabuk komutu yürütülerek zorla onaylandı.
denied
- Alan, genellikle bir kabuk komutu çalıştırılarak zorla reddedildi.
migrated
- Sistem, eski alan doğrulamasını kullanan önceki bir sürecin sonucunu korudu.
restored
- Kullanıcı veri geri yükleme işlemi gerçekleştirdikten sonra alan onaylandı. Alanın daha önce doğrulandığı varsayılır.
legacy_failure
- Alan, eski bir doğrulayıcı tarafından reddedildi. Hatanın asıl nedeni: emin olun.
system_configured
- Alan, cihaz yapılandırması tarafından otomatik olarak onaylandı.
- Hata kodu
1024
veya daha yüksek Cihazın doğrulayıcısına özgü özel hata kodu.
Ağ bağlantısı oluşturduğunuzdan emin olun ve alan doğrulama sürecini tekrar başlatın.
Kullanıcıdan uygulamanızı bir alanla ilişkilendirmesini isteme
Uygulamanızın bir alan adı için onaylanmasının diğer bir yolu da kullanıcıdan o alanla ilişkilendirir.
Uygulamanızın alan için zaten onaylanıp onaylanmadığını kontrol edin
Kullanıcıya istemde bulunmadan önce uygulamanızın
<intent-filter>
öğelerinizde tanımladığınız alan adları. Sorguların
onay durumunu kontrol edin:
DomainVerificationManager
API'si (çalışma zamanında).- Bir komut satırı programı (test sırasında).
Alan Adı Doğrulama Yöneticisi
Aşağıdaki kod snippet'i,
DomainVerificationManager
API'si:
Kotlin
val context: Context = TODO("Your activity or fragment's Context") val manager = context.getSystemService(DomainVerificationManager::class.java) val userState = manager.getDomainVerificationUserState(context.packageName) // Domains that have passed Android App Links verification. val verifiedDomains = userState?.hostToStateMap ?.filterValues { it == DomainVerificationUserState.DOMAIN_STATE_VERIFIED } // Domains that haven't passed Android App Links verification but that the user // has associated with an app. val selectedDomains = userState?.hostToStateMap ?.filterValues { it == DomainVerificationUserState.DOMAIN_STATE_SELECTED } // All other domains. val unapprovedDomains = userState?.hostToStateMap ?.filterValues { it == DomainVerificationUserState.DOMAIN_STATE_NONE }
Java
Context context = TODO("Your activity or fragment's Context"); DomainVerificationManager manager = context.getSystemService(DomainVerificationManager.class); DomainVerificationUserState userState = manager.getDomainVerificationUserState(context.getPackageName()); Map<String, Integer> hostToStateMap = userState.getHostToStateMap(); List<String> verifiedDomains = new ArrayList<>(); List<String> selectedDomains = new ArrayList<>(); List<String> unapprovedDomains = new ArrayList<>(); for (String key : hostToStateMap.keySet()) { Integer stateValue = hostToStateMap.get(key); if (stateValue == DomainVerificationUserState.DOMAIN_STATE_VERIFIED) { // Domain has passed Android App Links verification. verifiedDomains.add(key); } else if (stateValue == DomainVerificationUserState.DOMAIN_STATE_SELECTED) { // Domain hasn't passed Android App Links verification, but the user has // associated it with an app. selectedDomains.add(key); } else { // All other domains. unapprovedDomains.add(key); } }
Komut satırı programı
Uygulamanızı geliştirme sırasında test ederken aşağıdaki komutu çalıştırarak kuruluşunuza ait alanların doğrulama durumunu sorgulayabilirsiniz:
adb shell pm get-app-links --user cur PACKAGE_NAME
Aşağıdaki örnek çıkışta, uygulama "example.org" alan adı, 0. kullanıcı sistem ayarlarında uygulamayı manuel olarak onayladı ve bu alan için başka hiçbir paket doğrulanmamıştır.
com.example.pkg: ID: *** Signatures: [***] Domain verification state: example.com: verified example.net: verified example.org: 1026 User 0: Verification link handling allowed: true Selection state: Enabled: example.org Disabled: example.com example.net
Kullanıcının seçtiği işlemi simüle etmek için kabuk komutlarını da kullanabilirsiniz
belirli bir alan adıyla ilişkilendirilen
uygulama da var. Bunların tam açıklaması
komutları adb shell pm
çıkışından kullanılabilir.
İstek için bağlam bilgisi sağlayın
Bu alan onayı isteğinde bulunmadan önce belirtir. Örneğin, kullanıcılara başlangıç ekranı, iletişim kutusu vb. Uygulamanızın neden varsayılan işleyici olması gerektiğini kullanıcıya açıklayan kullanıcı arayüzü öğesi oluşturmanız gerekir.
İstekte bulunma
Kullanıcı, uygulamanızın kendisinden ne istediğini anladıktan sonra isteği yapın.
Bunu yapmak için
ACTION_APP_OPEN_BY_DEFAULT_SETTINGS
intent işlemi ve veri dizesiyle eşleşen
Hedef uygulama için package:com.example.pkg
(aşağıda gösterildiği gibi)
şu kod snippet'ini kullanabilirsiniz:
Kotlin
val context: Context = TODO("Your activity or fragment's Context") val intent = Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:${context.packageName}")) context.startActivity(intent)
Java
Context context = TODO("Your activity or fragment's Context"); Intent intent = new Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:" + context.getPackageName())); context.startActivity(intent);
Intent çağrıldığında kullanıcılar Varsayılan olarak aç adlı bir ayar ekranı görür. Bu ekranda Desteklenen bağlantıları aç adlı radyo düğmesi bulunur. Şekil 1'de gösterildiği gibidir.
Kullanıcı Desteklenen bağlantıları aç'ı etkinleştirdiğinde Bu uygulamada açılacak bağlantılar adlı bir bölümün altında bir dizi onay kutusu görünür. Kullanıcılar buradan uygulamanızla ilişkilendirmek istedikleri alanları seçebilir. Ayrıca, şekil 2'de gösterildiği gibi alan eklemek için Bağlantı ekle'yi de seçebilirler. Kullanıcılar daha sonra eklediğiniz alanlarda bulunan herhangi bir bağlantıyı seçtiğinizde bağlantı, uygulamanızda açılır otomatik olarak oluşturur.
Uygulamanızda, uygulamanızın doğrulayamadığı alanları açma
Uygulamanızın ana işlevi, işlenmiş alan adlarını doğrulayabilme. Bu durumda, kullanıcılara bir web bağlantısı seçtiklerinde birinci taraf uygulaması ile üçüncü taraf uygulamanız arasında seçim yapamayacaklarını açıklayın. Kullanıcıların alanları üçüncü taraf uygulamanızla manuel olarak ilişkilendirmesi gerekir.
Ayrıca, kullanıcının tercih etmesi durumunda bağlantıyı birinci taraf uygulamasında açmasına olanak tanıyan bir iletişim kutusu veya trampolin etkinliği sunabilirsiniz. Böyle bir diyalog veya trambolin etkinliği oluşturmadan önce uygulamanızı paket görünürlüğü sağlayacak şekilde ayarlayın uygulamanızın web intent filtresiyle eşleşen birinci taraf uygulamalarına dahil edilir.
Uygulama bağlantılarını test etme
Uygulama bağlama özelliğini uygularken, uygulamanız gereken yeni adımları uygulayarak Sistemin uygulamanızı web sitelerinizle ilişkilendirebildiğinden ve URL isteklerini işleyebildiğinden emin olun. nasıl kullanacağınızı öğreneceksiniz.
Mevcut bir ifade dosyasını test etmek için, İfade Listesi Oluşturma Aracı ve Test Aracı.
Doğrulanacak ana makinelerin listesini onaylama
Test sırasında sistemin doğrulaması gereken ilişkili ana makinelerin listesini onaylamanız gerekir. en iyi yoludur. Karşılık gelen intent filtreleri şunları içeren tüm URL'lerin listesini yapın: özellikleri ve öğeleri içerir:
http
veyahttps
değerine sahipandroid:scheme
özelliği- Alan URL kalıbına sahip
android:host
özelliği android.intent.action.VIEW
işlem öğesiandroid.intent.category.BROWSABLE
kategori öğesi
Her adlandırılmış ana makine ve alt alan adında bir Digital Asset Links JSON dosyasının sağlanıp sağlanmadığını kontrol etmek için bu listeyi kullanın.
Digital Asset Links dosyalarını onaylayın
Her web sitesinde, Digital Asset Links JSON dosyasının bir öğede bulunacağını onaylamak için Digital Asset Links API'sini kullanın. dosyasının doğru barındırıldığı ve tanımlandığı:
https://digitalassetlinks.googleapis.com/v1/statements:list? source.web.site=https://domain.name:optional_port& relation=delegate_permission/common.handle_all_urls
Bağlantı politikalarını kontrol etme
Test sürecinizin bir parçası olarak, bağlantı işlemeyle ilgili mevcut sistem ayarlarını kontrol edebilirsiniz. Tüm sitelerle ilgili mevcut bağlantı işleme politikalarının listesini almak için aşağıdaki komutu kullanın: bağlı cihazınızdaki uygulamalar:
adb shell dumpsys package domain-preferred-apps
Alternatif olarak, aşağıdakiler de aynı şeyi yapar:
adb shell dumpsys package d
Not: Uygulamanızı yükledikten sonra en az 20 saniye beklediğinizden emin olun. doğrulama sürecini tamamlaması için sistemin etkinleştirilmesi gerekir.
Komut, cihazda tanımlanan her kullanıcının veya profilin listesini döndürür. Bu listeye, aşağıdaki biçimde bir başlık eklenir:
App linkages for user 0:
Bu başlığın ardından, çıkışta ilgili kullanıcının bağlantı işleme ayarlarını listelemek için aşağıdaki biçim kullanılır:
Package: com.android.vending Domains: play.google.com market.android.com Status: always : 200000002
Bu giriş, söz konusu kullanıcı için hangi uygulamaların hangi alan adlarıyla ilişkilendirilmiş olduğunu gösterir:
Package
: Bir uygulamayı, manifest dosyasında belirtilen paket adına göre tanımlar.Domains
- Bu uygulamanın, aşağıdakileri kullanarak web bağlantılarını işlediği ana makinelerin tam listesini gösterir ayırıcı olarak boşluk bırakmalıdır.Status
- Bu uygulama için mevcut bağlantı işleme ayarını gösterir. Uygulamada ve manifest dosyasıandroid:autoVerify="true"
içeriyorsa doğrulama işleminden geçti. /always
. Bu durumdan sonra gelen on altılık sayı, Android sisteminin kullanıcının uygulama bağlantısı tercihlerini kaydetmesiyle ilgilidir. Bu değer, doğrulama işleminin başarılı oldu.
Not: Kullanıcı, doğrulama işleminden önce bir uygulamanın uygulama bağlantısı ayarlarını değiştirirse bir sonuç elde edilmişse, doğrulama işlemi başarıyla tamamlanmış olsa bile doğrulama başarısız oldu. Ancak kullanıcı, uygulamanın desteklenen bağlantıları sormadan açmasını açıkça etkinleştirdiyse bu doğrulama hatası önemli değildir. Çünkü kullanıcı tercihleri, programatik doğrulamaya (veya bu doğrulamanın olmaması) göre önceliklidir. Sonuç olarak, Bu bağlantı, sanki doğrulama yapılmış gibi, herhangi bir iletişim kutusu gösterilmeden, doğrudan uygulamanıza gider başarılı oldu.
Test örneği
Uygulama bağlantısı doğrulamasının başarılı olması için sistemin, uygulamanızı belirli bir intent filtresinde belirttiğiniz ve uygulama bağlantılarıyla ilgili ölçütleri karşılayan web sitelerinin her biriyle doğrulayabilmesi gerekir. Aşağıdaki örnekte, çeşitli uygulama bağlantılarının tanımlandığı bir manifest yapılandırması gösterilmektedir:
<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> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="www.example2.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="account.example.com" /> </intent-filter> </activity> <activity android:name=”ThirdActivity”> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="https" /> <data android:host="map.example.com" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="market" /> <data android:host="example.com" /> </intent-filter> </activity> </application>
Platformun yukarıdaki manifest dosyasından doğrulamaya çalışacağı ana makinelerin listesi:
www.example.com mobile.example.com www.example2.com account.example.com
Platformun yukarıdaki manifestten doğrulamaya çalışmayacağı ana makinelerin listesi:
map.example.com (it does not have android.intent.category.BROWSABLE) market://example.com (it does not have either an "http" or "https" scheme)
İfade listeleri hakkında daha fazla bilgi edinmek için bkz. İfade Listesi Oluşturma.
Yaygın uygulama hatalarını düzeltme
Android App Links'i doğrulayamıyorsanız aşağıdaki yaygın kuruluş seçeneklerini kontrol edin:
hatalar. Bu bölümde yer tutucu alan adı olarak example.com
kullanılmaktadır; ne zaman
bu kontrolleri gerçekleştirirken example.com
yerine sunucunuzun gerçek değerini kullanın
alan adı.
- Yanlış intent filtresi ayarlanmış
- Uygulamanızın sahibi olmadığı bir URL'yi
<intent-filter>
öğesi. - Yanlış sunucu yapılandırması
Sunucunuzun JSON yapılandırmasını kontrol edin ve SHA değerinin şu şekilde olduğundan emin olun: doğru.
Ayrıca,
example.com.
(sondaki noktayla birlikte) ile aynı reklam sürümünün sunulduğundan emin olun içeriğiexample.com
olarak ayarlayın.- Sunucu tarafı yönlendirmeler
Android App Links'i ayarlarsanız sistem, uygulamanız için hiçbir Android App Links'i doğrulamaz Aşağıdaki gibi bir yönlendirme:
http://example.com
-https://example.com
example.com
-www.example.com
Bu davranış, uygulamanızın güvenliğini korur.
- Sunucu sağlamlığı
Sunucunuzun istemci uygulamalarınıza bağlanıp bağlanamadığını kontrol edin.
- Doğrulanamayan bağlantılar
Test amacıyla, kasıtlı olarak doğrulanamayan bağlantılar ekleyebilirsiniz. Sakla Android 11 ve önceki sürümlerde bu bağlantıların sisteminizin uygulamanız için tüm Android App Links'i doğrulamamasını sağlayın.
- assetlinks.json dosyasında yanlış imza
İmzanızın doğru olduğunu ve uygulamanızı imzalamak için kullanılan imzayla eşleştiğini doğrulayın. Yaygın hatalar şunlardır:
- Uygulamayı bir hata ayıklama sertifikasıyla imzalama ve yalnızca sürümü edinme
assetlinks.json
imza. assetlinks.json
içinde küçük harfli imza kullanma. İmza, büyük harfle yazılmalıdır.- Play Uygulama İmzalama özelliğini kullanıyorsanız Google'ın her sürümünüzü imzalamak için kullandığı imzayı kullandığınızdan emin olun. Bu bilgileri doğrulayabilirsiniz. aşağıdaki talimatları izleyerek tam bir JSON snippet'i ekleyin: web sitesi ilişkilendirmelerini bildirmeniz gerekir.
- Uygulamayı bir hata ayıklama sertifikasıyla imzalama ve yalnızca sürümü edinme