ysk-san KT

技術系の情報をKTするために、まずは勉強

Android開発におけるディープリンク (Deep Link)とアプリ内リンク (In-App Link)のまとめ

ディープリンク、アプリ内リンクの比較

共通点:

両方とも、ユーザーエクスペリエンスの向上を目的としており、アプリ内の特定のコンテンツや機能に素早くアクセスできるようにします。

相違点:

起動のトリガー: ディープリンクは通常、外部からのトリガーによって起動しますが、アプリ内リンクはアプリ内のイベントやUIコンポーネントのクリックによって起動します。
URLの形式: ディープリンクは通常、HTTPやHTTPSのURLスキームを使用しますが、アプリ内リンクはアプリ内のIDやデータを使用するため、URLスキームが一般的ではありません。
アプリ未インストール時の動作: ディープリンクは未インストールの場合にアプリのインストールを促すことがありますが、アプリ内リンクはアプリが既にインストールされていることを前提としています。
どちらのアプローチを選択するかは、具体的なユースケースや目的に依存します。アプリ内のナビゲーションを改善する場合はアプリ内リンクが適しており、外部との連携やウェブからの流入を考える場合はディープリンクが有益です。

 

概要

外部コンテンツへのリンク: 主にウェブ上のコンテンツからアプリ内の特定のコンテンツに直接リンクするために使用されます。
URLベース: 通常、HTTPやHTTPSのURLスキームを使用し、特定のアクティビティや画面に遷移します。
アプリ未インストール時の対応: ユーザーがアプリを未インストールの状態でディープリンクをクリックすると、アプリのインストールが促されることがあります。
外部からのトリガー: 他のアプリやウェブページから起動されることがあります。

実装

Intentのフィルター設定: AndroidManifest.xml ファイルで、ディープリンクを処理するアクティビティに intent-filter を設定します。

<activity android:name=".DeepLinkActivity">
    <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="example.com" android:pathPrefix="/deep-link" />
    </intent-filter>
</activity>

リンクの作成: ウェブ上のリンクや他のアプリから、以下のようなURLでディープリンクを作成します。

リンクの処理: アプリが起動され、ディープリンクが呼ばれると、指定したアクティビティが起動します。

public class DeepLinkActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_deep_link);

        // ディープリンクが処理された時のロジックを追加
    }
}

概要

アプリ内のナビゲーション: アプリ内の異なる画面や機能に直接リンクするために使用されます。
内部IDやデータに基づくリンク: 通常はアプリ内の要素を識別するためのIDやデータを使用します。
アプリ内のトリガー: 主にアプリ内のボタンやリンクから発生することが一般的です。

実装

リンクの処理: アプリ内リンクは通常、クリックリスナーや適切なUIコンポーネントを使用して処理されます。

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button inAppLinkButton = findViewById(R.id.inAppLinkButton);
        inAppLinkButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // アプリ内リンクがクリックされた時の処理を追加
                openInAppLinkPage();
            }
        });
    }

    private void openInAppLinkPage() {
        // アプリ内リンクが指定された画面や機能を表示するロジックを追加
    }
}

リンクの作成: リンクを作成する場合、アプリ内のリンクに使用されるIDやデータを指定します。

<Button
    android:id="@+id/inAppLinkButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Open In-App Link" />

このボタンがクリックされたときに、openInAppLinkPage メソッドが呼ばれ、それによって指定された画面が表示されます。

 

まとめ

ディープリンクとアプリ内リンクは、異なる使用ケースに向いています。ディープリンクは通常、ウェブ上のコンテンツとの連携や他のアプリからの呼び出しに使用されます。一方、アプリ内リンクは主にアプリ内の機能や画面間のナビゲーションに使用されます。両方とも、ユーザーエクスペリエンスを向上させるために注意深く設計する必要があります。