Unity SDK - ディープリンクのサポート

ドキュメント

ディープリンクサポートの追加

ディープリンクは、ユーザーをアプリ内の特定のコンテンツに誘導します。アプリがインストールされたデバイスでユーザーがディープリンクをタップすると、アプリは製品ページや特定の体験など、目的のコンテンツに直接開きます。

Singularトラッキングリンクは、標準ディープリンク(インストール済みアプリ用)とディファードディープリンク(新規インストール用)の両方をサポートしています。包括的な情報については、ディープリンクFAQと シンギュラーリンクFAQをご覧ください。


アプリのディープリンクを有効にするには、Singular Links Prerequisitesを完了してください。

注意事項

  • この記事は、Singular Links(Singularのトラッキングリンク技術)を使用していることを前提としています。古いお客様はレガシートラッキングリンクを使用している可能性があります。レガシーリンクでディープリンクをサポートするには、このガイドの最後にあるレガシーリンクのセクションを参照してください。
  • アプリのディープリンク先をSingularのAppsページで設定する必要があります。

SingularLinkHandler は、アプリが開いたときに Singular トラッキングリンクからディープリンク、ディファードディープリンク、パススルーパラメータを取得するためのコールバックメカニズムを提供します。

利用可能なパラメータ

  • ディープリンク (_dl):リンクをクリックしたユーザーのアプリ内のリンク先URL
  • ディファードディープリンク(_ddl):リンクをクリックした後にアプリをインストールしたユーザーのリンク先URL
  • パススルー (_p):追加コンテキストのためにトラッキングリンクを通して渡されるカスタムデータ

Android App Linksテクノロジーによるディープリンクをサポートするために、Androidアプリを設定します。

Project > Assets > Plugins > Android > AndroidManifest.xmlを開き、アクティビティ名を更新します。

以下のように変更します:

XML
<activity android:name="com.unity3d.player.UnityPlayerActivity"

に変更します:

XML
<activity android:name="com.singular.unitybridge.SingularUnityActivity"

カスタムアクティビティの実装:カスタム・アクティビティを実装している場合は、アクティビティのonNewIntent メソッドに以下を追加します:

Java
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);
}

Android App Linksをサポートするインテント・フィルターを追加します。android:host の値は、Singular Linksのドメインと一致する必要があります。

AndroidManifest.xml
<!-- 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の前提条件を完了してください。


ユニバーサルリンクとカスタムURLスキームによるディープリンクをサポートするようにiOSアプリを設定します。

  1. Singular Linksドメインを設定します:SingularのAttribution > Manage Linksページで、少なくとも1つのサブドメインを設定します。
  2. 関連ドメインを有効にする: Apple Developer PortalでIdentifiersに行き、アプリを選択し、CapabilitiesメニューでAssociated Domainsを有効にする。
  3. Xcode にドメインを追加する:Xcode プロジェクトで、Project settings > Capabilities > Associated Domainsに移動し、Singular Links のドメインをapplinks:yourdomain.sng.linkの形式で追加します。
  4. チーム ID を設定する:Apple Developer Portal から "App Prefix"(チーム ID)をコピーします
  5. チームIDをSingularに追加します:SingularにチームIDを追加:SingularでApps Configurationに行き、アプリを見つけ、iOS App Advanced Settingsを展開し、チームIDを貼り付けます。これにより、Singularがユニバーサルリンク用のapple-app-site-association ファイルをホストできるようになります。

Universal Linksが機能しない場合のフォールバックとして、カスタムURLスキームを追加します。

  1. SingularのiOSアプリ詳細設定(チームIDの下)で、iOSアプリスキームを入力します。
  2. XcodeプロジェクトのInfo > URL Typesで、アプリスキームを "URL Type "として登録します

iOSのURLスキームの詳細については、Appleの開発者向けドキュメントを参照してください。


アプリの起動時に、入力されたディープリンクと延期されたディープリンクデータを処理するために、SingularLinkHandlerを設定します。

  1. SingularLinkHandlerインターフェースをメインクラスに追加するか、専用のクラスを作成してSingularSDKObjectにアタッチします。
  2. スクリプトの先頭にSingularディレクティブを追加する:using Singular;
  3. クラスにSingularLinkHandlerインターフェイスを実装する。
  4. SetSingularLinkHandler() を呼び出してハンドラーを登録する(Awake() 関数で推奨)。
  5. ディープリンクパラメータを処理するためにOnSingularLinkResolved() をオーバーライドする。
C#
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 は、アプリがインストールされたばかりか、既にインストールされているかによって動作が異なります。

新規インストールでは、アプリの起動時に Open URL は存在しません。トラッキングリンクにディープリンクまたはディファードディープリンクの値が含まれているかどうかを判断するために、Singular はアトリビューションを完了します。

ディファードディープリンクのフロー

  1. ユーザーがディープリンク値で設定されたSingularトラッキングリンクをクリックする。
  2. ユーザーがアプリをインストールして初めて開く
  3. Singular SDKが最初のセッションをSingularサーバーに送信します。
  4. アトリビューションが完了し、トラッキングリンクからディープリンクが特定される
  5. ディープリンクの値が、isDeferred = truedeeplink パラメータで SingularLinkHandler に返されます。

ディファードディープリンクのテスト

  1. テストデバイスからアプリをアンインストールする(現在インストールされている場合)
  2. iOS:IDFA をリセットします。Android:Google Advertising ID (GAID) をリセットします。
  3. デバイスからSingularトラッキングリンクをクリックする(ディープリンク値が設定されていることを確認する
  4. アプリをインストールして開く

アトリビューションが正常に完了し、延期されたディープリンク値がSingularLinkHandlerに渡されます。

プロのヒント異なるパッケージ名やバンドルIDを使用した開発ビルドでディープリンクをテストする場合、開発アプリの識別子専用にトラッキングリンクを設定してください。テストリンクをクリックした後、アプリストアから本番アプリをダウンロードするのではなく、Unityまたはプラットフォーム固有のツールを使用して、開発ビルドをデバイスに直接インストールします。


アプリがすでにインストールされている場合、ユニバーサルリンク(iOS)またはAndroidアプリリンクテクノロジーを使用して、シングラーリンクをクリックするとアプリがすぐに開きます。

即時ディープリンクフロー

  1. ユーザーがSingularトラッキングリンクをクリック
  2. オペレーティングシステムは、Singularトラッキングリンク全体を含むOpen URLを提供します。
  3. SDKの初期化中にSingularがURLを解析します。
  4. Singularはdeeplinkpassthroughの値を抽出します。
  5. 値は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"