サーバー間(S2S)イベントAPI

概要 :サーバー間(S2S)イベントAPIを使用して、アプリの外部で発生するイベントを送信します。たとえば、Webインターフェイスとモバイルインターフェイスの両方がある場合、S2Sを使用してWebインターフェイスからイベントを記録し、SDKを使用してモバイルからイベントを記録できます。

サーバー間イベントは、次のように準備する必要があります。

  • Content-Type:application / jsonとして設定します。
  • URLエンドポイント
    https://api2.appsflyer.com/inappevent/{app_id}
    • Androidの例
      https://api2.appsflyer.com/inappevent/com.appsflyer.myapp
    • iOSの例
      https://api2.appsflyer.com/inappevent/id123456789
      :アプリIDは、アプリのiTunes IDです。iOSのアプリIDには、IDの前に 先頭にidが含まれていることを確認してください。これがなければ、有効 200 OKのリターンコードは表示されますが、イベントは記録されません
    • Windowsの例
      https://api2.appsflyer.com/inappevent/a1b2c3d4e5f6
      注意 :アプリIDは、Microsoft App StoreでのアプリのIDです。
  • JSONペイロードの最大サイズ:1,000
  • JSONペイロードを文字列(String)として渡し、イベント値を文字列(String)化する必要があります。
  • JSONペイロードは次のパラメータを必ず含めてください:
    "af_events_api":"true"
    このパラメータがリッチイベントとして構成し、様々なパートナーとのイベント値の自動マッピングを有効にします 。

以下の例を参照してください。

Method: POST

Header - "authentication"= {dev-key}

開発キーは ダッシュボード > アプリ設定 > Dev Key から取得できます。

iOS Android と Windows
{
  "appsflyer_id": {AppsFlyer Device ID }, // e.g. 1415211453000-6513894
  "idfa":{idfa},
  "customer_user_id": {customer_user_id}, // Customer User ID optional parameter
  "eventName": {The event name}, // e.g. "af_purchase"
  "eventValue": {A JSON containing a rich in-app event value - must be stringfied},
  "{

    \"af_revenue\":\"6\",
    \"af_content_type\":\"wallets\",
    \"af_content_id\":\"15854\"

  }",
  "eventCurrency": {Event currency}, // e.g "USD"
  "ip": {device IP},
  "eventTime": {Event timestamp in UTC +0}, // e.g "2014-05-15 12:17:00.000"
  "af_events_api" :"true"
}

 注意

