Android アプリリンクの処理

ディープリンクはコンテンツ URI を処理します。ウェブリンクは HTTP と HTTPS のスキームを処理します。Android アプリリンクは autoVerify 属性を処理します。
図 1. ディープリンク、ウェブリンク、Android アプリリンクの機能

ユーザーがデバイスでリンクをたどる目的は、見たいコンテンツにたどり着くことです。デベロッパーは Android アプリリンクを設定して、アプリ選択ダイアログ(曖昧性除去ダイアログとも呼ばれます)をバイパスして、リンクの特定のコンテンツにユーザーを直接アプリ内で誘導できます。Android アプリリンクは HTTP URL とウェブサイトとの関連付けを利用するため、アプリをインストールしていないユーザーは、サイト上のコンテンツに直接移動します。

Android アプリリンクを実装する前に、Android アプリで作成できるさまざまな種類のリンク(ディープリンク、ウェブリンク、Android アプリリンク)を理解しておくことが重要です。図 1 は、これらの種類のリンクの関係を示しています。以降のセクションでは、各種類のリンクについて詳しく説明します。

ディープリンクは、ユーザーをアプリの特定の部分に直接誘導するスキームの URI です。ディープリンクを作成するには、次のコード スニペットに示すように、インテント フィルタを追加して、アプリ内の適切なアクティビティにユーザーを誘導します。

<activity
    android:name=".MyMapActivity"
    android:exported="true"
    ...>
    <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="geo" />
    </intent-filter>
</activity>

ユーザーがディープリンクをクリックすると、確認ダイアログが表示されることがあります。このダイアログでは、特定のディープリンクを処理できる複数のアプリ(自身のアプリを含む)のうち 1 つをユーザーが選択できます。図 2 は、ユーザーが地図リンクをクリックすると、マップと Chrome のどちらで開くかを尋ねるダイアログを示しています。

図 2. 確認ダイアログ

ウェブリンクは、HTTP または HTTPS スキームを使用するディープリンクです。Android 12 以降では、ウェブリンク(Android アプリリンク以外)をクリックすると、常にコンテンツがウェブブラウザで表示されます。以前のバージョンの Android を搭載したデバイスでは、自分のアプリ、またはユーザーのデバイスにインストールされている他のアプリもウェブリンクを処理できる場合、ユーザーはブラウザに直接移動しない可能性があります。代わりに、図 2 のような確認ダイアログが表示されます。

次のコード スニペットは、ウェブリンク フィルタの例を示しています。

<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" />
    <data android:host="myownpersonaldomain.com" />
</intent-filter>

Android 6.0(API レベル 23)以降で利用可能な Android アプリリンクは、HTTP および HTTPS スキームを使用する、autoVerify 属性を含むウェブリンクです。この属性を使用すると、アプリは自身を特定のタイプのリンクのデフォルト ハンドラとして指定できます。そのため、ユーザーが Android アプリリンクをクリックすると、アプリがインストールされていればすぐに開きます。曖昧さ回避ダイアログは表示されません。

ユーザーがアプリをデフォルト ハンドラにしたくない場合は、アプリの設定からこの動作をオーバーライドできます。

次のコード スニペットは、Android アプリリンク フィルタの例を示しています。

<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="myownpersonaldomain.com" />
</intent-filter>

Android アプリリンクには、次のようなメリットがあります。

  • 安全で具体的: Android アプリリンクは、所有するウェブサイト ドメインにリンクする HTTP URL を使用するため、他のアプリはリンクを使用できません。Android アプリリンクの要件の 1 つは、ウェブサイトの関連付け方法のいずれかを使用してドメインの所有権を確認することです。
  • シームレスなユーザー エクスペリエンス: Android アプリリンクは、ウェブサイトとアプリ内の同じコンテンツに対して単一の HTTP URL を使用するため、アプリをインストールしていないユーザーは、アプリではなく、ウェブサイトにアクセスするだけです。404 エラーもエラーもありません。
  • Android Instant Apps のサポート: Android Instant Apps を使用すると、ユーザーは Android アプリをインストールせずに実行できます。Android アプリに Instant App サポートを追加するには、Android アプリリンクを設定して、g.co/InstantApps にアクセスしてください。
  • Google 検索からユーザーを引き付ける: ユーザーは、モバイル ブラウザ、Google 検索アプリ、Android の画面検索、Google アシスタントで Google の URL をクリックして、アプリの特定のコンテンツを直接開きます。

Android アプリリンクを作成する一般的な手順は次のとおりです。

  1. アプリの特定のコンテンツへのディープリンクを作成する: アプリ マニフェストで、ウェブサイト URI のインテント フィルタを作成し、インテントのデータを使用してユーザーをアプリ内の適切なコンテンツに誘導するようにアプリを構成します。詳しくは、アプリ コンテンツへのディープリンクを作成するをご覧ください。
  2. ディープリンクの検証を追加する: アプリリンクの検証をリクエストするようにアプリを構成します。次に、デジタル アセット リンクの JSON ファイルをウェブサイトで公開して、Google Search Console で所有権を確認します。詳しくは、アプリリンクの検証をご覧ください。

上記のリンク先のドキュメントの代わりに、Android アプリリンク アシスタントを使用すると、Android アプリリンクの作成に必要な各手順を実施できます。

詳しくは、次のリソースをご覧ください。

Android アプリリンクを管理、確認する

Google Play Console でディープリンクを管理、検証できます。アプリが正常にアップロードされると、ダッシュボード([成長] > [ディープリンク] にあります)にディープリンクの概要と構成エラーが表示されます。

図 3. ディープリンク Google Play Console ダッシュボード

ダッシュボードには次のセクションがあります。

  • ディープリンク設定全体の主なポイント
  • マニフェスト ファイルで宣言されているすべてのドメイン
  • パスでグループ化されたウェブリンク
  • カスタム スキームを含むリンク
それぞれのセクションに、ディープリンクのステータスと、エラーが発生した場合の修正方法が表示されます。

ダッシュボードの詳細については、こちらのガイドをご覧ください。