Instant App 用のアプリリンクを作成する

Android Instant App は、インストールせずに動作するアプリの小さいバージョンです。ユーザーは APK をインストールする代わりに、URL をクリックするだけでアプリを起動できます。そのため、Instant App はすべて、Android アプリリンクを使用して宣言した URL でアクセスできる必要があります。このページでは、Android Instant Apps で Android アプリリンクを使用する方法について説明します。

まず、アプリリンクについて、あらかじめ理解しておくべきことをまとめます。

  • ユーザーが URL リンクを使ってアプリ内の特定の画面に直接ジャンプできるようにするアプリ内のアクティビティ用のインテント フィルタを作成する場合、これを「ディープリンク」と呼びます。ただし、他のアプリも同様の URL インテント フィルタを宣言できるため、システムはユーザーにどのアプリを開くかを求めることがあります。ディープリンクを作成するには、アプリ コンテンツ用のディープリンクを作成するをご覧ください。
  • アプリの HTTP ディープリンクに対応するウェブサイトで assetlinks.json ファイルを公開すると、アプリがその URL の真の所有者であることが確認されます。このように、ディープリンクを Android アプリリンクに変換しました。これにより、ユーザーが URL をクリックしたときにアプリがすぐに開くようになります。アプリリンクを作成するには、Android アプリリンクを検証するをご覧ください。

したがって、Android アプリリンクは単なる HTTP ディープリンクであり、ウェブサイトの所有者であることが確認されているため、ユーザーは開くアプリを選択する必要がありません。より具体的な説明については、ディープリンクとアプリリンクの違いをご覧ください。

どちらの場合も、ユーザーはすでにアプリをインストールしている必要があります。ユーザーがウェブサイトのリンクの 1 つをクリックしても、アプリをインストールしていない場合(そして、他のアプリがその URL インテントを処理しない場合)、URL はウェブブラウザで開きます。そこで Instant App を作成することで、この点を解決できます。つまり、ユーザーがアプリをインストールしていなくても、URL をクリックするだけでアプリを開くことができます。

エンドユーザーがアプリに対して Google 検索を実行すると、Google 検索に「インスタント」バッジの付いた URL が表示されます。

アプリ コンテンツへのディープリンクの作成Android アプリリンクの検証のガイドにすでに従っている場合は、アプリリンクを Instant App で機能させるために必要な作業のほとんどをすでに完了しています。Instant App 用のアプリリンクを使用する場合、追加のルールが 2 つあります。

  • Instant App でアプリリンクとして使用するインテント フィルタはすべて、HTTP と HTTPS の両方をサポートする必要があります。次に例を示します。

    <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="http" android:host="www.example.com" />
        <data android:scheme="https" />
    </intent-filter>
    

    2 番目の <data> 要素に host を含める必要はありません。各 <intent-filter> 要素内では、各 <data> 属性のすべての組み合わせが有効と見なされるためです(そのため、このインテント フィルタは https://www.example.com を解決します)。

  • Instant App は、ウェブサイトのドメインごとに 1 つのみ宣言できます。(これは、ウェブサイトを複数のアプリに関連付けることができるインストール可能なアプリのアプリリンクを作成する場合とは異なります)。

  • Instant App のすべての HTTP URL インテント フィルタは、インストール版アプリに含める必要があります。ユーザーが完全なアプリをインストールした後は、URL をタップしたときに Instant App ではなく、常にインストールされているアプリが開くようにすることは重要です。
  • Instant App とインストール版アプリの両方で、少なくとも 1 つのインテント フィルタに autoVerify="true" を設定する必要があります(自動検証を有効にする方法をご覧ください)。
  • ドメイン(およびアプリリンクでサポートされているサブドメイン)ごとに、HTTPS プロトコルを使用して assetlinks.json 1 つ公開する必要があります。(複数のホストのアプリリンクをサポートする方法をご覧ください)。
  • assetlinks.json ファイルは、有効な JSON で、リダイレクトなしで提供され、bot からアクセスできる必要があります(robots.txt/.well-known/assetlinks.json のクロールを許可する必要があります)。
  • インテント フィルタの host 属性でワイルドカードを使用することはおすすめしません。(複数のサブドメインからのアプリリンクをサポートする方法をご覧ください)。
  • カスタムホスト / スキーム URL は、個別のインテント フィルタを使用して宣言する必要があります。
  • アプリリンク URL で、主な語句の上位の検索結果を念頭に置くようにします。