Android 'de App-Linking

Bu kılavuzda, Android 6,0 ' in uygulama bağlamayı nasıl desteklediği, mobil uygulamaların Web sitelerindeki URL 'lere yanıt vermesini sağlayan bir tekniktir. Uygulama bağlama ne olduğunu, Android 6,0 uygulamasında uygulama bağlamayı uygulamayı ve bir etki alanı için mobil uygulamaya izin vermek üzere bir Web sitesini yapılandırmayı ele alır.

Uygulama bağlamaya genel bakış

Mobil uygulamalar artık bir silide etkin değildir. çoğu durumda, Web siteleri ile birlikte işletmelerin önemli bir bileşenleridir. İşletmelerin web varlığı ve mobil uygulamalarını sorunsuz bir şekilde bağlanabilmesi, mobil uygulamalar Başlatan bir Web sitesindeki bağlantılarla ve mobil uygulamada ilgili içeriğin görüntülenmesine tercih edilir. Uygulama bağlama ( derin bağlamaolarak da adlandırılır), BIR mobil cihazın bir URI 'ye yanıt vermesini ve bu URI 'ye karşılık gelen bir mobil uygulamayı başlatmayı sağlayan bir tekniktir.

Android uygulamayı işler- Amaç sistemi üzerinden bağlama – Kullanıcı mobil tarayıcıda bir bağlantıya tıkladığında mobil tarayıcı, Android 'in kayıtlı bir uygulamaya temsilci olarak atamasını sağlar. Örneğin, bir pişirme Web sitesindeki bağlantıya tıkladığınızda bu Web sitesiyle ilişkili bir mobil uygulama açılır ve kullanıcıya belirli bir tarif görüntülenir. Bu amacı işlemek için birden fazla uygulama kaydedilmişse, Android, kullanıcıdan amacı işleyecek uygulamayı hangi uygulamadan seçmesini isteyeceğiz, bir Kesinleştirme iletişim kutusu olarak bilineni yükseltir, örneğin:

Kesinleştirme iletişim kutusunun örnek ekran görüntüsü

Android 6,0, otomatik bağlantı işlemeyi kullanarak bunu geliştirir. Android 'in bir URI için varsayılan işleyici olarak bir uygulamayı otomatik olarak kaydetmesi mümkündür; uygulama otomatik olarak başlatılır ve doğrudan ilgili etkinliğe gider. Android 6,0 'nin bir URI 'yi işlemeye nasıl karar verdiği, aşağıdaki ölçütlere bağlıdır:

  1. Var olan bir uygulama URI ile zaten ilişkilendirilmiş . Kullanıcı zaten bir URI ile mevcut bir uygulamayla ilişkili olabilir. Bu durumda, Android bu uygulamayı kullanmaya devam eder.
  2. URI ile ilişkili mevcut uygulama yok, ancak destekleyen bir uygulama yüklü . Bu senaryoda, Kullanıcı mevcut bir uygulamayı belirtmediği için Android, isteği işlemek için yüklü destekleyici uygulamayı kullanacaktır.
  3. URI ile ilişkili mevcut uygulama yok, ancak URI 'yi destekleyen birden çok uygulama olduğundan, Kesinleştirme iletişim kutusu görüntülenir ve kullanıcının HANGI uygulamanın URI 'yi işleyeceğini seçmesini gerekir.

Kullanıcının URI 'yi destekleyen bir uygulaması yoksa ve diğeri yüklüyse, Android, URI ile ilişkili Web sitesiyle ilişkilendirmeyi doğruladıktan sonra bu uygulamayı URI için varsayılan işleyici olarak ayarlar.

Bu kılavuzda, Android 6,0 uygulamasının nasıl yapılandırılacağı ve Android 6,0 ' de uygulama bağlamayı desteklemek için dijital varlık bağlantıları dosyasının nasıl oluşturulacağı ve yayımlanacağı açıklanmaktadır.

Gereksinimler

Bu kılavuzda, Xamarin. Android 6,1 ve Android 6,0 (API düzeyi 23) veya üstünü hedefleyen bir uygulama gerekir.

