概要:ディープリンクとディファードディープリンクの従来の方法を紹介します。注:従来の方法ではなくUDLメソッドを使用することを推奨します。

ディープリンクにより、マーケティング担当者は既存アプリユーザーを特定のアプリ体験(例えば、アプリ内の特定のページなど)へ誘導するためのリンクを作成できます。ディファードディープリンクは、アプリを持っていない新規ユーザーに、まずアプリストアでのアプリダウンロードを促し、その後特定のアプリ体験へ誘導します。

ディープリンク

Overview

ディープリンクは、モバイルユーザーを特定のアクティビティまたはアプリ内コンテンツに誘導します。

このようなアプリ内での特定のアクティビティへのルーティングは、OSがアプリを開いたときにアプリに渡される deep_link_value と、onAppOpenAttribution メソッドが呼び出されることで可能になります。AppsFlyerのOneLinkは、ユーザーのクリックに伴い正しい値が渡されるため、ユーザーのアプリ体験をパーソナライズすることができます。

ディープリンクの場合は、deep_link_value のみが必要です。ただし、その他のパラメーターと値(カスタム計測パラメーターなど)もリンクに追加でき、SDKがディープリンクデータとして返すことも可能です。

マーケティング担当者とディベロッパーは、希望のアプリ動作と deep_link_value について共同で決定する必要があります。マーケティング担当者はこのパラメーターをディープリンクを作成するために使用し、ディベロッパーは、受け取った値をもとにアプリの動作をカスタマイズします。

AppsFlyer SDKは、ユーザーがクリックしたリンクからパラメータを返します。アプリ内のルーティングやリンク内のデータのパーソナライズのために、アプリ内でパラメーターが正しく処理されるようにするのはディベロッパーの責任です。

ディープリンクは次の流れで機能します

  1. ユーザーがOneLinkのショートURLをクリックします。
  2. iOSがアプリのAssociated Domains Entitlementsを読み込みます。
  3. iOSがアプリを起動します。
  4. AppsFlyer SDKがアプリ内で起動します。
  5. AppsFlyer SDKはOneLinkデータを取得します。
  • ショートURLでは、AppsFlyerのサーバーにあるショートURLリゾルバAPIからデータを取得します。
  • ロングURLでは、データを直接取得しています。
  1. AppsFlyer SDKが、取得したパラメーターとキャッシュした計測パラメーター(例:install_time)と一緒に onAppOpenAttribution() をトリガーします。
  2. 非同期的に、onConversionDataSuccess() が呼び出され、キャッシュされた計測データを完全に保持します。(is_first_launchtrueであるかどうかを確認することで、この関数を終了することができます。)
  3. onAppOpenAttribution() は、attributionData マップを使用して、アプリ内のその他のアクティビティを発信し、関連するデータを渡します。
    • これにより、OneLinkの最大の目的である、ユーザーのためのパーソナライズされた体験が生まれます。

Procedures

onAppOpenAttribution メソッドを実装し、パラメーターの動作を設定するには、次の手順に関するアクションチェックリストを完了する必要があります。

手順のチェックリスト

  1. マーケターと一緒にアプリの動作と deep_link_value を決定(およびその他のパラメーター名と値)
  1. マーケターと一緒にメソッド入力(例:deep_link_value)の計画(およびその他のパラメーター名と値)
  1. onAppOpenAttribution() ロジックの実装
  1. onAppOpenAttributionFailure() ロジックの実装

アプリの動作を決定

リンクがクリックされた際のアプリ動作を決定する方法

マーケティング担当者から、アプリがクリックされた際に期待する動作を聞き出してください。

メソッドインプットの計画

OneLinkがクリックされ、ユーザーのデバイスにアプリがインストールされている場合、AppsFlyer SDKにより onAppOpenAttribution メソッドが呼び出されます。これはリターゲティングエンゲージメントと呼ばれます。

onAppOpenAttribution メソッドは、次のような入力として変数を取得します。

attributionData: [AnyHashable: Any]

インプットデータの構成はこちらで説明しています。

リンクがクリックされた際に期待するアプリの動作に基づいて、マーケティング担当者とディベロッパーは、deep_link_value(およびその他のパラメーターと値)について、共同で計画する必要があります。

