# AppsFlyer
このドキュメントでは、TEでAppsFlyerデータを統合する方法について説明します。現在、TEはAppsFlyerのPush API (opens new window)に連携することができます。
TIP
プラットフォームのデータ統合によって生成されたデータは、クラスターのデータ消費量にカウントすることに注意してください。
# 概要
API名 | 統合タイプ | データ粒度 | アトリビューション | コスト | 収益 | 露出 | クリック | コンバージョン |
---|---|---|---|---|---|---|---|---|
Push API | コールバック | ユーザーレベル | ✅ | ✅ | ✅ | ✅ | ✅ |
Push API (opens new window)はリアルタイムのAppsFlyerユーザーレベルデータを提供し、広告露出、クリック、アクティブ化、収益データなどが含まれます。コストデータはAFプラットフォームの制限により取得できない場合があります。
AppsFlyerデータと連携する前に、TEシステムのユーザー識別ルールの#distinct_idと#account_idの仕様について予めご理解・ご認識ください。
# 統合手順
- AppsFlyerのクライアントSDK (opens new window)とTE SDKへ接続後、AF SDKでTEのユーザー識別IDを設定
- TEへログイン後、サードパーティー統合ページにてAppsFlyerの統合を設定
- AppsFlyerのバックエンドへログイン後、コールバックを設定
- TEシステムがデータを正常に受信後、レポートの構築が完了を確認
# クライアントSDK設定
AppsFlyerデータを統合する最初のステップは、TEのSDKとAFのSDKをクライアント側で接続し、AFのSDK内でTEシステムのユーザー識別IDを設定することです。
# 1.1 プラン①(自動統合)
- TEのSDK のバージョンが2.8.0〜2.8.1である場合、このプランを直接使用することができます。
- TEのSDK のバージョンが2.8.2以上であれば、サードパーティのデータプラグインをインストールする必要があります。詳細については、Android SDKとiOS SDKを参照してください。
このプランは自動統合プランであり、TEクライアントSDKを初期設定した後、以下のコードを呼び出して有効にしてください。
// Initialize the TE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// Enable the AppsFlyer ID association function of the TE SDK
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
// It is strongly recommended that you set the visitor ID again using setCustomerUserId()
String distinctId = ThinkingAnalyticsAPI.GetDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// Initialize the AppsFlyer SDK
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
// After calling the TE SDK's login to set the account ID, you need to synchronize the data with the AF SDK again
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
注意
TE SDKのlogin()メソッドまたはidentify()メソッドを呼び出した場合、enableThirdPartySharing()を再度呼び出してデータを同期する必要があります。
もしAF SDKのsetAdditionalData()メソッドを呼び出す必要がある場合、このメソッドは複数回呼び出されると以前のパラメーターを上書きしてしまうため、以下のコードに従ってTE SDKにパラメーターを渡すことで、内部的にパラメーターを結合・マージします。
Map<String, Object> additionalData = new HashMap<>();
additionalData.put("af_test_key1", "test1");
additionalData.put("af_test_key2", "test2");
instance.enableThirdPartySharing(
TDThirdPartyShareType.TD_APPS_FLYER,
additionalData
);
このプランの原理は、内部で自動的にAFのsetAdditionalData()メソッドを呼び出し、TEプロジェクトのゲストIDとアカウントIDを渡すことです。
# 1.2 プラン②(手動統合)
手動統合の場合、AF SDKでsetAdditionalData()を使用してTEプロジェクトのゲストIDとアカウントIDを設定する必要があります。以下は、Android側のコード例です。
// Initialize the TE SDK
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// Get the distinct ID of TE, corresponding to #distinct_id in TE
String distinctId = ThinkingAnalyticsAPI.GetDistinctId();
// Set the distinct ID to the AF SDK through setAdditionalData()
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
// It is strongly recommended to set the distinct ID again using setCustomerUserId()
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// Initialize the AppsFlyer SDK
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
...
// After calling the login method of the TE SDK to set the account ID, you need to synchronize the data with the AF SDK again
String accountId = "your_account_id";
instance.login(accountId);
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id", distinctId);
CustomDataMap.put("ta_account_id",accountId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
上記の設定を行った後、custom_data
には ta_distinct_id と ta_account_id の2つのフィールドが含まれ、customer_user_id
はゲストIDです。
# TEのサードパーティ統合設定
SDKの設定が完了したら、次にTEにログインし、「サードパーティ」でAppsFlyerの設定を完了する必要があります。以下はAppsFlyerの設定ページです。「統合スイッチ」を開いて、AppsFlyerの設定を開始してください。
# 2.1 ユーザーの識別と関連付け
AppsFlyerが返すのはユーザーレベルのデータであるため、AppsFlyerが返すデータと#distinct_idおよび#account_idに対応するフィールドを設定する必要があります。TEシステムはこの設定に基づいて、返されたデータを変換する際にこれらのフィールドをデータ内のユーザー識別フィールドとして設定します。
- アカウントID:custom_data.ta_account_id
- ゲストID:customer_user_id,custom_data.ta_distinct_id
# 2.2 イベントテーブル格納設定
SDKの設定が完了しましたら、次にTEへログイン後「サードパーティ」でAppsFlyerの設定を完了する必要があります。「統合スイッチ」を開いてAppsFlyerの設定を開始してください。
イベントデータの格納を有効にすることをお勧めします。ただし、デフォルトではすべての AF から送信されたデータを受信します。送信されるイベントタイプが多すぎる場合、TEプロジェクトのイベント数が過剰に膨張する可能性があります。そのため、AFプラットフォームでコールバック設定を行う際は、必要なイベントのみを選択してください。
# 2.3 ユーザープロパティ格納
デフォルトでは、TEシステムは AF コールバックデータのアトリビューションフィールドを自動的に標準化されたユーザープロパティに書き込みます。以下はユーザープロパティに書き込まれるフィールドとその意味です。
AppsFlyer フィールド | 標準化フィールド | 説明 |
---|---|---|
media_source | te_ads_object.media_source | メディアチャネル |
campaign | te_ads_object.campaign_name | 広告キャンペーン名 |
af_adset | te_ads_object.ad_group_name | 広告グループ名 |
af_ad | te_ads_object.ad_name | 広告名 |
「設定ルール」をクリックして格納ルールの設定ページに移動し、必要な変更を行ってください。
イベントからユーザープロパティの変更が可能です。ユーザープロパティが頻繁に書き込まれるのを避けたい場合は「すべてのイベントを含める」をOFFに設定後、ソースイベント名を「install」へ変更することができます。このような設定ではTEシステムがAFから返されたインストールイベントから必要なフィールドだけ抽出後それらを書き込みます。デフォルトではuser_setOnce方式で保存されるため、最初に格納されたデータしか保存されません。
「プロパティマッピング」ボタンをクリック後ユーザープロパティへ書き込む必要があるフィールドを追加することができます。また、左側の「ルール」ボタンをクリックして新しいルールセットを追加することもできます。例えば、AFから送信された収益データから広告収益を抽出し、「user_add」という方法でユーザープロパティへ書き込んで各ユーザーの累計広告収益を記録したい場合などです。
すべてのルールを停止することでユーザープロパティの格納を停止できます。
# 2.4 データソース
データソースには、TEシステムがAFからのデータを受信するためのアドレスが表示されています。このアドレスを直接コピーし、AFコールバック設定を行う際にこのアドレスを入力してください。
このアドレスが表示されていない場合、右上のメニュー「プロジェクト管理」-「アクセス設定」-「データ送信先アドレス」へ進み、パブリックアドレスを設定してください。 このアドレスはTE SDKで設定されたデータ送信先アドレスです。 設定後AppsFlyer設定画面へ戻り「データソース」からアドレスをコピーしてください。
# AppsFlyer Push API 設定
TE側の設定が完了後、管理者アカウントでAFバックエンドへログインし「Integration」-「API Access」でPush APIセクションで以下の方法に従ってコールバックアドレスを設定してください。
- Push API Version
- 2.0ver を選択してください
- HTTP method
- TEシステムはPOSTとGETの両方の方法で送信をサポートしていますが、POST方式を選択することをお勧めします。
- Endpoint URL
- TEシステムのバックエンドのAppsFlyer設定ページの「データソース」からエンドポイントアドレスを取得し、直接貼り付けてください。
- Event Messages
- 少なくとも「インストール」イベントを選択する必要があります。他のアプリ内イベントを返す場合は、ここでチェックし、コールバックのアプリ内イベントにイベント名(In-app events)を入力してください。
- Message Fields
- メッセージフィールドには少なくとも以下の情報が含まれている必要があります:
- アトリビューション関連フィールド:media_source、channel、af_adset、af_ad など
- ユーザー識別ID:custom_data、customer_user_id、event_value など
- イベントプロパティまたはユーザープロパティとして必要なフィールド
- イベント関連フィールド:event_time_selected_timezone
- メッセージフィールドには少なくとも以下の情報が含まれている必要があります:
- In-app events
- 必要に応じてイベントのコールバックを選択し「Event Messages」でInstall in-app eventsをチェックしてください。
::: caution 注意
Facebookのデータをコールバックする必要がある場合は、AFバックエンドのFacebookチャネル設定でFacebookデータ使用規約(Terms of Service (opens new window))に同意する必要があります。そうしないと、Facebookのユーザーレベルのデータを取得できません。
:::
# データ格納ルール
# 4.1 ユーザー識別ルール
TEシステムは「ユーザーの識別と関連付け」の設定に基づいて、コールバックデータをユーザー識別することができます。これによりAFから返信されたユーザーレベルのデータを対応するTEプロジェクトのユーザーに関連付けることができます。
以下はユーザー識別ルール:
- アカウント ID:custom_dataにta_account_idが含まれているかを確認し、存在する場合はデータの#account_idとして使用し、存在しない場合は空白のままにします。
- ゲスト ID:「customer_user_id」が存在するかどうかを確認し存在している場合は #distinct_id へ設定します。存在しない場合は「custom_data」フィールドへ「ta_distinct_id」が含まれているかを確認し含まれている場合 #distinct_id へ設定します。含まれていない場合は空白のままにしてください。
- アカウントIDとゲストIDが両方空の場合、そのデータは無効なデータと見なされ直接破棄されます。
# 4.2 イベント格納ルール
- ユーザー識別ルールに従って、イベントデータをTEユーザーに関連付けます。
- 「event_time_selected_timezone」フィールドから時間とタイムゾーン情報を取得し、「#event_time」として時間、「#zone_offset」としてタイムゾーンを設定します。もしフィールドが空の場合は、「event_time」を「#event_time」として使用し、タイムゾーンは0に設定されます。
- データイベント名は、そのイベントがAppsFlyerでのイベント名です。
- コールバックリンクに設定された他のフィールドはすべて格納されます。
# 4.3 標準化フィールド
以下のイベントプロパティは標準化処理されます:
メタフィールド | 標準化フィールド | 説明 |
---|---|---|
media_source | te_ads_object.media_source | メディアチャネル |
monetization_network(マネタイズ) | te_ads_object.media_source | マネタイズチャネル |
campaign | te_ads_object.campaign_name | 広告キャンペーン名 |
af_c_id | te_ads_object.campaign_id | 広告キャンペーンID |
af_adset | te_ads_object.ad_group_name | 広告グループ名 |
ad_unit(マネタイズ) | te_ads_object.ad_group_name | マネタイズ広告のUnit名 |
af_adset_id | te_ads_object.ad_group_id | 広告グループ ID |
af_ad | te_ads_object.ad_name | 広告名 |
af_ad_id | te_ads_object.ad_id | 広告 ID |
placement(マネタイズ) | te_ads_object.placement | 広告位置 |
af_cost_value | te_ads_object.cost | コスト |
af_cost_currency | te_ads_object.currency | コスト通貨 |
event_revenue | te_ads_object.revenue | 収益 |
event_revenue_currency(マネタイズ) | te_ads_object.currency | 収益通貨 |
country_code | te_ads_object.country | 国家地域コード |
platform | te_ads_object.platform | プラットフォーム Android、iOS など |
app_id | te_ads_object.app_id | APP ID |
app_name | te_ads_object.app_name | APP 名 |
# 4.4 ユーザープロパティの格納ルール
- ユーザー識別ルールに従って、イベントデータを対応するTEユーザーに関連付けます。
- ユーザープロパティの格納ルールに基づいて、ユーザープロパティ設定ロジックをuser_set、user_setOnceまたはuser_addに決定します。
- 指定されたイベントまたは全体のイベントから、ユーザープロパティに書き込む必要があるフィールドを取得し、指定されたプロパティ名とタイプでユーザーテーブルに書き込みます。
# 後続利用
# 5.1 データ格納検証
TEシステムがAFからのコールバックデータを受信したかどうかを確認してください。以下の方法に従って確認できます:
- データ詳細の中で確認
「統合済み」のプラットフォームは、そのプラットフォームからデータを受信し、データがデータベースに格納されたことを示します。この時点で、「詳細」タブページで直近1000件の受信したデータを表示することができます。特定のレコードをクリックすると、変換前および変換後の情報など、そのデータの詳細情報を確認できます。また、そのレコードのデータをコピーまたはエクスポートしたり、「ダウンロード完了」という右上にあるボタンをクリックして全体的なデータをダウンロードすることもできます。
- その他プロダクトモジュールで確認
「統合ページ」以外にも、「データ管理」ページでイベントの送信やユーザープロパティの作成状況を確認することができます。
イベント分析モデルやユーザープロパティ分析モデルなどで使用し、データが正しく格納されているかどうかをチェックすることもできます。
# 5.2 レポート提案
以下はレポートを構築するためのいくつかの提案です。
- イベント分析モデルではAFリアルタイムデータを使用して広告配信および収益化の主要指標を構築し、広告分析レポートを作成します。
- リテンション分析モデルでは、フィードバックデータを組み合わせた広告収益化とゲーム内課金イベントを考慮し、各メディアチャネルや広告キャンペーンなどの粒度においてLTVに含まれる広告収益を計算します。
- ファネル分析モデルにおいて、インストールイベントに新規ユーザー変換のファネルに追加し、メディアチャンネルや広告キャンペーンなどの粒度で異なるソースからのユーザーの変換状況を分析します。