概要:アプリの外で発生するモバイルイベントをサーバー経由でAppsFlyerに送信しましょう。
サーバー間 (S2S) イベントAPI for モバイル
iOSアプリの場合、iOS 14以降、OS (オペレーティングシステム) パラメーターを送信する必要があります。
AppsFlyerのプラットフォームは、AppsFlyer SDKおよびAPIによって送信されたモバイルアプリイベントをメディアソースに紐づけて記録します。S2S APIを使用することで、アプリの外部で発生したイベント(例:Webサイト上での定期購読登録の更新など)を計測できます。S2Sイベントが記録されると、通常のイベントデータと同様、管理画面、ローデータ、各種レポート画面など、プラットフォーム全体で利用できます。PBAのWebイベントについては、 Web S2S for PBA をご参照ください。
AppsFlyerはS2Sイベントに以下情報を入力します。
- S2Sメッセージで送信されたイベントの値
- インストール時間やメディアソースなどのAppsFlyerのインストール計測の値に
API 経由でイベントを送信するには、S2SイベントAPIの手順に従うよう開発者に伝えてください。
パラメータについて
オーガニックと非オーガニックの違い
AppsFlyerがS2Sのアプリ内イベントを処理するとき、アトリビューションフィールドはAppsFlyer IDを使用して入力され、アプリ内イベントよりも前に発生していた関連するインストールイベントを識別します。
つまり、AppsFlyerが非オーガニックサーバー間アプリ内イベントに関連付けるデータは、オーガニックサーバー間アプリ内イベントに紐付けられないということです。
例
たとえば、非オーガニックとオーガニックサーバー間アプリ内イベントのローデータレポートを比較する場合、非オーガニックイベントにはオーガニックアプリ内イベントにはないデータが含まれます。
非オーガニックのアプリ内イベントには、メディアソース、キャンペーン、アトリビューションタッチタイプ、アトリビューションタッチタイムに関するデータが含まれます。
一方、オーガニックのアプリ内イベントは、オーガニックのインストールに従います。オーガニックインストールには、キャンペーン、メディアソース、またはアトリビューションのタッチタイプと時間に関連するデータはありません。
AppsFlyer IDとカスタマーユーザーID(CUID)のマッピング
パラメーターに入力する特定の値を取得するには、バックエンドロジックが必要です。以下では、AppsFlyer IDの取得方法について説明しています。
- AppsFlyer IDは必須であり、イベントの紐付けに使用されます。
- このIDはユーザーが最初にアプリをインストールしたときに発行されます。
- CUIDをAppsFlyer IDにマップできるようにするには、アプリでCUIDを設定する必要があります。
どのユーザーがどのイベントを実行したかを簡単に把握できるようにするには、以下のフローを実装してください。
- ユーザーがアプリをインストールしたときにカスタマーユーザーID を付与(設定)してください。
- AppsFlyerのローデータレポートにCUIDとAppsFlyer IDが記録されるので、AppsFlyerのPush APIなどのデータ提供機能を利用して取得してください。
- ローデータレポートを使って、CUIDとAppsFlyer IDを照合させてください。
- AppsFlyer IDは、実装したSDKからも取得することが可能です。(Android/iOS)
- お客様自身のデータベース上でも、AppsFlyer IDをカスタマーユーザーIDにマッピングしてください。(将来的な使用においても重要です)。
AppsFlyer IDをお客様側のカスタマーユーザーIDにマッピングすると、どのユーザーがどのイベントを実行したかを簡単に知ることができます。その後、他の値(イベント値、イベント通貨、イベント時間など)を取得してサーバー間アプリ内イベントを送信できます。
AppsFlyer IDの取得
appsflyer_id
はサーバー間イベントメッセージの必須パラメータです。AppsFlyerでは、このパラメーターを使用して、オリジナルの端末とメディアソースにイベントを紐付けます。 次のいずれかの方法でIDを取得できます。
- AppsFlyer SDKのAPIを呼んでモバイル端末から取得する場合:Android / iOS
- 次のいずれかを使用してAppsFlyerプラットフォームから: Pull API / Push API / インストールのローデータエクスポート
ヒント
S2Sメッセージをテストする際にローデータを使用する場合は、メディアソース名 "s2s_test" の記録を確認してください。これがテスト時のデバイスで、その「AppsFlyer Device ID」がここで必要なIDとなります。
S2Sイベントのタイムスタンプ
S2SイベントがAppsFlyerに一括で到着すると、プロパティ値と到着時間に従って eventTime
タイムスタンプが付けられます。 このプロパティは eventTime
、すなわち、アプリ内イベントの発生時間を示します。
到着時に、イベントには次のようにタイムスタンプが付けられます:
- パラメーターが
eventTime
イベントレコードに含まれていない場合、イベント時刻は HTTPメッセージ到着時刻に設定されます。 - 02:00 UTC(日本時間午前11時)より前に到着したイベントには、
eventTime
値がスタンプされます。 つまり、イベントにeventTime
スタンプを付けるには、イベントの当日、または翌日の02:00UTC(日本時間午前11時)までにレポート(送信)する必要があります。 - 前日以前に発生し、02:00 UTC(日本時間午前11時)以降に到着したイベントには、到着時刻(APIコールの時刻)がスタンプされます。
- 将来の
eventTime
値(eventTime >到着時刻)で到着するイベント:- レポートされた
eventTime
時刻と到着時刻の両方が同じ暦日である場合、イベントにはeventTime
値でタイムスタンプが付けられます。 - レポートされた
eventTime
が翌暦日の場合、イベントには到着時刻のタイムスタンプが付けられます。
- レポートされた
例
- イベントを
eventTime
= Monday 21:00で送信するとします。
AppsFlyerに到着 | AppsFlyerのタイムスタンプ | リマーク |
---|---|---|
火曜日 01:00 |
月曜日 21:00 |
データの締切前に到着。時刻は eventTime 値に設定されます。 |
水曜日 09:00 |
水曜日 09:00 |
データの締切後に到着。データの到着時間で記録されます。 |
マイナスの収益を送る
購入がキャンセルされた場合などには、マイナスの収益の値を持つイベントも送信可能です。 af_revenue
のパラメータには、マイナスの値も使用することができます。
af_quantity
のパラメータも使用している場合には、利用されているシステム側のロジックによっては、マイナスの値を設定したいケースもあるかと思います。AppsFlyerでは af_quantity
を収益の集計などには使用しませんのでご安心ください。
トラブルシューティング
イベントが管理画面に表示されない
- エンドポイント:使用されているエンドポイントが正しいことを確認してください。
- ペイロードに必須のパラメータが含まれていることを確認してください。詳細はこちらです。
- イベント計測に使用しているAppsFlyerIDが、(このガイドで提示しているサンプルのIDでなく)そのアプリがインストールされている実際のappsflyer_idであることを確認してください。詳細はこちらです。
- S2Sイベントは、イベントの一括送信をサポートしていません。各S2Sイベントは個別に送信する必要があります。
- 非同期メソッドを使用してイベントを送信して、応答時間を短縮できます。
- オーバービューの画面で指定する日付は、イベントの発生日ではなく、アプリのインストール日(LTV)になります。
- 正しい日付範囲を選択していることを確認してください。
- 管理画面でイベントを確認するには、管理画面で選択した日付が、イベントの発生日ではなく、端末(appsflyer_id)のインストール日と一致していることを確認してください。
- イベントローデータレポート:日付範囲は、インストール日ではなくイベントの発火日が関係します。
イベントに収益が含まれない
S2Sイベントを送信しても、その収益が記録されない場合には、送信したJSONが文字列化されているかどうかを確認してください。最も重要な部分は、JSONのイベント値パラメーターです。次の例に示すように、文字列化する必要があります。
"{\"af_revenue\":\"6\" ,\"af_content_type\":\"wallets\"}"
文字列(String)化されていない場合、イベント値は正しく処理されず、収益は記録されません。
収益の値は書式化しないでください。小数点のコンマを含むことができます。通貨記号や通貨コード、,
のような値の区切り文字も含めないでください。収益の値の冒頭には -
(マイナス)を付与することも可能です。
- 有効な値の例:
123
,-123.45
,123.456
- 無効な値の例:
1,234.56
,1,234
S2Sイベントのすべてのフィールドが入力されない
ローデータの項目は、S2Sのコールで送信された値と、インストールイベントのデータを使用して入力されます。AppsFlyerのSDKを使って計測するアプリ内イベントと似たような挙動になりますが、まったく同一ではなくいくつかの違いがあります。具体的には、次の項目はS2Sイベントでは入力されません。
- WIFI
- Operator
- Language
- 端末モデル
- Device Category
- アプリバージョン:
app_version_name
を使用して設定します。 - App Name
- User Agent