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

ドキュメント

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

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

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


必要条件

前提条件

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

必要な設定ステップ

  • 関連ドメイン:Xcode で、Singular Custom Subdomain をSigning & Capabilities > Associated Domainsに追加します。
  • URL タイプ: Info (情報)] > [URL Types (URLタイプ)]で、アプリのスキームをURLタイプに追加します。
  • Singular Platform:SingularプラットフォームのAppsページにApple DeveloperTeam IDと スキームを追加します。

注意事項

  • アプリがすでにiOSユニバーサルリンクを使用するように設定されている場合、ユニバーサルリンクのドメインはすでにAssociated Domains(関連付けられたドメイン)に存在しており、そのまま使用できます。このドメインは、以下の詳細セクションで説明するように、Supported Domains設定オプションに追加する必要があります。
  • Singularがマーケティングキャンペーンからのアトリビューションをトラッキングし、キャンペーンからのディープリンクを処理できるように、Singularカスタムリンクドメインも含める必要があります。

Singularリンクハンドラの実装

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

利用可能なパラメータ

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

SDKコンフィギュレーション

コンフィグにSingularLinkHandlerを追加

SDK初期化中にSingularLinkHandlerを設定し、入力されるディープリンクと遅延ディープリンクデータを処理します。

SwiftObjective-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をリセットします([設定] > [プライバシー] > [Apple Advertising] > [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. 値はSingularLinkHandlerを通してisDeferred = false

パススルーパラメータ

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

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

SwiftObjective-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 タグへの完全なアクセスを提供します。

SwiftObjective-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_sourcepromo を含む全てのパラメータにアクセスします。


高度な設定

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

Singular iOS SDKバージョン12.0.3以上では、Singular以外のユニバーサルリンクがデフォルトでサポートされています。

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

  • Singular SDKが初期化されるたびに、すべての関連ドメイン(sng.linkを除く)をConfigオブジェクトのsupportedDomains設定オプションに追加してください。
  • これにより、サードパーティのディープリンクの動作が可能になりますが、ディープリンクへのアトリビューションはできません。アトリビューションのためには、Singularトラッキングリンクを使用する必要があります。
  • supportedDomains機能は、ユニバーサルリンク用にアプリを設定し、現在ドメイン上で独自のAASAファイルをホストしていることを前提としています。
SwiftObjective-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
}

Eメールサービスプロバイダー(ESP)が提供するユニバーサルリンクを、メールキャンペーンのアトリビューションに使用できるようにします。

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

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

SwiftObjective-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
}