概要
ディープリンクは、ユーザーがリンクをタップしたときに、メール、SMS、ウェブサイト、プッシュ通知、アプリ内メッセージなどのソースを問わず、アプリ内の特定の画面に誘導します。アプリがインストールされていない場合、オペレーティングシステムはユーザーをアプリストアまたはフォールバックウェブページにリダイレクトできます。 このガイドでは以下を説明します:- ディープリンクの種類とそれぞれの使用タイミング
- Android と iOS のプラットフォーム設定
- OneSignal SDK を使用したアプリでのディープリンクの処理
- プッシュ、メール、アプリ内メッセージのチャネル別の動作
一般的な URL およびリンク設定(起動 URL、UTM パラメーター、動的 URL、リンクトラッキング)については、URL、リンク、ディープリンクを参照してください。
前提条件
ディープリンクを設定する前に、以下が必要です:- アプリが設定された OneSignal アカウント
- モバイルアプリにインストールされた OneSignal SDK
- Universal Links または App Links 用に HTTPS でホストされた管理ドメイン
- アプリのソースコードおよびビルド設定へのアクセス(iOS は Xcode、Android は Android Studio)
ディープリンクの種類
ディープリンクには 3 つの一般的なメカニズムがあります。各メカニズムの動作はアプリがインストールされているかどうかによって異なります。| 種類 | プラットフォーム | 形式 | アプリ未インストール時 |
|---|---|---|---|
| Universal Links | iOS 9+ | https://yourdomain.com/path | Safari で URL を開く |
| App Links | Android 6.0+ | https://yourdomain.com/path | ブラウザで URL を開く |
| カスタム URI スキーム | iOS と Android | myapp://path | エラーなしで失敗またはエラーを表示 |
https:// URL を使用し、チャネル(プッシュ、メール、SMS)をまたいで機能し、アプリがインストールされていない場合のフォールバック動作を提供します。カスタム URI スキーム(myapp://)は設定が簡単ですが、フォールバック動作を提供せず、すべてのコンテキスト(メールクライアントなど)で機能しない場合があります。
Android 設定(App Links)
Android Studio の App Links Assistant を使用して、必要な設定を生成します。インテントフィルターの設定
ディープリンクを処理する Activity にインテントフィルターを追加します:受信インテントの処理
Digital Asset Links ファイルのホスティング
Android Studio の App Links Assistant を使用してassetlinks.json ファイルを生成し、以下の場所にホストします:
iOS 設定(Universal Links)
Apple の Universal Links は、ユーザーが一致するhttps:// URL をタップしたときにアプリを開きます。アプリのインストールが保証されているシンプルなユースケースでは、代わりに URL スキームを使用できます。
Associated Domains の有効化
- Xcode でターゲットを選択 → Signing & Capabilities → Associated Domains を追加
- ドメインを追加:
applinks:yourdomain.com
アプリでの Universal Link の処理
Apple App Site Association ファイルのホスティング
apple-app-site-association(AASA)ファイルを作成し、以下の場所にホストします:
TEAMID を Apple Team ID に、com.example.app をバンドル識別子に置き換えてください:
iOS 起動 URL の動作
OneSignal の iOS SDK は起動 URL(url プロパティ)を処理するために openURL を使用します。これにより、リンクが最初にブラウザで開き、その後アプリにリダイレクトされます——ユーザーエクスペリエンスが低下する可能性があります。
これを回避するには、以下のいずれかのアプローチを使用してください:
- API ペイロードで
urlの代わりにdataを使用し、プッシュ通知クリックリスナーでディープリンクを処理する Info.plistに Boolean 値YESのOneSignal_suppress_launch_urlsを追加して起動 URL を抑制し、クリックリスナーですべてのナビゲーションを処理する
OneSignal SDK によるディープリンクの処理
OneSignal メッセージからのディープリンクを処理する最も信頼性の高い方法は、OS レベルのリンク解決に依存するのではなく、SDK のクリックリスナーを使用することです。これにより、アプリ内のナビゲーションを完全に制御できます。プッシュ通知クリックリスナー
addClickListener を使用して通知クリックをインターセプトし、ディープリンク URL または追加データに基づいてユーザーをルーティングします:
addClickListener() プッシュを参照してください。
アプリ内メッセージクリックリスナー
アプリ内メッセージのボタンとアクションからのディープリンクを処理するには、アプリ内メッセージクリックリスナーを使用します:addClickListener() アプリ内を参照してください。
プッシュ通知
2 つの方法のいずれかでディープリンクを含めます:| 方法 | API プロパティ | 動作 |
|---|---|---|
| 起動 URL | url(またはモバイル専用の app_url) | OS が URL を直接開く。iOS では、抑制しない限りブラウザが先に開く。 |
| 追加データ(推奨) | data | URL がクリックリスナーに渡される。ナビゲーションを完全に制御できる。 |
プラットフォームの動作
- Android:App Links を通じて一致する Activity を直接開く
- iOS:Safari を開き、その後アプリを開く(起動 URL を抑制してクリックリスナーでナビゲーションを処理しない場合)
url、web_url、app_url のターゲティングの詳細については、URL、リンク、ディープリンクを参照してください。
メール
デフォルトでは、OneSignal はクリックトラッキングのためにメールリンクを書き換えます。これにより URL が変更され、OS がドメインをアプリの Associated Domain と一致するものと認識しなくなるため、ディープリンクが機能しなくなります。メールでのディープリンクの有効化
ディープリンクを維持するには、以下のいずれかの方法でクリックトラッキングを無効にします:- ダッシュボード:メールエディターでリンククリックのトラッキングのチェックを外す
- API:
disable_email_click_tracking: trueを設定する - リンクごと:Liquid フィルター
{{ 'https://yourdomain.com/path' | do_not_track_link }}を使用して、他のリンクのトラッキングを維持しながら個別リンクのトラッキングを無効にする