Android 'in daha önceki sürümlerinde, Xamarin bileşen deposundaki rivets NuGet paketini kullanarak uygulama-bağlama mümkündür. Rivets paketi, Android 6,0 'de uygulama bağlama ile uyumlu değildir; Android 6,0 uygulama bağlamayı desteklemez.

Android 6,0 ' de App-Linking yapılandırma

Android 6,0 ' de App-Links 'in kurulması iki önemli adımı içerir:

  1. Web sitesi URI 'si için bir veya daha fazla amaç filtresi ekleme – BIR URL 'yi işleme içindeki amaç filtreleri Kılavuzu Android mobil tarayıcıda öğesine tıklayın.
  2. Web sitesinde dijital VARLıK bağlantıları JSON dosyası yayımlama – bu bir Web sitesine yüklenen ve Android tarafından, mobil uygulama ile Web sitesinin etki alanı arasındaki ilişkiyi doğrulamak için kullanılan bir dosyadır. Bu olmadan, Android, uygulamayı URI için varsayılan tanıtıcı olarak yükleyemez; Kullanıcı bunu el ile yapması gerekir.

Amaç filtresini yapılandırma

Bir URI 'yi (veya bir URI kümesini) bir Web sitesinden Android uygulamasındaki bir etkinliğe eşleyen bir amaç filtresi yapılandırmak gerekir. Xamarin. Android ' de, bu ilişki, bir etkinliğin bir, bir, bir etkinlik ile Dontfilterattributekullanılarak belirlenir. Amaç filtresi, aşağıdaki bilgileri bildirmelidir:

  • Intent.ActionView – Bu işlem, bilgileri görüntülemek için isteklere yanıt vermek üzere amaç filtresini kaydeder
  • Categories – Amaç filtresi, Web URI 'sini doğru bir şekilde işleyebilmek için hem amacı hem de amacını Categories ve amaç. categorydefault öğesini kaydetmelidir.
  • DataScheme – Amaç filtresi http ve/veya bildirmelidir https . Bunlar yalnızca iki geçerli şelardır.
  • DataHost – Bu, URI 'Lerin kaynağı olacak etki alanıdır.
  • DataPathPrefix – Bu, Web sitesindeki kaynaklara yönelik isteğe bağlı bir yoldur.
  • AutoVerifyautoVerify Öznitelik, Android 'e uygulama ve Web sitesi arasındaki ilişkiyi doğrulaması gerektiğini söyler. Bu, aşağıda daha fazla ele alınacaktır.

Aşağıdaki örnek, ve ' den gelen bağlantıları işlemek için ınttrfilterattribute 'un nasıl kullanılacağını gösterir http://www.recipe-app.com/recipes :

[IntentFilter(new [] { Intent.ActionView },
              Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
              DataScheme = "http",
              DataHost = "recipe-app.com",
              DataPathPrefix = "/recipe",
              AutoVerify=true)]
public class RecipeActivity : Activity
{
    // Code for the activity omitted
}

Android, uygulamayı bir URI için varsayılan işleyici olarak kaydetmeden önce Web sitesindeki dijital varlıklar dosyasına yönelik amaç filtreleri tarafından tanımlanan her konağı doğrular. Android 'in uygulamayı varsayılan işleyici olarak kurması için tüm amaç filtrelerinin doğrulama geçmesi gerekir.

Android 6,0 uygulama bağlantısı, Android 'in, uygulamayı varsayılan işleyici olarak ayarlamadan önce uygulama ile Web sitesi arasındaki ilişkilendirmeyi doğrulamasını gerektirir. Bu doğrulama, uygulama ilk kez yüklendiğinde meydana gelir. Dijital varlıklar bağlantı dosyası, ilgili webetki alanları tarafından BARıNDıRıLAN bir JSON dosyasıdır.

Not

android:autoVerifyÖznitelik, amaç filtresi tarafından ayarlanmalıdır; Aksi takdirde Android doğrulamayı gerçekleştirmez.

Dosya, konumdaki etki alanının Web uzmanı tarafından yerleştirilir https://domain/.well-known/assetlinks.json .

