ディープリンクサポートの追加
ディープリンクは、ユーザーをアプリ内の特定のコンテンツに誘導します。アプリがインストールされたデバイスでユーザーがディープリンクをタップすると、アプリは製品ページや特定の体験など、目的のコンテンツに直接開きます。
Singularトラッキングリンクは、標準ディープリンク(インストール済みアプリ用)とディファードディープリンク(新規インストール用)の両方をサポートしています。包括的な情報については、ディープリンクFAQと シンギュラーリンクFAQをご覧ください。
必要条件
前提条件
アプリのディープリンクを有効にするには、Singular Links Prerequisitesを完了してください。
注意事項
- この記事は、Singular Links(Singularのトラッキングリンク技術)を使用していることを前提としています。古いお客様はレガシートラッキングリンクを使用している可能性があります。レガシーリンクでディープリンクをサポートするには、このガイドの最後にあるレガシーリンクのセクションを参照してください。
- アプリのディープリンク先をSingularのAppsページで設定する必要があります。
Singularリンクハンドラを実装する
SingularLinkHandler は、アプリが開いたときに Singular トラッキングリンクからディープリンク、ディファードディープリンク、パススルーパラメータを取得するためのコールバックメカニズムを提供します。
利用可能なパラメータ
- ディープリンク (_dl):リンクをクリックしたユーザーのアプリ内のリンク先URL
- ディファードディープリンク(_ddl):リンクをクリックした後にアプリをインストールしたユーザーのリンク先URL
- パススルー (_p):追加コンテキストのためにトラッキングリンクを通して渡されるカスタムデータ
プラットフォーム設定
Androidセットアップ
Android App Linksテクノロジーによるディープリンクをサポートするために、Androidアプリを設定します。
ステップ1:アクティビティの設定
Project > Assets > Plugins > Android > AndroidManifest.xmlを開き、アクティビティ名を更新します。
以下のように変更します:
<activity android:name="com.unity3d.player.UnityPlayerActivity"
に変更します:
<activity android:name="com.singular.unitybridge.SingularUnityActivity"
カスタムアクティビティの実装:カスタム・アクティビティを実装している場合は、アクティビティのonNewIntent メソッドに以下を追加します:
import com.singular.unitybridge.SingularUnityBridge;
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
// Call this method from your custom activity in onNewIntent
SingularUnityBridge.onNewIntent(intent);
}
ステップ2:インテント・フィルタの追加
Android App Linksをサポートするインテント・フィルターを追加します。android:host の値は、Singular Linksのドメインと一致する必要があります。
<!-- Added Intent Filter for Singular Android Links Deeplinking -->
<!-- Replace example.sng.link with your Singular Links domain -->
<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="example.sng.link" />
<data android:pathPrefix="/A"/>
<data android:pathPrefix="/B"/>
<data android:pathPrefix="/E"/>
<data android:pathPrefix="/F"/>
</intent-filter>
詳細なセットアップ手順については、Singular Links Androidの前提条件を完了してください。
iOSのセットアップ
ユニバーサルリンクとカスタムURLスキームによるディープリンクをサポートするようにiOSアプリを設定します。
ステップ1:ユニバーサルリンクを有効にする
- Singular Linksドメインを設定します:SingularのAttribution > Manage Linksページで、少なくとも1つのサブドメインを設定します。
- 関連ドメインを有効にする: Apple Developer Portalで、Identifiersに行き、アプリを選択し、CapabilitiesメニューでAssociated Domainsを有効にする。
-
Xcode にドメインを追加する:Xcode プロジェクトで、Project settings > Capabilities > Associated Domainsに移動し、Singular Links のドメインを
applinks:yourdomain.sng.linkの形式で追加します。 - チーム ID を設定する:Apple Developer Portal から "App Prefix"(チーム ID)をコピーします。
-
チームIDをSingularに追加します:SingularにチームIDを追加:SingularでApps Configurationに行き、アプリを見つけ、iOS App Advanced Settingsを展開し、チームIDを貼り付けます。これにより、Singularがユニバーサルリンク用の
apple-app-site-associationファイルをホストできるようになります。
ステップ2:URLスキームの設定(フォールバック)
Universal Linksが機能しない場合のフォールバックとして、カスタムURLスキームを追加します。
- SingularのiOSアプリ詳細設定(チームIDの下)で、iOSアプリスキームを入力します。
- XcodeプロジェクトのInfo > URL Typesで、アプリスキームを "URL Type "として登録します。
iOSのURLスキームの詳細については、Appleの開発者向けドキュメントを参照してください。
SDKの設定
アプリにSingularLinkHandlerを追加する
アプリの起動時に、入力されたディープリンクと延期されたディープリンクデータを処理するために、SingularLinkHandlerを設定します。
実装ステップ
- SingularLinkHandlerインターフェースをメインクラスに追加するか、専用のクラスを作成してSingularSDKObjectにアタッチします。
-
スクリプトの先頭にSingularディレクティブを追加する:
using Singular; - クラスにSingularLinkHandlerインターフェイスを実装する。
-
SetSingularLinkHandler()を呼び出してハンドラーを登録する(Awake()関数で推奨)。 -
ディープリンクパラメータを処理するために
OnSingularLinkResolved()をオーバーライドする。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Singular;
public class DeepLinkManager : MonoBehaviour, SingularLinkHandler
{
void Awake()
{
Debug.Log("Registering Singular Link Handler");
// Register this class as the Singular Link handler
// This will fetch the tracking link details and call OnSingularLinkResolved
SingularSDK.SetSingularLinkHandler(this);
}
// Callback method that receives deep link parameters
public void OnSingularLinkResolved(SingularLinkParams linkParams)
{
Debug.Log("Singular Link Resolved");
// Extract parameters from the tracking link
string deeplink = linkParams.Deeplink;
string passthrough = linkParams.Passthrough;
bool isDeferred = linkParams.IsDeferred;
// Log the parameters
Debug.Log($"Deeplink: {deeplink ?? "null"}");
Debug.Log($"Passthrough: {passthrough ?? "null"}");
Debug.Log($"Is Deferred: {isDeferred}");
// Handle deep link routing
if (!string.IsNullOrEmpty(deeplink))
{
HandleDeepLink(deeplink, isDeferred);
}
}
private void HandleDeepLink(string url, bool isDeferred)
{
// Your deep link routing logic here
Debug.Log($"Routing to: {url} (Deferred: {isDeferred})");
// Example: Parse the URL and navigate to the appropriate screen
// if (url.Contains("product"))
// {
// NavigateToProduct(url);
// }
}
}
注意:SingularLinkHandlerは、アプリがSingularリンクを通して開いた時のみトリガーされます。詳細については、シンギュラーリンクFAQを参照してください。
ハンドラの動作
SingularLinkHandler の実行を理解する
SingularLinkHandler は、アプリがインストールされたばかりか、既にインストールされているかによって動作が異なります。
新規インストール (ディープリンクの遅延)
新規インストールでは、アプリの起動時に Open URL は存在しません。トラッキングリンクにディープリンクまたはディファードディープリンクの値が含まれているかどうかを判断するために、Singular はアトリビューションを完了します。
ディファードディープリンクのフロー
- ユーザーがディープリンク値で設定されたSingularトラッキングリンクをクリックする。
- ユーザーがアプリをインストールして初めて開く
- Singular SDKが最初のセッションをSingularサーバーに送信します。
- アトリビューションが完了し、トラッキングリンクからディープリンクが特定される
-
ディープリンクの値が、
isDeferred = trueのdeeplinkパラメータで SingularLinkHandler に返されます。
ディファードディープリンクのテスト
- テストデバイスからアプリをアンインストールする(現在インストールされている場合)
- iOS:IDFA をリセットします。Android:Google Advertising ID (GAID) をリセットします。
- デバイスからSingularトラッキングリンクをクリックする(ディープリンク値が設定されていることを確認する
- アプリをインストールして開く
アトリビューションが正常に完了し、延期されたディープリンク値がSingularLinkHandlerに渡されます。
プロのヒント異なるパッケージ名やバンドルIDを使用した開発ビルドでディープリンクをテストする場合、開発アプリの識別子専用にトラッキングリンクを設定してください。テストリンクをクリックした後、アプリストアから本番アプリをダウンロードするのではなく、Unityまたはプラットフォーム固有のツールを使用して、開発ビルドをデバイスに直接インストールします。
インストール済み(即時ディープリンク)
アプリがすでにインストールされている場合、ユニバーサルリンク(iOS)またはAndroidアプリリンクテクノロジーを使用して、シングラーリンクをクリックするとアプリがすぐに開きます。
即時ディープリンクフロー:
- ユーザーがSingularトラッキングリンクをクリック
- オペレーティングシステムは、Singularトラッキングリンク全体を含むOpen URLを提供します。
- SDKの初期化中にSingularがURLを解析します。
-
Singularは
deeplinkとpassthroughの値を抽出します。 -
値はSingularLinkHandlerを通して
isDeferred = false。
パススルーパラメータ
パススルーパラメータを使って、トラッキングリンクのクリックから追加データを取得します。
トラッキングリンクにpassthrough (_p) パラメータが含まれている場合、SingularLinkHandler のpassthrough パラメータに対応するデータが含まれます。キャンペーンメタデータ、ユーザーセグメンテーションデータ、またはアプリで必要なカスタム情報を取得するために使用します。
すべてのクエリパラメータを転送
_forward_params=2 パラメータを追加することで、トラッキングリンクURLからすべてのクエリパラメータをキャプチャします。
_forward_params=2 がトラッキングリンクに追加されると、すべてのクエリパラメータが SingularLinkHandler のdeeplink パラメータに含まれ、すべてのパラメータを含む完全な URL にアクセスできるようになります。
トラッキングリンクの例
https://yourapp.sng.link/A1b2c/abc123?_dl=myapp://product/123&_forward_params=2&utm_source=facebook&promo=SALE2024
SingularLinkHandler は以下を受け取ります:
deeplink = "myapp://product/123?utm_source=facebook&promo=SALE2024"