AppsFlyer Push API
サードパーティデータ統合によって生成されたデータは、クラスターの消費データ量に含まれますのでご注意ください
概要
インターフェースの概要
| インターフェース名 | タイプ | 粒度 | アトリビューション | コスト | 収益 | 表示 | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|
| Push API | コールバック | ユーザーレベル | ✅ | ✅ | ✅ | ✅ | ✅ |
Push APIは、AppsFlyerのユーザーレベルのデータをリアルタイムに提供します。これには広告の表示、クリック、アクティベーション、収益などのデータが含まれます。コストデータは、AFプラットフォームのデータ制限により取得できない場合があります。
AFデータの統合を始める前に、AEシステムのユーザー識別ルールを読み、AEが#distinct_idと#account_idによってユーザーを識別する仕組みを理解しておいてください
統合の流れ
- AppsFlyerクライアントSDKとAE SDKを統合し、AF SDKでAEのユーザー識別IDを設定します
- AE管理画面にログインし、サードパーティ統合モジュールでAppsFlyer Push APIプランを追加して、関連する設定を完了します
- AppsFlyerの管理画面にログインし、コールバックの設定を完了します
- AEシステムがデータを正常に受信しているかを確認し、レポートを作成します
1. クライアントSDKの設定
AppsFlyerのデータを統合する最初のステップは、クライアント側でAE SDKとAF SDKを連携させ、AF SDKでAEシステムのユーザー識別IDを設定することです
1.1 方法1(自動統合)
-
統合しているAndroid、iOS SDKについて
- SDKのバージョンが2.8.0~2.8.1の場合は、この方法をそのまま使用できます
- SDKのバージョンが2.8.2以上の場合は、サードパーティデータプラグインもインストールする必要があります。詳しくはAndroid SDKのサードパーティデータとiOS SDKのサードパーティデータを参照してください
-
統合しているUnity SDKのバージョンが2.4.0以上、Unreal SDKのバージョンが1.5.0以上の場合は、この方法をそのまま使用できます
AEのSDKの初期化と自動統合コードの有効化は、AppsFlyerのSDKの初期化より前に完了する必要があります。次の手順に従って操作してください:
1. AE SDKを初期化します。
2. `enableThirdPartySharing`を呼び出して、ゲストIDを自動設定します。
3. AppsFlyer SDKを初期化します。
各プラットフォームのSDKのコードサンプルは次のとおりです:
- Android
- iOS
- Unity
- Unreal
// 1. Android SDKを初期化
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);
// 2. enableThirdPartySharingインターフェースを呼び出し、ta_distinct_idをappsflyerイベントに設定
TDAnalytics.enableThirdPartySharing(TDThirdPartyType.APPS_FLYER);
// 3. setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
String distinctId = TDAnalytics.getDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// 4. Appsflyer SDKを初期化
// 。。。
// 5. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
TDAnalytics.login("account_id");
TDAnalytics.enableThirdPartySharing(TDThirdPartyType.APPS_FLYER);
// 1. iOS SDKを初期化
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// 2. enableThirdPartySharingインターフェースを呼び出し、ta_distinct_idをappsflyerイベントに設定
[TDAnalytics enableThirdPartySharing:TDThirdPartyTypeAppsFlyer];
// 3. setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
NSString *distinctId = [TDAnalytics getDistinctId];
[AppsFlyerLib shared].customerUserID = distinctId;
// 4. Appsflyer SDKを初期化
// 。。。
// 5. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
[TDAnalytics login:@"account_id"];
[TDAnalytics enableThirdPartySharing:TDThirdPartyTypeAppsFlyer];
// 1. Unity SDKを初期化
TDConfig config = new TDConfig("APPID","SERVER");
TDAnalytics.Init(config);
// 2. enableThirdPartySharingを呼び出し、ta_distinct_idをAFイベントに設定
TDAnalytics.EnableThirdPartySharing(TDThirdPartyType.APPSFLYER);
// 3. setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
var distinctId = TDAnalytics.GetDistinctId();
AppsFlyer.setCustomerUserId(distinctId);
// 4. AF SDKを初期化
// 。。。
// 5. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
TDAnalytics.Login("account_id");
TDAnalytics.EnableThirdPartySharing(TDThirdPartyType.APPSFLYER);
// 1. Unreal SDKを初期化
UTDAnalytics::Initialize();
// 2. enableThirdPartySharingを呼び出し、ta_distinct_idをAppsflyerイベントに設定
TArray<FString> EventTypeList;
EventTypeList.Emplace(TEXT("TAThirdPartyShareTypeAPPSFLYER"));
UTDAnalytics::EnableThirdPartySharing(EventTypeList, AppID);
// 3. Appsflyer SDKを初期化
// 。。。
// 4. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
UTDAnalytics::Login("account_id", AppID);
UTDAnalytics::EnableThirdPartySharing(EventTypeList, AppID);
AE SDKのlogin()メソッドまたはidentify()メソッドを呼び出した場合は、再度enableThirdPartySharing()を呼び出してデータを同期する必要があります。
AF SDKのsetAdditionalData()メソッドも呼び出す必要がある場合、このメソッドは複数回呼び出すと以前のパラメータが上書きされるため、以下のコードのようにパラメータをAE SDKに渡すことができます。AE SDKが内部でパラメータを連結・マージします。以下のコードはAndroid 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()メソッドを自動的に呼び出し、AEプロジェクトのゲストIDとアカウントIDを渡すというものです。
1.2 方法2(手動統合)
手動統合の方法では、AF SDKでsetAdditionalData()インターフェースを使用して、AEプロジェクトのゲストIDとアカウントIDを設定する必要があります。
AEのSDKの初期化とsetAdditionalDataインターフェースの呼び出しは、AF SDKの初期化より前に完了する必要があります。次の手順に従って操作してください:
1. AE SDKを初期化します。
2. `setAdditionalData`を呼び出してゲストIDを設定します。
3. AF SDKを初期化します。
各SDKの手動統合のコードサンプルは次のとおりです:
- Android
- iOS
- Unity
// 1. Android SDKを初期化
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);
// 2. AEのゲストIDを取得(AEの#distinct_idに対応)
String distinctId = TDAnalytics.getDistinctId();
// 3. ゲストIDをAFの収集イベントに設定
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
// 4. setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// 5. AppsFlyer SDKを初期化
...
// 6. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
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);
// 1. iOS SDKを初期化
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// 2. AEのゲストIDを取得(AEの#distinct_idに対応)
NSString *distinctId = [TDAnalytics getDistinctId];
// 3. ゲストIDをAFの収集イベントに設定
NSDictionary *distinctData = @{@"ta_distinct_id": distinctId};
[[AppsFlyerLib shared] setAdditionalData:distinctData];
// 4. setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
[AppsFlyerLib shared].customerUserID = distinctId;
// 5. AF SDKを初期化
// 。。。
// 6. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
NSString *accountId = @"account_id";
[TDAnalytics login:accountId];
NSDictionary *customDataDict = @{
@"ta_distinct_id": distinctId,
@"ta_account_id": accountId
};
[[AppsFlyerLib shared] setAdditionalData:customDataDict];
// 1. Unity SDKを初期化
TDConfig config = new TDConfig("APPID","SERVER");
TDAnalytics.Init(config);
// 2. AEのゲストIDを取得(AEの#distinct_idに対応)
var distinctId = TDAnalytics.GetDistinctId();
// 3. ゲストIDをAFの収集イベントに設定
var distinctData = new Dictionary<string, string>
{
{ "ta_distinct_id" , distinctId}
};
AppsFlyer.setAdditionalData(distinctData);
// 4. setCustomerUserId()でゲストIDをもう一度設定することを強くお勧めします
AppsFlyer.setCustomerUserId(distinctId);
// 5. AF SDKを初期化
// 。。。
// 6. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
var accountId = "account_id";
TDAnalytics.Login(accountId);
var additionalData = new Dictionary<string, string>
{
{ "ta_distinct_id" , distinctId},
{"ta_account_id" , accountId}
};
AppsFlyer.setAdditionalData(additionalData);
以上の設定を行うと、コールバックデータ内のcustom_dataにta_distinct_id、ta_account_idの2つのフィールドが含まれ、customer_user_idはゲストIDと等しくなります。
2. プランの設定
SDKの設定が完了したら、次にAEシステムの管理画面にログインし、「サードパーティ統合」モジュールでAppsFlyerの設定を行います。下図はAppsFlyerの設定画面です:
2.1 ユーザー識別フィールド
AppsFlyerがコールバックするのはユーザーレベルのデータであるため、ユーザー識別ルール、つまりAFのコールバックデータ内で#distinct_idと#account_idに対応するフィールドを設定する必要があります。AEシステムはこの設定に基づき、コールバックデータを変換する際に、これらのフィールドをデータ内のユーザー識別フィールドとして設定します。
本ドキュメントの前のステップに従ってクライアントSDKを設定した場合は、次の設定を使用してください:
- アカウントIDの関連フィールド:custom_data.ta_account_id
- ゲストIDの関連フィールド:customer_user_id,custom_data.ta_distinct_id
2.2 イベントデータの格納設定
「イベントデータの格納設定」スイッチをオンにすると、コールバックされたデータ(アクティベーションイベントとアプリ内イベントを含む)はすべてイベントテーブルに書き込まれます
イベントデータの格納を有効にすることをお勧めします。ただし、デフォルトではAFからコールバックされるすべてのデータを受信します。コールバックされるイベントの種類が多すぎると、AEプロジェクトのイベント量が過度に膨らむおそれがあります。そのため、AFプラットフォームでコールバックを設定する際は、必要なイベントのみを選択してコールバックすることをお勧めします。
2.3 ユーザープロパティの格納設定
デフォルトでは、AEシステムは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 | 広告名 |
旧バージョンのユーザープロパティ格納のデフォルトルールは現在と異なるため、ご注意ください。新旧のプロパティを統合する必要がある場合は、仮想プロパティ機能を使用できます
変更が必要な場合は、「設定ルール」をクリックして、下図のような格納ルールの設定ページに移動します
ここでは、ユーザープロパティをどのイベントから取得するかを変更できます。ユーザープロパティが頻繁に書き込まれないようにしたい場合は、「すべてのイベントを含む」をオフにし、ソースイベント名をinstallに変更します。このように設定すると、AEシステムはAFからコールバックされたinstallイベントからのみ、ユーザープロパティに書き込むフィールドを抽出して書き込みます。格納の方法はデフォルトでuser_setOnceで、最初に送信された情報のみが保持されます。
「プロパティのマッピング」ボタンをクリックして、ユーザープロパティに書き込むフィールドを追加できます。また、左側の「ルール」ボタンをクリックして新しいルールを追加することもできます。たとえば、AFからコールバックされたマネタイズデータから広告収益を抽出し、user_addの方式でユーザープロパティに書き込むことで、各ユーザーの累計広告収益を記録できます。
ユーザープロパティの格納を無効にしたい場合は、すべてのルールを停止します:
2.4 ターミナルアドレス
ターミナルアドレスには、AEシステムがAppsFlyerのコールバックデータを受信するアドレスが表示されます。このアドレスをそのままコピーし、この後のAFのコールバック設定で入力してください:
ここにアドレスが表示されない場合は、右上のメニュー「プロジェクト管理 → プロジェクト設定 → プロジェクト構成」でパブリックネットワークURLを設定してください。設定ページのヒントバーにある「データアクセスアドレス」リンクから移動することもできます。このアドレスは、AE SDKで設定するデータ受信URLです。設定後、AppsFlyerの設定ページに戻り、「ターミナルアドレス」でアドレスをコピーしてください。
2.5 イベントの格納ルール
- データ内のevent_time_selected_timezoneフィールドを使用し、その時間とタイムゾーンの情報を取得して、時間を#event_time、タイムゾーンを#zone_offsetとして書き込みます。event_time_selected_timezoneが空の場合は、event_timeを#event_timeとして使用し、タイムゾーン#zone_offsetは0に設定されます
- データのイベント名は、そのイベントのAppsFlyerでのイベント名です
- その他のフィールドはすべて格納されます
2.6 標準化フィールド
次のイベントプロパティは標準化処理されます:
| 元フィールド | 標準化フィールド | 意味 |
|---|---|---|
| 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 | アプリID |
| app_name | te_ads_object.app_name | アプリ名 |
3. AppsFlyer Push APIの設定
AE管理画面での設定が完了したら、次に管理者アカウントでAppsFlyerの管理画面にログインし、「Integration」-「API Access」でPush APIのセクションを見つけて、以下の方法でコールバックURLを設定してください:
-
コールバックAPIバージョン(Push API Version)
- 2.0を選択してください
-
HTTPリクエストメソッド(HTTP method)
- AEシステムはPOSTとGETの両方のコールバック方式に対応しています。POST方式を選択することをお勧めします
-
ターミナルアドレス(Endpoint URL)
- AEシステムの管理画面にあるAppsFlyer設定ページの「ターミナルアドレス」欄でアドレスを取得し、そのまま貼り付けてください
-
イベントメッセージのタイプ (Event Messages)
- 少なくともアクティベーション (Install) イベントを選択する必要があります。その他のアプリ内イベント (Install in-app events) もコールバックしたい場合は、ここでチェックを入れ、コールバックするアプリ内イベント(In-app events)にコールバックするイベントのイベント名を入力してください
-
コールバックフィールド (Message Fields)
-
メッセージフィールドには、少なくとも以下の情報を含める必要があります:
- モバイルアトリビューション関連のフィールド:media_source、channel、af_adset、af_adなど
- ユーザー識別ID関連のフィールド:custom_data、customer_user_id、event_valueなど
- イベントプロパティまたはユーザープロパティとして使用するフィールド:app_version、platformなど
- イベント関連のフィールド:event_time_selected_timezone
-
-
コールバックするアプリ内イベント(In-app events)
- 必要に応じてコールバックするイベントを選択します。コールバックする場合は、イベントメッセージのタイプ (Event Messages) でアプリ内イベントのコールバック (Install in-app events) にチェックを入れてください
Facebookのデータをコールバックする必要がある場合は、AFの管理画面にあるFacebookチャンネルの設定で、Facebookのデータ使用規約(Terms of Service)に同意する必要があります。同意しないと、Facebookのユーザーレベルのデータを取得できません。
4. その後の利用
4.1 データ格納の確認
「データ管理」ページで、コールバックイベントやユーザープロパティが作成されているかどうかを確認できます。
また、イベント分析モデルやユーザープロパティ分析モデルなどの分析モデルで分析を行い、データが格納されているかどうかを確認することもできます。
4.2 レポートの提案
レポート作成に関するいくつかの提案を以下に示します:
- イベント分析モデルで、AFのコールバックデータを使用して広告配信と広告マネタイズの主要指標を構築し、広告分析レポートを作成します
- リテンション分析モデルで、コールバックデータの広告マネタイズとゲーム内課金イベントを組み合わせて、メディアチャンネルや広告キャンペーンなどの粒度で、広告マネタイズを含むLTVを計算します
- ファネル分析モデルで、インストールイベントを新規ユーザーのコンバージョンファネルに追加し、メディアチャンネルや広告キャンペーンなどの粒度で、流入元別のユーザーのコンバージョン状況を分析します