期待するリンクの動作に基づいて、deep_link_value、およびその他のパラメーター名と値を計画する方法

  1. 希望するアプリの動作を実装するために必要なパラメーターと値について、マーケティング担当者に伝えてください。
  2. deep_link_value とその他のパラメーターと値の命名規則を決定してください。
    :カスタムパラメーターは、AppsFlyerのローデータには表示されません。

📘

ヒント

マーケティング担当者とデベロッパーは、アプリの更新作業を最小限に抑えるために、deep_link_value(およびその他パラメーター/値)のための長期的なシステムを一緒に決定する必要があります。

deep_link_value は、SKU、投稿ID、パスなどに基づいて指定できます。選択したパラメータに動的な値を入力できるシステムの構築ついて、開発担当者と合意することを強くお勧めします。そうすることで、開発者に毎回アプリのコード変更を依頼する必要なく、アプリ内の異なるコンテンツにユーザーを遷移させる様々なディープリンクをマーケティング担当者が生成できます。

次のURLの例を参照してください。フルーツタイプのdeep_link_valueは、マーケティング担当者とディベロッパーが共同で選択したものです。そして、デベロッパーが値を動的なものに設定したので、マーケティング担当者は開発チームにこれ以上作業を依頼することなく任意のフルーツを入力することができます。

https://onelink-sample-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month**&deep_link_value=apples**...
https://onelink-sample-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month**&deep_link_value=bananas**...
https://onelink-sample-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month**&deep_link_value=peaches**...

onAppOpenAttribution() ロジックの実装

ディープリンクでは、AppDelegateで onAppOpenAttribution メソッドを開きます。メソッド入力にある deep_link_value とその他のパラメーターは、アプリ起動時の特定のユーザー体験の実装に使用されます。

ロジックを実装する方法

  1. 選択したパラメーターと値に基づいてロジックを実装してください。次のコードの例を参照してください。
  2. アプリケーションの関数を実装して、以下を許可してください:
    • ユニバーサルリンクが以下に対応: continue
    • URIが以下に対応: handleOpen
  3. 完了後、アプリが予定通り動作するかの確認をマーケティング担当者に送ります。

📘

サンプルコード

func onAppOpenAttribution(_ attributionData: [AnyHashable: Any]) {
    //Handle Deep Link Data
    print("onAppOpenAttribution data:")
    for (key, value) in attributionData {
        print(key, ":",value)
    }
    walkToSceneWithParams(params: attributionData)
}

// User logic
fileprivate func walkToSceneWithParams(params: [AnyHashable:Any]) {
    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    UIApplication.shared.windows.first?.rootViewController?.dismiss(animated: true, completion: nil)

    var fruitNameStr = ""

    if let thisFruitName = params["deep_link_value"] as? String {
        fruitNameStr = thisFruitName
    } else if let linkParam = params["link"] as? String {
        guard let url = URLComponents(string: linkParam) else {
            print("Could not extract query params from link")
            return
        }
        if let thisFruitName = url.queryItems?.first(where: { $0.name == "deep_link_value" })?.value {
            fruitNameStr = thisFruitName
        }
    }

    let destVC = fruitNameStr + "_vc"
    if let newVC = storyBoard.instantiateVC(withIdentifier: destVC) {

        print("AppsFlyer routing to section: \(destVC)")
        newVC.attributionData = params

        UIApplication.shared.windows.first?.rootViewController?.present(newVC, animated: true, completion: nil)
    } else {
        print("AppsFlyer: could not find section: \(destVC)")
    }
}

⇲ Github リンク:Swift

onAppOpenAttributionFailure() ロジックの実装

onAttributionFailure メソッドは、onAppOpenAttribution が失敗するたびに呼び出されます。この関数は、エラーを報告し、ユーザーに期待される体験を提供する必要があります。

onAppOpenAttributionFailure メソッドの実装方法

次のコードを入力してください:

func onAppOpenAttributionFailure(_ error: Error) {
    print("\(error)")
}

⇲ Github リンク:Swift

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

❗️

重要!

