Propojení aplikací v Androidu

Tato příručka popisuje, jak Android 6.0 podporuje propojení aplikací, což je technika, která umožňuje mobilním aplikacím reagovat na adresy URL na webech. Bude probírat, co je propojení aplikací, jak implementovat propojení aplikací v aplikaci pro Android 6.0 a jak nakonfigurovat web tak, aby udělil oprávnění mobilní aplikaci pro doménu.

Přehled propojení aplikací

Mobilní aplikace už nejsou v silu – v mnoha případech jsou důležitými součástmi svých firem spolu s jejich webem. Je žádoucí, aby firmy bezproblémově propojily svou webovou přítomnost a mobilní aplikace s odkazy na webu, který spouští mobilní aplikace a zobrazuje relevantní obsah v mobilní aplikaci. Propojení aplikací (označované také jako hluboké propojení) je jedna technika, která umožňuje mobilnímu zařízení reagovat na identifikátor URI a spustit mobilní aplikaci, která odpovídá danému identifikátoru URI.

Android zpracovává propojení aplikací prostřednictvím systému záměru – když uživatel klikne na odkaz v mobilním prohlížeči, mobilní prohlížeč odešle záměr, který Bude Android delegovat na registrovanou aplikaci. Když například kliknete na odkaz na webu vaření, otevře se mobilní aplikace přidružená k danému webu a zobrazí se uživateli konkrétní recept. Pokud je pro zpracování tohoto záměru zaregistrovaných více než jedna aplikace, android vyvolá dialogové okno, které se označuje jako nejednoznačný dialog , který požádá uživatele, aby vybral aplikaci, která by měla zpracovat záměr, například:

Example screenshot of a disambiguation dialog

Android 6.0 to zlepšuje pomocí automatického zpracování odkazů. Android může automaticky zaregistrovat aplikaci jako výchozí obslužnou rutinu identifikátoru URI – aplikace se automaticky spustí a přejde přímo na příslušnou aktivitu. Způsob, jakým se Android 6.0 rozhodne zpracovat kliknutí na identifikátor URI, závisí na následujících kritériích:

  1. Existující aplikace je už přidružená k identifikátoru URI – uživatel už možná k identifikátoru URI přidružil existující aplikaci. V takovém případě bude Android tuto aplikaci dál používat.
  2. K identifikátoru URI není přidružená žádná existující aplikace, ale nainstaluje se podpůrná aplikace – v tomto scénáři uživatel nezadá existující aplikaci, takže Android použije nainstalovanou podpůrnou aplikaci ke zpracování požadavku.
  3. K identifikátoru URI není přidružena žádná existující aplikace, ale je nainstalováno mnoho podpůrných aplikací – protože existuje více aplikací, které podporují identifikátor URI, zobrazí se dialogové okno nejednoznačnosti a uživatel musí vybrat, která aplikace bude zpracovávat identifikátor URI.

Pokud uživatel nemá nainstalované žádné aplikace, které podporují identifikátor URI, a ten se následně nainstaluje, Android tuto aplikaci nastaví jako výchozí obslužnou rutinu identifikátoru URI po ověření přidružení k webu přidruženému k identifikátoru URI.

Tato příručka popisuje, jak nakonfigurovat aplikaci pro Android 6.0 a jak vytvořit a publikovat soubor Digital Asset Links pro podporu propojení aplikací v Androidu 6.0.

Požadavky

Tato příručka vyžaduje Xamarin.Android 6.1 a aplikaci, která cílí na Android 6.0 (úroveň rozhraní API 23) nebo vyšší.

Propojení aplikací je možné ve starších verzích Androidu pomocí balíčku NuGet Rivets z úložiště komponent Xamarin. Balíček Rivets není kompatibilní s propojením aplikací v Androidu 6.0; nepodporuje propojení aplikací pro Android 6.0.

Konfigurace propojení aplikací v Androidu 6.0

Nastavení odkazů na aplikace v Androidu 6.0 zahrnuje dva hlavní kroky:

  1. Přidání jednoho nebo více filtrů záměru pro identifikátory URI webu – průvodce filtry záměru v Androidu, jak zpracovat kliknutí na adresu URL v mobilním prohlížeči.
  2. Publikování souboru JSON s odkazy na digitální prostředky na webu – jedná se o soubor, který se nahraje na web a používá ho Android k ověření vztahu mezi mobilní aplikací a doménou webu. Bez toho android nemůže aplikaci nainstalovat jako výchozí popisovač identifikátoru URI; uživatel to musí provést ručně.

Konfigurace filtru záměru

