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 は、ユーザーが地図リンクをタップしたときに表示される確認ダイアログを示すものです。このダイアログは、リンクを Google マップで開くのか 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" />

    <!-- Do not include other schemes. -->
    <data android:scheme="http" />
    <data android:scheme="https" />

    <data android:host="myownpersonaldomain.com" />
</intent-filter>

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

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

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

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

上記のリンク先ドキュメントの代わりとして、Android Studio のツールである Android アプリリンク アシスタントは、Android アプリリンクの作成に必要な各ステップをガイドします。

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

Android アプリリンクを管理、検証する

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

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

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

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

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