# AppsFlyer Push API
WARNING
データ統合によって生成されたデータは、クラスターのデータ消費量にカウントすることに注意してください。
# 概要
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);
TIP
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セクションで以下の方法に従ってコールバックアドレスを設定してください。
- PushAPI Version
- 2.0ver を選択してください
- HTTP method
- TEシステムはPOSTとGETの両方の方法で送信をサポートしていますが、POST方式を選択することをお勧めします。
- EndpointURL
- 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をチェックしてください。
DANGER
Facebookのデータをコールバックする必要がある場合は、AFバックエンドのFacebookチャネル設定でFacebookデータ使用規約(Terms of Service (opens new window))に同意する必要があります。そうしないと、Facebookのユーザーレベルのデータを取得できません。
# 後続利用
# 4.1 データ格納検証
「データ管理」ページで、イベントのトラッキングやユーザープロパティの作成状況を確認することができます。また、イベント分析モデルやユーザープロパティ分析モデルなどの解析方法を使用して、データが正しく保存されているかどうかをチェックすることもできます。