Je nutné nakonfigurovat filtr záměru, který mapuje identifikátor URI (nebo možnou sadu identifikátorů URI) z webu na aktivitu v aplikaci pro Android. V Xamarin.Android je tato relace vytvořena adorováním aktivity pomocí IntentFilterAttribute. Filtr záměru musí deklarovat následující informace:

  • Intent.ActionView – Tím se zaregistruje filtr záměru, který bude odpovídat na žádosti o zobrazení informací.
  • Categories– Filtr záměru by měl zaregistrovat jak Intent.CategoryBrowsable, tak Intent.CategoryDefault, aby bylo možné správně zpracovat webový identifikátor URI.
  • DataScheme – Filtr záměru musí deklarovat http a/nebo https. Toto jsou pouze dvě platná schémata.
  • DataHost – Jedná se o doménu, ze které budou identifikátory URI pocházet.
  • DataPathPrefix – Jedná se o volitelnou cestu k prostředkům na webu.
  • AutoVerify – Atribut autoVerify říká Androidu, aby ověřil vztah mezi aplikací a webem. Podrobněji se o tom budeme zabývat níže.

Následující příklad ukazuje, jak pomocí IntentFilterAttribute zpracovat odkazy z https://www.recipe-app.com/recipes a z 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 před registrací aplikace jako výchozí obslužné rutiny identifikátoru URI ověří, že každý hostitel identifikovaný záměrem filtruje soubor digitálních assetů na webu. Všechny filtry záměru musí předávat ověření, aby Android mohl aplikaci vytvořit jako výchozí obslužnou rutinu.

Propojení aplikací pro Android 6.0 vyžaduje, aby Android před nastavením aplikace jako výchozí obslužné rutiny identifikátoru URI ověřil přidružení mezi aplikací a webem. K tomuto ověření dojde při první instalaci aplikace. Soubor s odkazy na digitální prostředky je soubor JSON, který je hostovaný příslušnými webovými doménami.

Poznámka:

Atribut android:autoVerify musí být nastaven filtrem záměru – jinak Android neprovádí ověření.

Soubor je umístěn správcem domény v umístění https://domain/.well-known/assetlinks.json.

Soubor digitálního assetu obsahuje metadata potřebná k ověření přidružení Androidem. Soubor assetlinks.json má následující páry klíč-hodnota:

  • namespace – obor názvů aplikace pro Android.
  • package_name – název balíčku aplikace pro Android (deklarovaný v manifestu aplikace).
  • sha256_cert_fingerprints – otisky prstů SHA256 podepsané aplikace. Další informace o tom, jak získat otisk sha256 aplikace, najdete v průvodci Vyhledáním podpisu vašeho úložiště klíčů.

Následující fragment kódu je příkladem assetlinks.json s jednou aplikací uvedenou:

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

Pro podporu různých verzí nebo sestavení aplikace je možné zaregistrovat více než jeden otisk prstu SHA256. Tento další assetlinks.json soubor je příkladem registrace více aplikací:

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

Web Google Digital Asset Links má online nástroj, který může pomoct s vytvářením a testováním souboru Digitální prostředky.

Po implementaci odkazů na aplikace by měly být různé části testovány, aby se zajistilo, že fungují podle očekávání.

Je možné ověřit, že je soubor Digitální prostředky správně naformátovaný a hostovaný pomocí rozhraní API digitálních assetů Společnosti Google, jak je znázorněno v tomto příkladu:

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

Existují dva testy, které se dají provést, aby se zajistilo, že jsou filtry záměru správně nakonfigurované a že je aplikace nastavená jako výchozí obslužná rutina identifikátoru URI:

  1. Soubor digitálního assetu je správně hostovaný, jak je popsáno výše. První test odešle záměr, který má Android přesměrovat do mobilní aplikace. Aplikace pro Android by se měla spustit a zobrazit aktivitu zaregistrovanou pro adresu URL. Do příkazového řádku zadejte:

    $ adb shell am start -a android.intent.action.VIEW \
        -c android.intent.category.BROWSABLE \
        -d "http://<domain1>/recipe/scalloped-potato"
    
  2. Zobrazí existující zásady zpracování odkazů pro aplikace nainstalované na daném zařízení. Následující příkaz vypíše výpis zásad propojení pro každého uživatele v zařízení s následujícími informacemi. Do příkazového řádku zadejte následující příkaz:

    $ adb shell dumpsys package domain-preferred-apps
    
    • Package – Název balíčku aplikace.
    • Domain – Domény (oddělené mezerami), jejichž webové odkazy bude aplikace zpracovávat
    • Status – Toto je aktuální stav zpracování odkazů pro aplikaci. Hodnota vždy znamená, že aplikace android:autoVerify=true deklarovala a předala ověření systému. Následuje šestnáctkové číslo představující záznam systému Android předvolby.

    Příklad:

    $ 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
    

Shrnutí

Tento průvodce popisuje, jak funguje propojení aplikací v Androidu 6.0. Pak jsme se dozvěděli, jak nakonfigurovat aplikaci pro Android 6.0 tak, aby podporovala odkazy na aplikace a reagovala na ně. Popisuje také, jak otestovat propojení aplikací v aplikaci pro Android.