Dijital varlık dosyası, ilişkileri doğrulamak için Android için gereken meta verileri içerir. Bir assetlinks. JSON dosyası aşağıdaki anahtar-değer çiftlerine sahiptir:

  • namespace – Android uygulamasının ad alanı.
  • package_name – Android uygulamasının paket adı (uygulama bildiriminde belirtilen).
  • sha256_cert_fingerprints – imzalı uygulamanın SHA256 parmak izi baskıları. Bir uygulamanın SHA1 parmak izini alma hakkında daha fazla bilgi için lütfen keystore 'un MD5 veya SHA1 Imzasını bulma kılavuzuna bakın.

Aşağıdaki kod parçacığı, tek bir uygulamayla listelenen assetlinks. JSON örneğidir:

[
   {
      "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"
         ]
      }
   }
]

Uygulamanızın farklı sürümlerini veya derlemelerini desteklemek için birden fazla SHA256 parmak izi kaydetmek mümkündür. Bu sonraki assetlinks. JSON dosyası, birden çok uygulamayı kaydetme örneğidir:

[
   {
      "relation":[
         "delegate_permission/common.handle_all_urls"
      ],
      "target":{
         "namespace":"android_app",
         "package_name":"example.com.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":"example.com.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"
         ]
      }
   }
]

Google Digital varlık bağlantıları web sitesinde , dijital varlıklar dosyası oluşturma ve test etme konusunda yardımcı olabilecek bir çevrimiçi araç vardır.

Uygulama bağlantılarını uyguladıktan sonra, beklenen şekilde çalışmadıklarından emin olmak için çeşitli parçalar test edilmelidir.

Aşağıdaki örnekte gösterildiği gibi, dijital varlıklar dosyasının Google 'ın dijital varlık bağlantıları API 'SI kullanılarak düzgün şekilde biçimlendirildiğini ve barındırıldığını onaylamak mümkündür:

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=
  https://<WEB SITE ADDRESS>:&relation=delegate_permission/common.handle_all_urls

Amaç filtrelerinin doğru şekilde yapılandırıldığından ve uygulamanın bir URI için varsayılan işleyici olarak ayarlandığından emin olmak için gerçekleştirilebilecek iki test vardır:

  1. Dijital varlık dosyası yukarıda açıklanan şekilde düzgün şekilde barındırılır. İlk test Android 'in mobil uygulamaya yeniden yönlendirileceği bir amaç gönderir. Android uygulaması, URL için kaydedilen etkinliği başlatmalı ve görüntülemelidir. Komut isteminde şunu yazın:

    $ adb shell am start -a android.intent.action.VIEW \
        -c android.intent.category.BROWSABLE \
        -d "http://<domain1>/recipe/scalloped-potato"
    
  2. Belirli bir cihazda yüklü olan uygulamalar için mevcut bağlantı işleme ilkelerini görüntüleyin. Aşağıdaki komut, aşağıdaki bilgilerle cihazdaki her bir kullanıcı için bağlantı ilkeleri listesinin dökümünü alır. Komut isteminde aşağıdaki komutu yazın:

    $ adb shell dumpsys package domain-preferred-apps
    
    • Package – Uygulamanın paket adı.
    • Domain – Web bağlantıları uygulama tarafından işlenecek olan etki alanları (boşlukla ayrılır)
    • Status – Bu, uygulamanın geçerli bağlantı işleme durumudur. Her zaman değeri, uygulamanın bildirildiği ve sistem doğrulamasının geçirildiği anlamına gelir. Bunun ardından Android sisteminin tercih edilen kaydını temsil eden bir onaltılık numara gelir.

    Örnek:

    $ adb shell dumpsys package domain-preferred-apps
    
    App linkages for user 0:
    Package: com.android.vending
    Domains: play.google.com market.android.com
    Status: always : 200000002
    

Özet

Bu kılavuz, Android 6,0 ' de uygulama bağlama 'nın nasıl çalıştığını ele alınmaktadır. Daha sonra, uygulama bağlantılarını desteklemek ve bunlara yanıt vermek için bir Android 6,0 uygulamasının nasıl yapılandırılacağı ele alınmıştır. Ayrıca, bir Android uygulamasında uygulama bağlamayı test etme konusunda da anlatılmıştır.