概要:AppsFlyer ROI360のアプリ内購入およびサブスクリプション収益測定ソリューションを設定します。
ROI360アプリ内購入およびサブスクリプション収益測定について
ROI360アプリ内購入およびサブスクリプション収益測定ソリューションは、自動的にアプリ内購入および自動更新サブスクリプションからの収益を検証し測定し、顧客のライフサイクルの全体像と正確なROAS測定を提供します。
設定方法
通常、セットアップにはマーケター、アプリ開発者、場合によってはプロダクトまたはプロジェクトマネージャーを含む複数のペルソナが関与します。
ROI360アプリ内購入およびサブスクリプション収益測定ソリューションを設定するために必要な手順は次のとおりです:
- Google Playとの連携設定
- iOS App Storeとの連携設定
- 購入SDKコネクタの実装
- アプリ内課金とサブスクリプション収益の計測テスト
- SDKコネクタが搭載されたアプリバージョンのリリース
各手順の詳細は以下のセクションにあります。
ステップ1:Google Playとの連携設定
はじめる前に:
- アプリ内購入およびサブスクリプション収益測定の設定は、Google Cloud Platform、Google Play Console、およびAppsFlyer管理画面で実行される手順で構成されます。セットアップ中は、これら3つの場所のタブをすべて開いたままにすることをお勧めします。
- AppsFlyer管理画面でのセットアップには、管理者(アドミン)権限が必要です。
下のタブの手順に沿って、Google Play からの通知を設定します。
1.1 Google Playデベロッパーアカウントを Google Cloudプロジェクトに紐付け プロジェクト
前提条件:Google Play ConsoleへのアクセスとGoogle Cloud Projectへのアクセス権限
Google PlayデベロッパーアカウントをGoogle Cloud Projectへ接続:
- Google Play Consoleで、Google Playデベロッパーアカウントに移動します。
- アカウントをGoogle Cloudプロジェクトに紐付けます。手順:こちらのGoogleヘルプトピックを参照してください。
- Google PlayデベロッパーAPIを有効にします。手順:こちらのGoogleヘルプトピックを参照してください。
1.2. Google Cloud Platformでサービスアカウントを設定
前提条件:Google Cloud Platformへのアクセス権限。
サービスアカウントを設定する:
- サービスアカウントを作成または見つける:
-
サービスアカウントのプライベートキーをダウンロード:
- Google Cloud Platformで、サービスアカウントセクションに移動し、リストからアカウントを見つけ(作成したばかりのもの)、その他のアクションアイコンをクリックします。
-
キーの管理をクリックします。
-
キーの追加 > 新しいキーを作成をクリックしてください。
-
プライベートキーの作成ポップアップで、キーの種類を選択し、JSONを選択、作成をクリックします。
-
作成をクリックしてください。プライベートキーのJSONファイルがダウンロードされます。
- 後でAppsFlyerにアップロードするJSONキーファイルを保存します。 注意!このステップでキーを保存する必要があります。 後で取得することはできません。保存しないと、また新しいキーを作成しなければなりません。
1.3. サービスアカウントのプライベートキーをAppsFlyerにアップロード
1.4. Google Play ConsoleでAPIアクセス権限を設定
前提条件:Google Play Consoleへのアクセス権限。
注:サービスアカウントの認証情報と権限を設定した後、それらを使用できるようになるまでに最大24時間かかる場合があります。 これにより、後のステップでエラーが発生する可能性があります。
Google Play ConsoleでAPIアクセス権限を設定:
1.5 [推奨] Google Playストアの通知をAppsFlyerに直接送信
Google Playからアプリ内購入およびサブスクリプション収益データを受け取るには、 Google Playからアプリ内購入およびサブスクリプション収益データを受け取るには、 次のオプションのいずれかを選択します:
- (推奨)Google Playの通知を直接AppsFlyerに送信する。 このオプションでは、通知のコピーをあなたのエンドポイントに転送することはできません。 このオプションを選択する場合は、このステップの指示に従ってください。
- Google Playは最初に通知をあなたに送信し、それをそのままAppsFlyerに転送する。 次のステップ
前提条件:Google Play ConsoleおよびAppsFlyer管理画面へのアクセス権限。
Google Play通知を直接AppsFlyerへ送信する:
-
AppsFlyer管理画面左メニュー 設定
> 収益設定に移動し、アプリを選択します。購入とサブスクリプションタブで、AppsFlyerトピックがGoogleから直接RTDNメッセージを受け取ることを許可するを選択します。
-
AppsFlyerトピックをクリップボードにコピーします。
-
Google Play Console > Homeで、表示するアプリをを選択します。
ダッシュボードが開きます。
-
Monetize with Play >
Monetization setupに移動し、
Google Play Billingセクションで、
Enable real-time notificationがチェックされていることを確認してください。
-
トピック名フィールドに、コピーしたAppsFlyerトピックアドレスを貼り付けてください。
-
通知内容で、サブスクリプション、無効になった購入、およびすべての一回限りのプロダクトを選択します。
-
変更を保存をクリックします。
反映には時間がかかることがあります(場合によっては24時間かかることもあります)。 したがって、テストする際には変更が反映されるまで待機してください。
1.6 Google Playの通知をAppsFlyerに転送
注:このステップは、AppsFlyerを選択しなかった場合のみです。 このステップは、AppsFlyerを選択しなかった場合のみです。 推奨方法の手順を完了した場合、AppsFlyerがGoogle PlayからRTDN通知を直接受信するトピックを作成するためのステップをスキップしてください。
代わりに、AppsFlyerを既存のPUB/SUBトピックの購読者として設定したい場合は、以下の指示に従ってください。
前提条件:Google Play ConsoleおよびAppsFlyer管理画面へのアクセス権限。
Google Play通知を直接AppsFlyerへ送信する:
-
AppsFlyer管理画面左メニュー 設定> 収益設定に移動し、アプリを選択します。購入とサブスクリプションタブで、AppsFlyerトピックがGoogleから直接RTDNメッセージを受け取ることを許可するを選択します。
-
エンドポイントURLをクリップボードにコピーします。
-
Google Cloud Platformのプロジェクトで、 Pub/Subを検索します。
-
Pub/Subで トピックセクションに移動し、サブスクリプション専用の pub/sub トピックがあることを確認します。
-
Subscriptionセクションで、Create subscriptionをクリックします。
-
Subscription IDを入力します。
-
ドロップダウンから関連するサブスクリプションのパブ/サブスクライブのトピックを選択してください。
-
配信の種類 で、プッシュ を選択してください。
-
AppsFlyer管理画面でコピーしたエンドポイントURLを貼り付けます。
-
Expiry periodは、Never expireを選択します。
-
作成をクリックしてください。
-
サブスクリプションセクションに移動し、クリックして希望するトピック名を選択してください。
-
トピック名をクリップボードにコピーします。
-
Google Play Consoleで、Monetize with Play >
Monetization setup に移動し、Google Play Billingセクションの Topic nameフィールドに、前の手順でコピーしたトピック名を貼り付けます。
-
通知内容で、サブスクリプション、無効になった購入、およびすべての一回限りのプロダクトを選択します。
-
変更を保存をクリックします。
反映には時間がかかることがあります(場合によっては24時間かかることもあります)。 したがって、テストする際には変更が反映されるまで待機してください。
1.7. キーの検証とAppsFlyerでの収益測定タイプの選択
収益測定タイプを選択する:
-
AppsFlyer管理画面左メニュー
設定 > 収益設定 > 購入とサブスクリプションをクリックし、キーを検証します。
注意:- サービスアカウントの認証情報と権限を設定した後、それらを使用できるようになるまでに最大24時間かかる場合があります。 これにより、キーの検証または検証テストの実行時にエラーが発生する可能性があります。
- この24時間の待機時間を回避するために、Google Play Consoleで任意のアプリケーションに移動し、 マネタイズ > 製品 > サブスクリプション/アプリ内製品、 いずれかを変更します。例えば、商品の説明を編集して保存します。 これにより、アカウントの認証情報と権限が即座に更新されるはずです。 その後、必要に応じて変更を元に戻すことができます。
- いずれかまたは両方をオンにします:
- [オプション] AppsFlyerにすでにレポートされたトランザクションの重複排除を許可するをオンにします。 これにより、重複するトランザクションが記録されなくなります。
- [オプション] AppsFlyerが、未処理、延期、または返金された取引を自動的に追跡し、私の代わりに処理することを許可するにチェックを入れます。 これにより、AppsFlyerがすべてのトランザクションを正しく記録できるようになります。
-
保存をクリックします。
反映には時間がかかることがあります(場合によっては24時間かかることもあります)。 したがって、テストする際には変更が反映されるまで待機してください。
ステップ2:iOS App Storeとの連携設定
はじめる前に:
- アプリ内購入とサブスクリプション収益の設定は、App Store ConnectおよびAppsFlyer管理画面で実行される手順で構成されます。設定中は、App Store ConnectとAppsFlyerの両方のタブを開いたままにしてください。
- AppsFlyer管理画面でのセットアップには、管理者(アドミン)権限が必要です。
- あなたのiOSアプリは、アプリ内購入とサブスクリプションを処理するためのフレームワークを提供するStoreKit v1を必要とします。
以下のタブの指示に従って、App Storeからの通知を設定します。
2.1 ROI360のレシート検証におけるApp Storeの認証情報を更新
App Store Connectから以下の資格情報を取得し、AppsFlyerの収益設定画面に入力してください。
- In-App Purchaseキー
- キーID
- Issue ID
はじめる前に:
- 資格情報の設定には、App Store ConnectとAppsFlyerの両方で実行される手順が含まれます。 設定中は、App Store ConnectとAppsFlyerの両方のタブを開いたままにしてください。
- AppsFlyerでキーを設定するには、管理者権限が必要です。
iOS認証情報を設定する:
-
App Store Connectで、Users and Accessへアクセスします。
-
Users and Access > Integrationを開き、KeysリストからIn-App Purchaseを選択します。
-
+ をクリックして、新しいアプリ内購入キーを生成します。
- APIキーの名前を入力します。
- Generate をクリックします。
- 先ほど生成したキーの横にある Download In-App Purchase Key をクリックして、ダウンロードします。注意: キーは一度しかダウンロードできません。
- AppsFlyer管理画面 左メニュー 設定 > 収益設定 へ移動します。
- 左のリストから対象のアプリを選択します。
- 購入とサブスクリプションタブを開きます。
-
新しいキー の In-App Purchase Key項目で、アップロードアイコン
をクリックして p8ファイルをアップロードします。
-
App Store Connectで、先ほど生成したキーIDをコピーし、AppsFlyerのキーID用のベーシックレシート検証設定に貼り付けます。
-
App Store Connect で、Issuer ID をコピーし、AppsFlyer管理画面「購入とサブスクリプション」タブでIssuer ID項目に貼り付けます。 注: Issuer IDがページ上部に表示されない場合は、App Store Connect APIキーを(任意のアクセスレベルで)作成します。その後、アプリ内購入キーのページ上部にIssue IDが表示されます。
-
AppsFlyerの購入とサブスクリプションの設定で、キーの検証をクリックして、入力したキーが正しいことを確認します。
注意:キーの検証は、アプリがまだApp Storeに公開されていない場合、機能しない可能性があります。
2.2 [推奨] App Storeの通知を直接AppsFlyerに送信
Appleはサーバー通知を1つのエンドポイントにのみ送信できます。AppsFlyerのエンドポイント(ベストプラクティス)またはあなたのエンドポイントに(その後、通知をAppsFlyerに転送します)。
推奨オプションを選択した場合、通知をAppsFlyerに直接送信するには、以下の指示に従ってください。
あなたのエンドポイントからAppsFlyerに通知を転送することを選択した場合、次のステップに進んでください。
AppsFlyerに直接通知を送信する:
-
AppsFlyerの収益設定で、AppsFlyerサーバー通知エンドポイントをコピーして、App Store Connectの設定に入力します。
-
App Store Connectのアプリ情報セクションで、App Storeサーバー通知までスクロールし、本番サーバーURLの横にある編集をクリックします。
-
AppsFlyerからコピーしたURLを貼り付け、バージョン2通知を選択し、保存をクリックします。
-
App Store Connectのアプリ情報セクションで、App Storeサーバー通知までスクロールし、サンドボックスサーバーURLの横にある編集をクリックします。
-
AppsFlyerからコピーしたURLを貼り付け、バージョン2通知を選択し、保存をクリックします。
-
通知のコピーを受け取りたい場合は、AppsFlyerで、通知転送エンドポイントを入力し、クリックして保存してください。
2.3 [オプション] エンドポイントからAppsFlyerに通知を転送
注:このステップは、推奨された方法で通知を直接AppsFlyerに送信しなかった場合のみです。 推奨された方法の手順を完了した場合は、このステップをスキップしてください。
代わりに、エンドポイントに通知を送信し、その後エンドポイントからAppsFlyerに転送したい場合は、以下の指示に従ってください。
エンドポイントからAppsFlyerにサーバー通知を転送する:
-
App Store Connectのアプリ情報セクションで、App Storeサーバー通知までスクロールし、本番サーバーURLの横にある編集をクリックします。
-
エンドポイントURLを貼り付け、バージョン2の通知を選択し、保存をクリックします。
-
App Store Connectのアプリ情報セクションで、App Storeサーバー通知までスクロールし、サンドボックスサーバーURLの横にある編集をクリックします。
-
エンドポイントURLを貼り付け、バージョン2通知を選択し、保存をクリックします。
- バックエンドからAppsFlyer通知エンドポイントURLへのAppleサーバー通知の送信を設定します。 注:リクエストは、App Storeから受信した通りに正確に、そのままする必要があります。詳細:Appleのフォーマット要件を確認してください
2.4 AppsFlyerで収益測定タイプを選択
- AppsFlyerのアプリ内課金とサブスクリプション収益の設定ページで、次のいずれかまたは両方をオンにしてください:
-
[オプション] AppsFlyerにすでにレポートされたトランザクションの重複排除を許可するをオンにします。
これにより、重複するトランザクションが記録されなくなります。 - [オプション] AppsFlyerがトランザクションの返金に対して自動的にマイナスの収益をレポートすることを許可するにチェックを入れます。これにより、返金、キャンセルなどが記録されます。
-
[オプション] ファミリーシェアリング購入の収益を重複しないようにするにチェックを入れます。
これにより、ファミリーシェアリング購入のために重複した収益が記録されないことが保証されます。他の家族メンバーの収益イベントには、パラメータ purchase_ownership_type=FAMILY_SHARED が含まれ、収益はゼロとして表示されます。
ステップ3:購入SDKコネクタの実装
SDKコネクタを実装する方法:
- Android開発者にAppsFlyerの購入SDKコネクタを実装するよう指示し、購入SDKコネクタの実装手順ガイドを送信してください。
ステップ4:アプリ内課金とサブスクリプション収益の計測テスト
サンドボックス環境でアプリ内課金とサブスクリプション収益の実装を検証して、SDKコネクタが適切に実装されていること、およびサーバー通知が適切に設定され、AppsFlyerによって受信されていることを確認します。
サンドボックス環境に関する考慮事項
サンドボックス環境:
- 初回の購入イベントのみが、SDKコネクタがAppsFlyerによって記録されるイベントを生成します。アプリ内購入イベントはaf_purchase_sandbox_sdkとレポートされます。サブスクリプションイベントはaf_ars_sandbox_sdkとレポートされます。
- 受信サーバー通知は、SDKコネクタが最初に元のトランザクションを記録する場合にのみ処理されます。この場合、アプリ内購入イベントが生成され、af_purchase_sandbox_s2sとレポートされます。サブスクリプションは、イベント名 af_ars_sandbox_s2s と生成されます。
- SDKコネクタが最初に元のトランザクションを記録しなかったサーバー通知に対してイベントは生成されません。
- サンドボックスイベントの収益は 0 で計上されます。
- iOSの場合、af_purchase_sandbox_sdkイベントがaf_sandbox_revenueパラメータを含み、収益値がある場合、これは本番環境では通常のaf_purchaseイベントであることを意味します。収益がない場合、本番環境ではaf_purchase_freeイベントになります。
- Androidの場合、SDKのサンドボックス環境が構成されていない場合でも、ライセンステスターによって実行されるテストではサンドボックスイベントが発生します。
アプリ内購入とサブスクリプション収益の計測テスト
前提条件:
- iOSの場合、App Store connectのApp Store Server Notificationsで、AppsFlyerのエンドポイントがSandbox ServerのURLとして設定されていることを確認してください。
アプリ内購入とサブスクリプションの収益をテストする:
- 開発者に、Android、iOS、および Unityの手順に従って、SDKコネクタでサンドボックス環境を構成するように依頼してください。
- Google PlayのLicense Tester、またはiOSのTestFlightを使用して、テスト購入またはサブスクリプションを開始してください。
注記:任意のサブスクリプション製品は、各テストデバイスから一度だけテストできます。言い換えれば、同じデバイスから同じサブスクリプションの複数のテスト購入を登録することはできず、計測もされません。 - イベントがAppsFlyerのレポートに反映されていることを確認してください。 AppsFlyer管理画面 左メニュー マイダッシュボード > いずれかのレポートに移動し、チャートやテーブルで、テストしたアプリ内イベント指標を選択してデータを確認します。アプリ内購入イベントはaf_purchase_sandbox_sdkとレポートされます。サブスクリプションイベントはaf_ars_sandbox_sdkと呼ばれます。これらのイベントには次のものが含まれます:
- 収益値: 0(実際のAppsFlyerレポートを歪めないようにするため)
- af_sandbox_revenueパラメーターには、購入された製品の収益値が含まれており、正しい収益がレポートされるように確認できます。
-
Google PlayのライセンステスターとiOSのTestFlightを使用して、テストの返金、サブスクリプションの更新、またはサブスクリプションのキャンセルイベントをテストします。
注:サブスクリプション計測をテストしている場合は、AppsFlyerがサーバーからサーバー通知を受け取るまでしばらくお待ちください。通常、これは最初の購入後数分以内に発生します。 - イベントがAppsFlyerのレポートに反映されていることを確認してください。 AppsFlyer管理画面 左メニュー マイダッシュボード > いずれかのレポートに移動し、チャートやテーブルで、テストしたアプリ内イベント指標を選択してデータを確認します。自動更新可能なサブスクリプション購入はaf_ars_sandbox_s2sとレポートで表示されます。イベントには次のものが含まれます:
- 収益値: 0(実際のAppsFlyerレポートを歪めないようにするため)
- af_sandbox_revenueパラメーターには、購入された製品の収益値が含まれており、正しい収益がレポートされるように確認できます。
ステップ5:SDKコネクタが搭載されたアプリバージョンのリリース
前のステップのすべてが構成され、AppsFlyerの購入SDKコネクタがアプリに実装されている場合、開発者にSDKコネクタが実装されたアプリバージョンをリリースするように指示してください。
ただし、開発者が新しいアプリバージョンをリリースする前に、次のことを確認してください:
- アプリ内購入またはサブスクリプションとして計測するアプリ内イベントが、AppsFlyerで設定した検証ルールのいずれかによってブロックされていないこと。
- 開発者は、すべてのサンドボックスフラグがfalseとしてマークする必要があります。
-
iOSの場合、App Store connectのApp Store Server Notificationsで、AppsFlyerのエンドポイントがSandbox Server URLとして設定されていることを確認してください。
SDKコネクタが実装されたアプリがリリースされると、アプリ内購入およびサブスクリプションイベントが生成され、すべてのAppsFlyerダッシュボードで利用可能になり、収益ETLを含む集計データおよびローデータレポートにも反映されます。
注:イベントは、SDKコネクタを含むアプリのバージョンに更新したユーザーのみに生成されます。その結果、更新されたアプリバージョンの完全な採用まで、アプリの収益データとストアデータの間に不一致が予想されます。