プライバシー保護のために利用できない計測データを必要とする従来の方法である onConversionDataSuccess を使用するディファードディープリンクは、 iOS 14.5以降機能しない可能性があります。
Unified Deep Linking (UDL) の使用を推奨します。UDLはiOS 14.5以降のプライバシー基準を確認し、ディープリンクとディファードディープリンクに関連するパラメーターのみを戻します:deep_link_valuedeep_link_sub1。計測パラメーター(media_sourcecampaignaf_sub1-5 など)は null を返すため、ディープリンクの目的では使用できません。

詳しく知る

Overview

ディファードディープリンクは、新規ユーザーがアプリをインストールするために正しいアプリストアへ誘導し、その後、初回起動後に特定のアプリ体験(例:アプリ内の特定のページ)へ誘導します。

ユーザーがアプリを初めて起動したとき、onConversionDataSuccessコールバック関数は、新規ユーザーのコンバージョンデータとOneLinkデータの両方を受取ります。OneLinkデータは、OSがアプリを起動したときにアプリに渡されるdeep_link_valueによりアプリ内のルーティングを可能します。

ディープリンクの場合は、deep_link_value のみが必要です。ただし、その他のパラメーターと値(カスタム計測パラメーターなど)もリンクに追加でき、SDKがディープリンクデータとして返すことも可能です。AppsFlyer OneLinkは、ユーザーのクリックに伴い正しいパラメーターが渡されるため、ユーザーのアプリ体験をパーソナライズすることができます。

マーケティング担当者とディベロッパーは、希望のアプリ動作と deep_link_value について共同で決定する必要があります。マーケティング担当者はこのパラメーターをディープリンクを作成するために使用し、ディベロッパーは、受け取った値をもとにアプリの動作をカスタマイズします。

アプリ内でのルーティングやリンク先でのデータのパーソナライズなど、アプリ内でパラメータが正しく処理されるように実装するのはディベロッパーの責任です。

ディープリンクは次の流れで機能します

  1. ユーザーが、アプリがまだインストールされていないデバイス上でOneLinkをクリックします。
  2. AppsFlyerはクリックを登録し、ユーザーを正しいアプリストアまたはランディングページに誘導します。
  3. ユーザーがアプリをインストールし起動します。
  4. iOSは、AppsFlyerが次のロケーションにホストする Apple App Site Associationファイルユニバーサルリンクの所有権を確認します:https://myapp.onelink.me/.well-known/apple-app-site-association
  5. AppsFlyer SDKが初期化され、AppsFlyerサーバーにインストールが帰属されます。
  6. SDKは onConversionDataSuccess メソッドをトリガーします。関数は、deep_link_value とOneLinkデータで定義された計測データ/パラメーターの両方を含むインプットを受け取ります。
  7. パラメーターis_first_launch は、ディファードディープリンクのフローを示す値 true を持っています。ディベロッパーは、onConversionDataSuccess 関数で受け取ったこのデータを使用して、パーソナライズされたユーザー体験を初回起動時に提供します。

Procedures

onConversionDataSuccessメソッドを実装し、パラメーターの動作を設定するには、次の手順のチェックリストを完了する必要があります。

手順のチェックリスト

  1. マーケターと一緒に初回起動時のアプリの動作と、deep_link_valueを決定(およびその他のパラメーターと値)
  1. マーケターと一緒にメソッド入力(例:deep_link_value)の計画(およびその他のパラメーター名と値)
  1. onConversionDataSuccess() ロジックの実装
  1. onConversionDataFail() ロジックの実装

初回起動時のアプリ動作を決定する

初回起動時のアプリ動作を決定する

マーケティング担当者から、リンクがクリックされたときと、アプリが初回起動されたときに期待される動作を入手してください。

メソッドインプットの計画

ディファードディープリンクでは、onConversionDataSuccess メソッドのインプットを計画する必要があり、アプリの初回起動時に前項で決定した(ディープリンク向け)インプットを関連付ける必要があります。

onConversionDataSuccess メソッドは、deep_link_value とその他の変数を次のようなインプットで取得します。

data: [AnyHashable: Any]

マップには2種類のデータがあります:

  • 計測データ
  • マーケティング担当者がリンクで定義したデータ(deep_link_valueとその他のパラメータと値)
    その他のパラメータは以下のいずれかとなります。
    • AppsFlyerの公式パラメーター
    • マーケティング担当者とディベロッパーが選択したカスタムパラメーターと値
    • インプットデータの構成はこちらで説明しています。

