この記事では、ディープリンクの種類と選び方、実装方法から動作確認の手順を説明します。
アプリの開発を担当する方に向けた内容です。
ディープリンクとは、ユーザーをアプリ内の特定の画面へ直接遷移させる仕組みです。
プッシュ通知やアプリ内メッセージに設定すると、タップしたユーザーを目的の画面へ誘導できます。
この記事は、iOSはSwift、AndroidはKotlinの利用を前提にしています。
ほかの言語を利用している場合は、各OSの公式ドキュメントをもとに読み替えてください。
ディープリンクの種類
Reproでは、次の2種類のディープリンクを利用できます。
- カスタムURLスキーム(例:
myapp://) - Universal Links(iOS)/App Links(Android)(例:
https://example.com/)
それぞれの特徴は次のとおりです。
| 比較項目 | カスタムURLスキーム | Universal Links / App Links |
|---|---|---|
| 概要 | アプリ固有のスキームでアプリを直接起動します。 もっとも標準的な仕組みです。 |
通常のWebのURL形式でアプリを直接起動します。 セキュリティの高い仕組みです。 |
| アプリ未インストール時の動作 | エラーになるか、何も起きません。 メールやLINEなど外部チャネルから誘導する場合は注意が必要です。 |
App Store/Google Play、または指定したWebサイトが開きます。 メールやSNSと共通のURLを利用できます。 |
| 必要な対応 | アプリ側の設定だけで利用できます。 SDKの追加実装は不要です。 ただし、アプリ内WebViewで開く場合は追加実装が必要です。 |
以下の2つの対応が必要です。
|
| Repro SDKの要件 | すべてのバージョンで利用できます。 | Repro iOS SDK 5.9.0 以上、Repro Android SDK 5.7.0 以上で利用できます。 |
キャンペーンに設定できるURLの形式は「プッシュ通知やアプリ内メッセージのディープリンクで指定できる形式はなんですか?」を参照してください。
Universal Links / App Links が適しているケース
- 自社のWebサイトがあり、メールやLINE、SNSなども併用する
アプリ未インストールのユーザーがタップしても、エラーにならずWebサイトへ遷移します。
Webとアプリで共通のURLを使えるため、チャネルをまたいだ誘導に適しています。
カスタムURLスキームが適しているケース
- 自社のWebサイトがない
- 施策がアプリ内で完結する
プッシュ通知とアプリ内メッセージだけで誘導するようなケースです。
アプリをインストール済みのユーザーに向けた施策は、カスタムURLスキームで実現が可能です。
実装の手間が小さいため、早く施策を始めたい場合にも適しています。
カスタムURLスキームの設定
アプリが特定のスキーム(例:myapp://)に反応するように設定します。
iOS
Xcodeでプロジェクトを開き、[TARGETS] > [Info] > [URL Types]を選択します。
任意のIdentifierと、URL Schemes(例:myapp)を追加します。
詳細は、Apple Developerによる「Defining a custom URL scheme for your app」を参照してください。
Android
AndroidManifest.xmlを開きます。
遷移先のActivityの<intent-filter>に、次のように定義します。
<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="myapp" /> </intent-filter>
詳細は、Android Developersによる「Create deep links」を参照してください。
アプリ内WebViewで開く場合
タップ時にアプリ内のWebViewでWebページを表示したい場合は、追加の実装が必要です。
Repro SDKは、キャンペーンに設定されたURLをそのままOSに渡して開きます。
そのため、通常のWebのURLを設定すると、アプリの外でブラウザが起動します。
アプリ内のWebViewで開くには、次のどちらかの方法で実装します。
WebView起動用のカスタムURLスキームを定義する
- WebView起動専用のカスタムURLスキームを定義します。
例:myapp://webview?url=https... - アプリの起動時・復帰時にこのスキームを受け取ったら、クエリパラメーターのURLを取り出します。
- 取り出したURLを、アプリ内のWebViewで読み込むように実装します。
Repro SDKのコールバックを利用する
- リンクがタップされたときの処理を、Repro SDKのコールバックでフックします。
- SDKがOSにURLを渡す処理を無効にし、URLをアプリ内のWebView画面へ渡して開きます。
実装方法は、Repro開発者向けドキュメントの「ユニバーサルリンク/アプリリンクを使用する場合」を参照してください。
Universal Links / App Links の設定
Universal Links / App Links を利用するには、OS側の設定とRepro SDKの実装が必要です。
- OS側の設定を完了させます。
iOSはapple-app-site-association、Androidはassetlinks.jsonをWebサーバーに配置します。
iOS:Apple Developerによる「Supporting universal links in your app」
Android:Android Developersによる「About App Links」 - Repro経由のリンクを受け取るコールバックを実装します。
コードとメソッド名は、Repro開発者向けドキュメントの「ユニバーサルリンク/アプリリンクを使用する場合」を参照してください。
このコールバックは、プッシュ通知とアプリ内メッセージの両方で利用できます。
Repro iOS SDK 5.9.0 以上、Repro Android SDK 5.7.0 以上で利用できます。
利用中のRepro SDKのバージョンに応じたドキュメントを確認してください。
動作確認
実装が完了したら、次の2つのステップで動作を確認します。
ステップ1|Reproを介さない単体検証
アプリ側の実装だけで、正しく遷移するかを確認します。
端末のメモアプリやリマインダーアプリに、テストするディープリンクを貼り付けて保存します。
例:myapp://product?id=123
保存したリンクをタップし、次の状態で目的の画面へ遷移するかを確認します。
| アプリの状態 | 確認すること |
|---|---|
| 完全に終了している(キル状態) | アプリが起動し、目的の画面へ遷移するか |
| バックグラウンドにある | アプリが前面に戻り、目的の画面へ遷移するか |
ここで遷移しない場合は、アプリ側の設定や実装に原因があります。
URLスキームの定義や、アプリの状態に応じた遷移処理を見直してください。
ステップ2|Reproを使ったテスト配信
ステップ1で正しく遷移した場合のみ、Repro管理画面からテスト配信をします。
プッシュ通知やアプリ内メッセージを配信し、目的の画面へ遷移するかを確認します。
次の3つの状態で、それぞれ確認してください。
- キル状態
- バックグラウンド
- フォアグラウンド
想定どおりに遷移しない場合は、「ディープリンクが期待通りに画面遷移しません。何を確認すればよいですか?」を参照してください。
ディープリンクの実装と動作確認が完了しました。
プッシュ通知やアプリ内メッセージに設定すると、ユーザーを目的の画面まで直接案内できます。
目的の画面へ直接遷移させることで、ユーザーが自分で画面を探す手間がなくなります。
途中での離脱を防ぎやすくなり、購入や会員登録など、施策のゴールとなる行動につなげやすくなります。