やりたいこと
アカウント登録や購入処理など、サーバー側で行われる処理をAppsFlyerで扱えるようにする。
S2SイベントAPIについて
サーバー側で処理するアプリイベントについては、サーバー側でAppsFlyerへイベント情報を送信することで、アプリイベントと同様に扱えるようになります。
そこで必要になるのがS2SイベントAPIです。公式ドキュメントはこちら。
こちらについての記事があまり無かったので、今回書いてみることにしました。サーバーサイドの言語はPHPを想定します。
S2SイベントAPIの利用にはAppsFlyerのEnterpriseプランである必要があります。
やること
サーバー側で、購入処理などイベントが発生した際に、S2SイベントAPIにイベント情報をPOSTします。
公式ドキュメントの以下図「S2S」部分を実装します。
以下の開発者向けページに、APIのパラメータなど詳しく書かれています。
また上記サイトでは、フォームに値を入力して「Try It!」ボタンを押すと、送信の検証ができます。大変便利ですね。
※ただしサイト言語を日本語すると、なぜか認証パラメータのキーが日本語になり送信失敗するので、利用する場合は英語にしましょう。
(2023/03/22 10:20追記)
こちら修正されていました!
AppsFlyerへPOSTする
早速実装してみます。
以下はPHPでcurlを使用してS2SイベントAPIに「purchase_item」というイベントをPOSTするコードになります。
※認証キーなど各種値は、無効なサンプル値です。
$postData = [
'appsflyer_id' => '1415211453000-6513894', // AppsFlyerID
'eventName' => 'purchase_item', // Event Name
'eventValue' => [ // Event Value
'af_revenue' => 1000, // 金額
'af_currency' => 'JPY', // 通貨コード
'item_id' => 5, // 任意のカスタム値
]
];
$appId = 'id123456789'; // アプリ識別子
$authenticationKey = 'authenticationKeyValue'; // 認証キー
$postDataJson = json_encode($postData);
$url = 'https://api2.appsflyer.com/inappevent/' . $appId;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'accept: application/json',
'authentication: ' . $authenticationKey,
'content-type: application/json'
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postDataJson);
curl_exec($ch);
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $responseCode; // 正常ならば200が出力される
正常終了後、AppsFlyerに反映されるまでしばらくかかります。15〜30分ほど待てば、AppsFlyer管理画面の「アプリイベント」に「purchase_item」が追加されます。
また、「ローデータ出力」からCSV出力すれば、eventValueで指定した値が記載されていることと思います。
送信パラメータについて
-
認証キー
APIを呼び出す際に必要な認証情報です。AppsFlyer管理画面の「アプリ設定」ページの「DEVキー」に表示されてる英数字の乱数のような値です。 -
アプリ識別子
アプリを識別するための一意のIDです。
AppsFlyer管理画面の「アプリ設定」ページURLの「appId」パラメータの値として表示されます。
https://hq1.appsflyer.com/apps/settings?appId=[ここの値]
Androidアプリの場合は、アプリのバンドルIDがアプリ識別子になります。iOSアプリの場合は、「id123456789」のような値がアプリ識別子になります。 -
AppsFlyerID
アプリの初回起動時にAppsFlyerから付与される一意の端末識別子です。
「1415211453000-6513894」といった値です。
アプリ側で取得し、サーバー側に送信する必要があります。 -
Event Name
アプリ内で発生するイベントの名前を指します。 -
Event Value
イベントの値を配列で指定します。
任意の値の指定もできますが、特定のキーとバリューを設定することで、イベントの種類に応じた詳細な情報を記録することもできます。例えば、af_revenueなどを指定すると金額として計上してくれます(詳細はこちら)。
値の指定がない場合(とりあえず該当APIが叩かれた回数を測りたいだけなど)は空欄にします。
上記が送信の際に必須となる項目となります。
他にもいろいろ追加できますので、開発者向けページを参考に、必要であれば適宜追加してください。
最後に
いかがでしたでしょうか。
サーバー側の処理があるアプリでは、S2SイベントAPIを利用することで、より柔軟な分析が行えます。
AppsFlyerには他にも分析のためのさまざまな手段が用意されています。これらを有効活用して、アプリの利用促進に繋げましょう。
告知
最後にお知らせとなりますが、イーディーエーでは一緒に働くエンジニアを募集しております。
私は元々、自社開発企業にて開発を行っていましたが、自分の可能性を広げるべく、受託開発メインのイーディーエーに転職を決意しました。
イーディーエーに入社を決めた理由は、以下の3点です。
・多種多様な案件がある
・様々なことに挑戦できる
・かつフルリモートで勤務できる
様々な案件に挑戦し、スキルを身に付けたい。そしてフルリモートで仕事以外の時間も充実させたいという方は、ぜひ採用情報ページに足を運んでいただければと思います。
https://eda-inc.jp/recruit/
みなさまからのご応募をお待ちしております。