リンクがクリックされた際に期待されるアプリの動作に基づいて、マーケティング担当者とディベロッパーは、deep_link_value(およびその他のパラメーターと値)について、共同で計画する必要があります。

期待するリンクの動作に基づいて、deep_link_value、およびその他のパラメーター名と値を計画する方法

  1. 希望するアプリの動作を実装するために必要なパラメーターと値について、マーケティング担当者に伝えてください。
  2. deep_link_value とその他のパラメーターと値の命名規則を決定してください。
    • カスタムパラメーターは、AppsFlyerのローデータには表示されません。
    • コンバージョンデータは、小文字の「n」を使ったカスタムパラメーター名「name」を返しません。

onConversionDataSuccess() ロジックの実装

アプリが初回起動されたとき、onConversionDataSuccess メソッドはメインアクティビティ内でトリガーされます。メソッドメソッド内の deep_link_value とその他のパラメーターは、アプリの初回起動時の特定のユーザー体験を実装するために使用されます。

ロジックを実装する方法

  1. 選択したパラメーターと値に基づいてロジックを実装してください。次のコードの例を参照してください。
  2. 完了後、アプリが予定通り動作するかの確認をマーケティング担当者に送ります。

📘

サンプルコード

// Handle Organic/Non-organic installation
func onConversionDataSuccess(_ data: [AnyHashable: Any]) {

    print("onConversionDataSuccess data:")
    for (key, value) in data {
        print(key, ":", value)
    }

    if let status = data["af_status"] as? String {
        if (status == "Non-organic") {
            if let sourceID = data["media_source"],
                let campaign = data["campaign"] {
                print("This is a Non-Organic install. Media source: \(sourceID)  Campaign: \(campaign)")
            }
        } else {
            print("This is an organic install.")
        }
        if let is_first_launch = data["is_first_launch"] as? Bool,
            is_first_launch {
            print("First Launch")
            if let fruit_name = data["deep_link_value"]
            {
                // The key 'deep_link_value' exists only in OneLink originated installs
                print("deferred deep-linking to \(fruit_name)")
                walkToSceneWithParams(params: data)
            }
            else {
                print("Install from a non-owned media")
            }
        } else {
            print("Not First Launch")
        }
    }
}

⇲ Github リンク:Swift

onConversionDataFailure() ロジックの実装

onConversionDataFailure メソッドは、onConversionDataSuccess が失敗するたびに呼び出されます。この関数は、エラーを報告し、ユーザーに期待される体験を提供する必要があります。

onConversionDataFailure メソッドを実装する方法

次のコードを入力してください:

func onConversionDataFail(_ error: Error) {
    print("\(error)")
}

⇲ Github リンク:Swift

フルコードの例

// For Swift version < 4.2 replace function signature with the commented out code
// func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { // this line for Swift < 4.2
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  AppsFlyerLib.shared().continue(userActivity, restorationHandler: nil)
  return true
}

// Open URI-scheme for iOS 9 and above
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  AppsFlyerLib.shared().handleOpen(url, options: options)
  return true
}

extension AppDelegate: AppsFlyerLibDelegate {
     
    // Handle Organic/Non-organic installation
    func onConversionDataSuccess(_ data: [AnyHashable: Any]) {
        
        print("onConversionDataSuccess data:")
        for (key, value) in data {
            print(key, ":", value)
        }
        
        if let status = data["af_status"] as? String {
            if (status == "Non-organic") {
                if let sourceID = data["media_source"],
                    let campaign = data["campaign"] {
                    print("This is a Non-Organic install. Media source: \(sourceID)  Campaign: \(campaign)")
                }
            } else {
                print("This is an organic install.")
            }
            if let is_first_launch = data["is_first_launch"] as? Bool,
                is_first_launch {
                print("First Launch")
            } else {
                print("Not First Launch")
            }
        }
    }
    
    func onConversionDataFail(_ error: Error) {
        print("\(error)")
    }
   
