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

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

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

Singularのトラッキングリンクは、標準のディープリンク(インストール済みアプリ用) とディファードディープリンク(新規インストール用)の両方をサポートします。 詳細については、 ディープリンクFAQ および Singular Links FAQ を参照してください。


要件

前提条件

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

必要な構成ステップ:

  • Associated Domains: Xcodeで、 Signing & Capabilities > Associated Domains にSingularカスタムサブドメインを追加します
  • URL Types: Info > URL Types で、アプリスキームをURL Typesに追加します
  • Singularプラットフォーム: Singularプラットフォームの Apps ページで、Apple Developerの Team ID Scheme を追加します

注:

  • アプリがすでにiOS Universal Linksを使用するように構成されている場合、 Universal Linkドメイン はすでにAssociated Domainsに存在し、そのまま残すことができます。 このドメインは、以下の高度な設定セクションで説明されているように、 Supported Domains構成オプション に追加する必要があります
  • また、 Singularカスタムリンクドメイン も含める必要があります。 これにより、Singularはマーケティングキャンペーンのアトリビューションを 追跡し、これらのキャンペーンからのディープリンクを処理できます

Singular Linksハンドラーの実装

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

使用可能なパラメーター:

  • Deep Link: リンクをクリックしたユーザー向けのアプリ内宛先URL
  • Deferred Deep Link: リンクをクリックした後にアプリをインストールしたユーザー向けの宛先URL
  • Passthrough: 追加のコンテキストのためにトラッキングリンクを通じて渡されるカスタムデータ
  • URL Parameters: トラッキングリンクURLのすべてのクエリパラメーター

SDK構成

SingularLinkHandlerをConfigに追加

SDK初期化中にSingularLinkHandlerを構成して、受信するディープリンクおよび ディファードディープリンクデータを処理します。

Swift Objective-C
func getConfig() -> SingularConfig? {
    // Create config with API credentials
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }
    
    // Set deep link handler
    config.singularLinksHandler = { params in
        self.handleDeeplink(params: params)
    }
    
    return config
}

func handleDeeplink(params: SingularLinkParams?) {
    // Get Deeplink data from Singular Link
    let deeplink = params?.getDeepLink()
    let passthrough = params?.getPassthrough()
    let isDeferred = params?.isDeferred()
    let urlParams = params?.getUrlParameters()
    
    print("Deeplink: \(deeplink ?? "null")")
    print("Passthrough: \(passthrough ?? "null")")
    print("Is Deferred: \(isDeferred ?? false)")
    
    // Handle deep link routing
    if let url = deeplink {
        handleDeepLinkRouting(url: url, isDeferred: isDeferred ?? false)
    }
}

注: SingularLinkHandlerは、アプリがSingular Linkを通じて開いた場合にのみ トリガーされます。詳細については、 Singular Links FAQ を参照してください。


ハンドラーの動作

SingularLinkHandlerは、アプリが新規インストールされたかすでにインストール されているかによって動作が異なります。

新規インストール (ディファードディープリンク)

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

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

  1. ユーザーがディープリンク値で構成されたSingularトラッキングリンクをクリックします
  2. ユーザーがアプリをインストールして初めて開きます
  3. Singular SDKが最初のセッションをSingularサーバーに送信します
  4. アトリビューションが完了し、トラッキングリンクからディープリンクを識別します
  5. ディープリンク値が isDeferred = true とともにSingularLinkHandlerに返されます

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

  1. テストデバイスからアプリをアンインストールします(現在インストールされている場合)
  2. デバイスでIDFAをリセットします(Settings > Privacy > Apple Advertising > Reset Advertising Identifier)
  3. デバイスからSingularトラッキングリンクをクリックします(ディープリンク値で 構成されていることを確認してください)
  4. アプリをインストールして開きます

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

プロのヒント: 異なるバンドル識別子(例: com.example.prod の代わりに com.example.dev )を使用する開発ビルドでディープリンクをテストする場合は、開発アプリの バンドル識別子専用にトラッキングリンクを構成してください。テストリンクを クリックした後、App Storeから本番アプリをダウンロードするのではなく、 XcodeまたはTestFlight経由で開発ビルドをデバイスに直接インストールしてください。


インストール済み (即時ディープリンク)

アプリがすでにインストールされている場合、Singular Linkをクリックすると、 iOS Universal Links技術を使用してアプリが即座に開きます。

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

  1. ユーザーがSingularトラッキングリンクをクリックします
  2. iOSがSingularトラッキングリンク全体を含むOpen URLを提供します
  3. SDK初期化中に、SingularがNSUserActivityまたはURLを解析します
  4. Singularがディープリンクとパススルー値を抽出します
  5. 値が isDeferred = false とともにSingularLinkHandlerを通じて返されます

