Android Uygulama Bağlantılarını Doğrulama

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:

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

  2. 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ın build.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:
    keytool -list -v -keystore my-release-key.keystore
    
    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.

    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 İmzalama Release > 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:

https://www.example.com/.well-known/assetlinks.json

[{
  "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):

https://www.example.net/.well-known/assetlinks.json

[{
  "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ır application/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:

  1. Sistem, aşağıdakilerden herhangi birini içeren tüm intent filtrelerini inceler:
    • İşlem: android.intent.action.VIEW
    • Kategoriler: android.intent.category.BROWSABLE ve android.intent.category.DEFAULT
    • Veri şeması: http veya https
  2. 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:

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.

Radyo düğmesi etkinleştirildiğinde, alt kısımdaki bir bölümde onay kutularının yanı sıra &quot;Bağlantı ekle&quot; adlı bir düğme bulunur.
Şekil 1. Kullanıcıların seçim yapabileceği sistem ayarları ekranı uygulamanızda varsayılan olarak açılan bağlantılar.
Her onay kutusu, ekleyebileceğiniz bir alanı temsil eder. İletişim kutusunun düğmeleri &quot;İptal&quot; ve &quot;Ekle&quot;dir.
Şekil 2. Kullanıcıların uygulamanızla ilişkilendirecekleri ek alanları seçebilecekleri iletişim kutusu.

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 veya https değerine sahip android:scheme özelliği
  • Alan URL kalıbına sahip android:host özelliği
  • android.intent.action.VIEW işlem öğesi
  • android.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

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ği example.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.