    // Handle Deeplink
    func onAppOpenAttribution(_ attributionData: [AnyHashable: Any]) {
        //Handle Deep Link Data
        print("onAppOpenAttribution data:")
        for (key, value) in attributionData {
            print(key, ":",value)
        }
        walkToSceneWithParams(params: attributionData)
    }
    
    func onAppOpenAttributionFailure(_ error: Error) {
        print("\(error)")
    }
}

一般的なデータ構造

このセクションでは、OneLinkがインプットとして渡すことができるデータ構造と可能なパラメーターに関する情報が含まれています。

Input parameters

次の表には、OneLinkがインプットとして渡すことができるパラメーターのリストが含まれています。

インプットマップには2種類のデータがあります:

  • 計測データ
  • リンク内でマーケティング担当者が定義したデータ(パラメーターと値)
    パラメーターは次のいずれかです:
    • AppsFlyerの公式パラメーター
    • マーケティング担当者とディベロッパーが選択したカスタムパラメーターと値

📘

注意

  • 次の表はAppsFlyer SDK 5.4.1以上に関連するものです。以前のSDKバージョンでは、パラメータが存在しない、または名前が変更されている場合があります。
  • 非推奨とされていないパラメーターは、すべての OneLink タイプに関連しています。
    • ショートURL
    • ロングURL
    • 全OSのリンク:
      • Androidアプリリンク
      • ユニバーサルリンク
      • URLスキーム(iOSとAndroidの両方)

パラメーター名

タイプ

詳細

備考

af_dp

文字列

URIスキームURL

アプリリンクのフォールバック。
例:afbasicapp://mainactivity

link

文字列

ディープリンクの実行に使用された完全なリンク。

例: https://onelink-basic-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month

deep_link_value

文字列

ユーザーが誘導される特定のアプリ内コンテンツの値名です。

pid (media source)

文字列

OneLinkのメディアソース、例:email、SMS、social media

install_time

文字列

アプリが初回起動された時刻。

非推奨
例:2020-05-06 13:51:19

scheme

文字列

URLの最初の単語で、インターネット上のリソースにアクセスする際に使用するプロトコルを識別します。例: mygreatapp://mainactivity または https://killerapp.onelink.me/coolactivity/H7JK

非推奨
httphttps は、URIスキームに使用しないでください。

host

文字列

リソースを保有するホストを識別します。例:mygreatapp://mainactivity または
https://**killerapp.onelink.me**/coolactivity/H7JK

非推奨

path

文字列

Webクライアントがアクセスしたいホスト内の特定のリソースです。例:https://killerapp.onelink.me/coolactivity/**H7JK**

非推奨
URIスキームには関係ありません

shortlink

文字列

元のリンクよりも大幅に少ない文字数で短縮されたURLです。例:https://killerapp.onelink.me/coolactivity/H7JK/**checkitout**

af_web_id

文字列

ピープルベースドアトリビューションのためのトークンです。

af_status

文字列

非推奨

URIシナリオでのみ渡されます

af_deeplink

Boolean

非推奨

URIシナリオでのみ渡されます

c (campaign)

文字列

マーケティングキャンペーンの名称

AppsFlyer管理画面でマーケティング担当者が設定した値。

is_retargeting

Boolean

リターゲティングキャンペーンの一環としてリンクを識別します。

値はマーケティング担当者が設定します。

af_ios_url

文字列

iOSデバイスにてディープリンクが失敗した際のフォールバックURL。

関連がない場合でも、Androidデバイスにも渡されます。

af_android_url

文字列

Androidデバイスでディープリンクが失敗した場合のフォールバックURL。

af_sub[1-5]

文字列

広告主側で自由に定義可能なカスタムパラメータです。

AppsFlyer管理画面でマーケティング担当者が設定した値。
アプリ内ルーティングに関連するパラメータを渡す場合に推奨されます。

af_adset

文字列

広告セットはキャンペーンと広告の間に位置する階層です。

AppsFlyer管理画面でマーケティング担当者が設定した値

af_channel

文字列

広告が配信されるメディアソースのチャンネル。例:UAC_Search、UAC_Display、Instagram、Facebook Audience Network など。

AppsFlyer管理画面でマーケティング担当者が設定した値

ad_adname

文字列

マーケティング担当者/パブリッシャーから提供された広告名。