すべての予約文字(Reserved Characters)(https://tools.ietf.org/html/rfc3986#section-2.1)は、URIが生成される前にパーセントエンコードされている必要があります。

パラメーター名

ここにリストされているパラメーターを使用して、APIメッセージを準備します。すべての必須パラメーターと少なくとも1つの広告(デバイス)パラメーターを必ず送信してください。

パラメータ名 必須 説明
appsflyer_id はい

アプリの初回起動時にAppsFlyerによって生成される一意の識別子。

例: "appsflyer_id": "1415211453000-6513894"

eventName はい

イベント名を指定します

例: "eventName": "af_purchase"

Event Value いいえ

イベント属性を指定します

値なしでイベントを送信する場合は、次のように送信します: "event_value":""

例: "eventValue": "{ \"af_revenue\": \"6\", \"af_content_type\": \"wallets\", \"af_content_id\": \"15854\", \"af_quantity\" :\"1\" }"

af_events_api はい

常に "true" に設定

例: "af_events_api" :"true"

IP いいえ

イベント発生時のモバイルデバイスのIPアドレス

IPアドレスはイベントの国を決定します。IPアドレスが指定されていない場合、ローデータの国列には N/A が表示されます。

  • 例: "ip": "1.2.3.4"
customer_user_id いいえ

顧客ユーザーID、アプリ所有者が設定した一意のユーザー識別子。

例: "customer_user_id": "my_customer_number1234" 

app_version_name いいえ

アプリのバージョンを含む文字列

イベントパラメータ
パラメータ名 リマーク
idfa   iOS
advertising_id デバイスのGAID(Android)
oaid  
amazon_aid Amazon
iemi  

広告(デバイス)識別子
(少なくとも1つの識別子を送信)

パラメーターのデータの準備

上記のパラメーターの特定の値を取得するには、バックエンドロジックが必要です。以下に、これらの値を取得するための推奨フローを示します。

AppsFlyer IDと顧客ユーザーIDのマッピング

AppsFlyer IDは、サーバー間アプリ内イベントを送信する場合の必須パラメーターです。どのユーザーがどのイベントを実行したかを簡単に把握できるようにするには、以下のフローを実装します。

  1. ユーザーがアプリをインストールするときに顧客ユーザーID を付与(設定)します
  2. データエクスポートまたはPull API を介してインストールのローデータレポートのダウンロードします
  3. 社内システムの顧客ユーザーIDとローデータレポートの顧客ユーザーIDを照合して、AppsFlyer IDを取得します。
    注意:あなたのアプリに実装されたAppsFlyer SDKから各ユーザーのAppsFlyer IDを取得することができます(Android / iOS
  4. AppsFlyer IDをお客様内部の顧客ユーザーIDにマッピングします(将来の使用に重要)

AppsFlyer IDを内部顧客ユーザーIDにマッピングすると、どのユーザーがどのイベントを実行したかを簡単に知ることができます。その後、AppsFlyer IDおよびその他の値(イベント値、イベント通貨、イベント時間など)を取得し、サーバー間アプリ内イベントを送信できます。

イベントのタイミング

サーバー間イベントは、リアルタイムでまたはイベントタイムスタンプで送信できます。

オプションの eventTime パラメーターを使用して、イベントの発生時刻( UTC +0 タイムゾーン)を指定できます。このパラメーターがメッセージに含まれない場合、AppsFlyerは受け取ったHTTPSメッセージのタイムスタンプを使用します。 

eventTimeのフォーマット: "yyyy-MM-dd HH:mm:ss.SSS" (例:"2014-05-15 12:17:00.000") タイムスタンプ付きのイベントを送信する場合、これらのイベントをリアルタイムスタンプ(実際に行われたとき)で記録するには、すべてのイベントを翌日の午前02:00 UTC +0 までにAppsFlyerに送信する必要があります。


 午前2:00までに送信されなかった過去のタイムスタンプのイベントは、送信された時間で記録されます。

UTC+0時間の深夜2時より前に送信されたタイムスタンプ付きのイベント

イベント発生:  5月2日 22:00

イベントがAppsFlyerのサーバーに送信された日時: 5月3日 1:00

イベントは、イベントが発生した実際の時刻(5月2日 22:00)でAppsFlyerに記録されます。

UTC+0時間の午前2時以降に送信されたタイムスタンプ付きイベント

イベント発生:  5月2日 22:00

イベントがAppsFlyerのサーバーに送信された日時:  5月4日 9:00

イベントは、イベントが発生した時刻ではなく、AppsFlyerに送信された時刻でAppsFlyerに記録されます(5月4日 9:00)。

未来のタイムスタンプを持つイベント

将来のタイムスタンプで送信されたイベントは、ペイロードのイベントタイムスタンプではなく、常にAppsFlyerに送信された時間でAppsFlyerに記録されます。

タイミングイベント:視覚的なタイムライン

Server-to-Server-Events.PNG

 注意

S2Sの最大リクエスト数は1分あたり6万件か、1秒あたり1千件です。お客様の要件が異なる場合は、カスタマーサクセスマネージャーにお問い合わせください。

サービスリターンコード

200
OK リクエストがAppsflyerシステムによって正常に処理された場合
401
unauthorized Authentication Headerのキーが該当アプリのDev key用ではない場合
400
Bad request リクエストに関して少なくとも1つの条件が検証できず失敗した場合
500
Internal server error サーバーエラーが発生した場合

サーバーがファイアウォールで保護されている場合は、リターンメッセージを受信するため、 AWSのIPアドレスレンジ からの受信レスポンスをホワイトリストに登録する必要があります。

Request Bodyの例

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "af_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}


この例では、AppsFlyerはcontent typeなどの追加のプロパティと一緒に、収益のある購入イベントであるS2Sのアプリ内イベントを受信します。

特殊なケース

マイナスの収益を送る

負(マイナス)の収益を伴うイベントを送信する場合(キャンセルされた購入や払い戻しなどのイベントの場合)、収益パラメーターに負の値を指定できます。
例:

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "cancel_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"-6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}

イベント値なしでイベントを送信する

イベント値なしでイベントを送信する場合は、単に空の文字列をイベント値に渡します: "event_value":""

AppsFlyerは、広告主の設定に応じて、高度なターゲティングや最適化、オーディエンスの作成を目的に、このようなリッチアプリ内イベントをメディアソースに送信できます。

AppsFlyerデバイスIDの取得

appsflyer_id はサーバー間イベントメッセージの必須パラメータです。AppsFlyerでは、このパラメーターを使用して、オリジナルのデバイスとメディアソースにイベントを紐付けます。 IDは次のようにして取得できます。

 ヒント

S2Sのメッセージをテストする時にローデータ、Push API、またはPull APIを使用している場合、メディアソースが"s2s_test"のレコードを確認してください。これはテスト対象のデバイスを指しており、そのAppsFlyerデバイスIDが必要なIDとなります。

オーガニックと非オーガニックの違い

S2S(サーバー間)アプリ内イベントを送信すると、AppsFlyerは自動的に追加データをイベントに関連付けます。追加データは、アプリ内イベントに先行するインストールイベントから取得されます。

つまり、AppsFlyerが非オーガニックサーバー間アプリ内イベントに関連付けるデータは、オーガニックサーバー間アプリ内イベントに紐付けられないということです。

 例

たとえば、非オーガニックとオーガニックサーバー間アプリ内イベントのローデータレポートを比較する場合、非オーガニックイベントにはオーガニックアプリ内イベントにはないデータが含まれます。

非オーガニックアプリ内イベントには、メディアソース、キャンペーン、アトリビューションタッチタイプ、アトリビューションタッチ時間に関するデータが含まれます。

一方、オーガニックのアプリ内イベントは、オーガニックのインストールに従います。オーガニックインストールには、キャンペーン、メディアソース、またはアトリビューションのタッチタイプと時間に関連するデータはありません。

この記事は役に立ちましたか?