10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AppsFlyerのS2SイベントAPIを使って、サーバー側でアプリイベントを処理する

Last updated at Posted at 2023-03-20

やりたいこと

アカウント登録や購入処理など、サーバー側で行われる処理を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するコードになります。
※認証キーなど各種値は、無効なサンプル値です。

Post2AF.php
$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/
みなさまからのご応募をお待ちしております。

10
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?