AppsFlyer管理画面でマーケティング担当者が設定した値

af_cost_currency

文字列

ISO-4217に準拠した3 文字の通貨コード。例:USD、ZAR、EUR
[デフォルト]:USD

AppsFlyer管理画面でマーケティング担当者が設定した値

af_cost_value

文字列

通貨設定 (af_cost_currency) に則したコストの値です。

AppsFlyer管理画面でマーケティング担当者が設定した値

af_click_lookback

文字列

設定可能なルックバッククリック計測期間の日数。

AppsFlyer管理画面でマーケティング担当者が設定した値

af_force_deeplink

Boolean

af_dpの値で指定されたアクティビティに強制的にディープリンクさせます。

iOSのみに関連します。
関連性がなくても、値はAndroidにも渡されます。

iOS sample payloads

以下、ユニバーサルリンク、URIスキーム、ディファードディープリンクのサンプルペイロードを参照してください。サンプルにはフルペイロードが含まれており、Onelinkのカスタムリンク設定ページのすべてのパラメーターにデータが含まれている場合に関連します。

:ペイロードはマップとして返されます。ただし、わかりやすくするため、以下のサンプルペイロードはJSON形式で表示しています。

ユニバーサルリンク

インプット先: onAppOpenAttribution(_ attributionData: [AnyHashable: Any])

{
   "af_ad": "my_adname",
   "af_adset": "my_adset",
   "af_android_url": "https://isitchristmas.com/",
   "af_channel": "my_channel",
   "af_click_lookback": "20d",
   "af_cost_currency": "USD",
   "af_cost_value": 6,
   "af_dp": "afbasicapp://mainactivity",
   "af_ios_url": "https://isitchristmas.com/",
   "af_sub1": "my_sub1",
   "af_sub2": "my_sub2",
   "c": "fruit_of_the_month",
   "campaign": "fruit_of_the_month",
   "fruit_amount": 26,
   "fruit_name": "apples",
   "is_retargeting": true,
   "link": "https://onelink-basic-app.onelink.me/H5hv/6d66214a",
   "media_source": "Email",
   "pid": "Email"
}
{
   "path": "/H5hv",
   "af_android_url": "https://my_android_lp.com",
   "af_channel": "my_channel",
   "host": "onelink-basic-app.onelink.me",
   "af_adset": "my_adset",
   "pid": "Email",
   "scheme": "https",
   "af_dp": "afbasicapp://mainactivity",
   "af_sub1": "my_sub1",
   "fruit_name": "apples",
   "af_ad": "my_adname",
   "af_click_lookback": "20d",
   "fruit_amount": 16,
   "af_sub2": "my_sub2",
   "link": "https://onelink-basic-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month&af_channel=my_channel&af_adset=my_adset&af_ad=my_adname&af_sub1=my_sub1&af_sub2=my_sub2&fruit_name=apples&fruit_amount=16&af_cost_currency=USD&af_cost_value=6&af_click_lookback=20d&af_dp=afbasicapp%3A%2F%2Fmainactivity&af_ios_url=https%3A%2F%2Fmy_ios_lp.com&af_android_url=https%3A%2F%2Fmy_android_lp.com",
   "af_cost_currency": "USD",
   "c": "fruit_of_the_month",
   "af_ios_url": "https://my_ios_lp.com",
   "af_cost_value": 6
}

URIスキーム

インプット先: onAppOpenAttribution(_ attributionData: [AnyHashable: Any])