Passthroughパラメーター

パススルーパラメーターを使用して、トラッキングリンクのクリックから追加データを取得します。

トラッキングリンクにパススルーパラメーターが含まれている場合、SingularLinkHandlerの passthrough パラメーターに対応するデータが含まれます。これを使用して、キャンペーン メタデータ、ユーザーセグメンテーションデータ、またはアプリで必要な 任意のカスタム情報を取得できます。

Swift Objective-C
func handleDeeplink(params: SingularLinkParams?) {
    // Extract passthrough data
    if let passthroughData = params?.getPassthrough() {
        // Parse JSON passthrough data
        if let data = passthroughData.data(using: .utf8),
           let jsonData = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
            
            let campaignId = jsonData["campaign_id"] as? String
            let userSegment = jsonData["segment"] as? String
            
            print("Campaign ID: \(campaignId ?? "unknown")")
            print("User Segment: \(userSegment ?? "unknown")")
        }
    }
}

URLパラメーター

getUrlParameters() メソッドを使用して、トラッキングリンクURLからすべてのクエリパラメーターを取得します。

SingularLinkHandlerは、トラッキングリンクのすべてのURLパラメーターへの アクセスを提供し、カスタムパラメーターとUTMタグへの完全なアクセスを 可能にします。

Swift Objective-C
func handleDeeplink(params: SingularLinkParams?) {
    // Get all URL parameters
    if let urlParams = params?.getUrlParameters() {
        for (key, value) in urlParams {
            print("Parameter: \(key) = \(value)")
        }
        
        // Access specific parameters
        if let utmSource = urlParams["utm_source"] as? String {
            print("UTM Source: \(utmSource)")
        }
        
        if let promoCode = urlParams["promo"] as? String {
            print("Promo Code: \(promoCode)")
        }
    }
}

トラッキングリンクの例:
https://yourapp.sng.link/A1b2c/abc123?_dl=myapp://product/123&utm_source=facebook&promo=SALE2024

SingularLinkHandlerは、 getUrlParameters() メソッドを通じて、 utm_source および promo を含むすべてのパラメーターへのアクセスを提供します。


高度な構成

アトリビューショントラッキングのために、Google AdsやFacebookなどの サードパーティパートナーのUniversal Linksをサポートします。

Singular iOS SDKバージョン12.0.3以降では、Singular以外のUniversal Linksがデフォルトでサポートされます。

非推奨の機能: supportedDomains プロパティと startSession:...andSupportedDomains: オーバーロードは、現在のSDKで __attribute__((deprecated)) として注釈されています。以下のブロックはレガシーSDKバージョン(12.0.3未満)でのみ 表示されます。新しいコードで supportedDomains を設定し続けるのではなく、SDKをアップグレードしてください。

古いバージョンのSDKでサードパーティのディープリンクをサポートするには:

  • Singular SDKが初期化されるたびに、Configオブジェクトの supportedDomains 構成オプションに、関連付けられたすべてのドメイン( sng.link を除く)を追加します
  • これによりサードパーティのディープリンク動作は可能になりますが、 ディープリンクへのアトリビューションは許可されません。アトリビューションには、 引き続きSingularトラッキングリンクを使用する必要があります
  • supportedDomains 機能は、アプリがUniversal Links用に構成されており、現在自身のドメインで AASAファイルをホストしていることを前提としています
Swift Objective-C
func getConfig() -> SingularConfig? {
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }
    
    // Add supported domains for third-party Universal Links
    config.supportedDomains = [
        "subdomain.mywebsite.com",
        "anothersubdomain.myotherwebsite.com"
    ]
    
    return config
}

メールキャンペーンのアトリビューションのために、メールサービスプロバイダー (ESP)が提供するUniversal Linksを有効にします。

ESPドメインはHTTPS対応である必要があります。Appleは、iOSアプリが リダイレクトなしでHTTPS対応エンドポイントからapple-app-site-association ファイルを取得することを 要求 しています。サイトのDNS構成が必要になる場合があるため、ESPがアプリ用に このファイルをどのようにホストしているかを確認してください。

ESPドメインをサポートするには、Singular SDKが初期化されるたびに、 configオブジェクトの espDomains 構成オプションにカスタムトラッキングドメインを追加します。

Swift Objective-C
func getConfig() -> SingularConfig? {
    guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
        return nil
    }
    
    // Add ESP domains for email campaign tracking
    config.espDomains = ["links.mywebsite.com"]
    
    return config
}