メールディープリンクの動作
| シナリオ | 結果 |
|---|---|
| iOS + Safari + Universal Link + トラッキング無効 | アプリを直接開く |
| iOS + Safari + Universal Link + トラッキング有効 | Safari を開き、アプリを開くよう促す |
| iOS + Safari 以外のメールクライアント + Universal Link | アプリ未インストール時は App Store を開く |
| Android + App Link + トラッキング無効 | アプリを直接開く |
| Android + App Link + トラッキング有効 | 先にブラウザを開き、その後アプリを開く |
アプリ内メッセージ
アプリ内メッセージのディープリンクはクリックリスナーパターンを使用します。メッセージエディターでカスタムアクション識別子を設定し、アプリコードでそれを処理します。ドラッグアンドドロップエディター
- ボタンまたはクリック可能な要素を追加する
- クリックアクションをカスタムアクション ID に設定する
- アクション名としてディープリンク URI を入力する(例:
https://yourdomain.com/promoまたはmyapp://promo)
HTML エディター
カスタム HTML からディープリンクをトリガーするには、アプリ内 JS ライブラリのopenUrl メソッドを使用します。
クリックの処理
アプリ内メッセージクリックリスナーを使用してアクションをインターセプトし、アプリ内でユーザーを誘導します。ディープリンクのテスト
Android
通知を送信せずに App Links をテストするには、adb を使用します:
assetlinks.json にアクセスできることを確認します:
iOS
Apple の Associated Domains 検証ツールを使用して AASA ファイルを確認します。以下の方法で Universal Links をテストすることもできます:- メモアプリにリンクを貼り付ける
- リンクを長押しして「[App] で開く」オプションが表示されることを確認する
- リンクをタップしてアプリが開くことを確認する
Universal Links は Safari のアドレスバーに直接入力しても機能しません——別のアプリ(メモ、メール、メッセージなど)からタップする必要があります。
OneSignal テストメッセージ
- OneSignal ダッシュボードから、ディープリンク URL を起動 URL または追加データとして設定してテストプッシュを送信する
- 通知がアプリ内の正しい画面を開くことを確認する
- クリックリスナーのログをチェックして、URL またはデータが受信されたことを確認する
トラブルシューティング
iOS ディープリンクがアプリの代わりに Safari を開く
これは最も一般的な問題です。考えられる原因:- AASA ファイルが正しくホストされていない —
https://yourdomain.com/.well-known/apple-app-site-associationにあり、Content-Type: application/jsonでリダイレクトがないことを確認する - Associated Domains が設定されていない — Xcode → Signing & Capabilities → Associated Domains に
applinks:yourdomain.comが含まれていることを確認する - 起動 URL の動作 — OneSignal の iOS SDK は
urlプロパティにopenURLを使用し、ブラウザ優先の動作をトリガーします。代わりにdata+ クリックリスナーを使用するか、起動 URL を抑制してください - Safari でのテスト — Universal Links は Safari のアドレスバーからはアクティベートされません。メモ、メール、または別のアプリからテストしてください。
Android ディープリンクがブラウザを開く
autoVerifyが欠落している — インテントフィルターにandroid:autoVerify="true"が含まれていることを確認するassetlinks.jsonが見つからない — ファイルがhttps://yourdomain.com/.well-known/assetlinks.jsonにあり、HTTP 200 を返すことを確認する- SHA256 フィンガープリントの不一致 —
assetlinks.jsonのフィンガープリントはアプリの署名証書と一致する必要があります。デバッグビルドとリリースビルドは異なる証明書を使用します。
ディープリンクがプッシュでは機能するがメールでは機能しない
メールのクリックトラッキングが URL を書き換え、ドメイン検証を破壊しています。ディープリンクを含むメールのクリックトラッキングを無効にしてください。ディープリンクは受信されたがアプリが遷移しない
- クリックリスナーがアプリのライフサイクル初期(例:
Application.onCreate()またはAppDelegate.didFinishLaunchingWithOptions)に登録されていることを確認する - URL またはアクション ID がルーティングロジックの期待と一致することを確認する
- iOS では、起動 URL を抑制せずに
urlに依存していないことを確認する——リスナーが起動する前にブラウザがリンクを消費する場合があります
よくある質問
アプリがインストールされていない場合はどうなりますか?
Universal Links(iOS)では、URL は通常のウェブページとして Safari で開きます。App Links(Android)では、URL はデフォルトブラウザで開きます。どちらの場合も、ウェブページを適切なアプリストアにリダイレクトするよう設定できます。カスタム URI スキーム(myapp://)は、アプリがインストールされていない場合にエラーなしで失敗するかエラーを表示します。
ディープリンクには起動 URL と追加データのどちらを使用すべきですか?
追加データ(data)はモバイルディープリンクに推奨されます。クリックリスナーを通じてナビゲーションを完全に制御できます。起動 URL(url)はよりシンプルですが、iOS での制限(ブラウザリダイレクト)があり、カスタムルーティングロジックを許可しません。
ユーザーデータでディープリンクをパーソナライズできますか?
はい。Liquid 構文で動的 URL を使用して、ユーザープロパティ、タグ、またはカスタムデータをディープリンク URL に挿入します。例:https://yourdomain.com/profile/{{subscription.external_id}}
カスタム URI スキームでディープリンクを使用できますか?
はい。カスタムスキーム(例:myapp://screen)を起動 URL または追加データの値として設定します。カスタムスキームはプッシュおよびアプリ内メッセージではうまく機能しますが、メールクライアントでは機能しない場合があります。また、アプリがインストールされていない場合のフォールバックも提供されません。
OneSignal Journeys でディープリンクは機能しますか?
はい。Journey でメッセージステップを設定する際、起動 URL または追加データをディープリンクに設定します。動作はスタンドアローンのプッシュまたはアプリ内メッセージと同じです。URL、リンク、ディープリンク
起動 URL、UTM パラメーター、動的 URL、リンクトラッキング設定。
モバイル SDK リファレンス
クリックリスナーと通知イベント処理の完全な API リファレンス。
アプリ内クリックアクション
アプリ内メッセージのボタンと要素のクリックアクションを設定します。
モバイルプッシュ設定
Android と iOS のプラットフォーム固有のプッシュ通知設定。