{
    "af_click_lookback ": "25d",
    "af_sub1 ": "my_sub1",
    "shortlink ": "9270d092",
    "af_deeplink ": true,
    "media_source ": "Email",
    "campaign ": "my_campaign",
    "af_cost_currency ": "NZD",
    "host ": "mainactivity",
    "af_ios_url ": "https://my_ios_lp.com",
    "scheme ": "afbasicapp",
    "path ": "",
    "af_cost_value ": 5,
    "af_adset ": "my_adset",
    "af_ad ": "my_adname",
    "af_android_url ": "https://my_android_lp.com",
    "af_sub2 ": "my_sub2",
    "af_force_deeplink ": true,
    "fruit_amount ": 15,
    "af_dp ": "afbasicapp://mainactivity",
    "link ": "afbasicapp://mainactivity?af_ad=my_adname&af_adset=my_adset&af_android_url=https%3A%2F%2Fmy_android_lp.com&af_channel=my_channel&af_click_lookback=25d&af_cost_currency=NZD&af_cost_value=5&af_deeplink=true&af_dp=afbasicapp%3A%2F%2Fmainactivity&af_force_deeplink=true&af_ios_url=https%3A%2F%2Fmy_ios_lp.com&af_sub1=my_sub1&af_sub2=my_sub2&af_web_id=56441f02-377b-47c6-9648-7a7f88268130-o&campaign=my_campaign&fruit_amount=15&fruit_name=apples&is_retargeting=true&media_source=Email&shortlink=9270d092",
    "af_channel ": "my_channel",
    "is_retargeting ": true,
    "af_web_id ": "56441f02-377b-47c6-9648-7a7f88268130-o",
    "fruit_name ": "apples"
}
{
    "af_ad ": "my_adname",
    "fruit_name ": "apples",
    "host ": "mainactivity",
    "af_channel ": "my_channel",
    "link ": "afbasicapp://mainactivity?af_ad=my_adname&af_adset=my_adset&af_android_url=https%3A%2F%2Fmy_android_lp.com&af_channel=my_channel&af_click_lookback=25d&af_cost_currency=NZD&af_cost_value=5&af_deeplink=true&af_dp=afbasicapp%3A%2F%2Fmainactivity&af_force_deeplink=true&af_ios_url=https%3A%2F%2Fmy_ios_lp.com&af_sub1=my_sub1&af_sub2=my_sub2&af_web_id=56441f02-377b-47c6-9648-7a7f88268130-o&campaign=my_campaign&fruit_amount=15&fruit_name=apples&is_retargeting=true&media_source=Email",
    "af_deeplink ": true,
    "campaign ": "my_campaign",
    "af_sub1 ": "my_sub1",
    "af_click_lookback ": "25d",
    "af_web_id ": "56441f02-377b-47c6-9648-7a7f88268130-o",
    "path ": "",
    "af_sub2 ": "my_sub2",
    "af_ios_url ": "https://my_ios_lp.com",
    "af_cost_value ": 5,
    "fruit_amount ": 15,
    "is_retargeting ": true,
    "scheme ": "afbasicapp",
    "af_force_deeplink ": true,
    "af_adset ": "my_adset",
    "media_source ": "Email",
    "af_cost_currency ": "NZD",
    "af_dp ": "afbasicapp://mainactivity",
    "af_android_url ": "https://my_android_lp.com"
}

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

インプット先: onConversionDataSuccess(_ data: [AnyHashable: Any])

{
    "adgroup": null,
    "adgroup_id": null,
    "adset": null,
    "adset_id": null,
    "af_ad": "my_adname",
    "af_adset": "my_adset",
    "af_android_url": "https://isitchristmas.com/",
    "af_channel": "my_channel",
    "af_click_lookback": "20d",
    "af_cost_currency": "USD",
    "af_cost_value": 6,
    "af_cpi": null,
    "af_dp": "afbasicapp://mainactivity",
    "af_ios_url": "https://isitchristmas.com/",
    "af_siteid": null,
    "af_status": "Non-organic",
    "af_sub1": "my_sub1",
    "af_sub2": "my_sub2",
    "af_sub3": null,
    "af_sub4": null,
    "af_sub5": null,
    "agency": null,
    "campaign": "fruit_of_the_month ",
    "campaign_id": null,
    "click_time": "2020-08-12 15:08:00.770",
    "cost_cents_USD": 600,
    "engmnt_source": null,
    "esp_name": null,
    "fruit_amount": 26,
    "fruit_name": "apples",
    "http_referrer": null,
    "install_time": "2020-08-12 15:08:33.335",
    "is_branded_link": null,
    "is_first_launch": 1,
    "is_retargeting": true,
    "is_universal_link": null,
    "iscache": 1,
    "match_type": "fingerprinting",
    "media_source": "Email",
    "orig_cost": "6.0",
    "redirect_response_data": null,
    "retargeting_conversion_type": "none",
    "shortlink": "6d66214a"
}

このページは役に立ちましたか?