リッチアプリ内イベントにより、インストール後のイベントを計測し、流入経路であるメディアに成果を紐づけることができます。
ユーザーが会員登録を完了したり、チュートリアルを完了したり、ショッピングカートに商品を追加したり、購入手続きを行った場合に、アプリ内イベントを詳細とともに計測できます。
リッチアプリ内イベントは、アプリユーザーの価値やさまざまなメディアソースからのトラフィックの質を判断するのに理想的なツールです。リッチアプリ内イベントの実装は任意ですが、実装されることを推奨しています。また、ローデータのアライメントを向上するために、すべてのプラットフォームで同じアプリ内イベントの名前と構造を定義することを推奨しています。
ユーザーのプライバシーを尊重する
- AppsFlyerでは、お客様とアプリユーザーのプライバシーを重視し、尊重しています。
- 当社は、個人を特定できる情報 (PII) を収集したり受け付けたりしておりません。
- ユーザーのプライバシーを保護するために、アプリ内イベントの値に直接個人を識別できる情報を入力しないでください。例えば、メールアドレス、名前、ID番号、一部の場所に関する郵便番号などです。
logEvent API
アプリ内イベントは、イベント名とイベントパラメータで構成されています。
イベント名には任意の文字列を使用できますが、AppsFlyer SDKでは、推奨されるイベント名の一覧表と定義を提供しています(推奨イベント名とパラメータ名のリストについては、イベントの種類タブを参照)。
イベント名では、大文字と小文字が区別されます。つまり、af_purchase と af_PURCHASE は2つの異なるイベントとしてローデータに表示されます。ただし、集計レポート(例えばオーバービュー、イベント)では、1つのイベントとして表示される場合があります。したがって、イベント名とパラメータ名には、小文字のみを使用することを推奨しています。
イベント値の長さは、最大1,000文字に制限されています。この制限を超えないでください。超過分は切り捨てられる可能性があります。
シンタックス:
public static void logEvent(Context context, String eventName, Map eventValues)
-
Context getApplicationContext()
を使用してください。- eventName
- イベント名を定義するための任意の文字列です。
- eventValues
- リッチイベントを構成するイベントパラメーターのマップ。
- (void) logEvent:(NSString *)eventName withValues:(NSDictionary*)values
-
eventName - イベント名を定義するための任意の文字列です。
- values
- リッチイベントを構成するイベントパラメーターのディクショナリ。
ハイブリッドアプリのアプリ内イベント
ネイティブビューとHTMLコンテンツを組み合わせたハイブリットアプリもアプリ内イベントを計測できます。ただし、SDKはネイティブ側からのみイベントを送信できるため、ディベロッパーはすべてのイベントデータをネイティブコードに転送する必要があります。手順については、ハイブリットアプリ向けのアプリ内イベントに関するガイドをご覧ください。
警告
ネットワークによっては、イベント名で使用できる文字に独自の制限事項があります。問題を防ぐために、アプリ内イベントの名前には、小文字の英数字 (a-zと0-9) のみを使用してください。
アプリ内イベントの種類
本セクションでは、各イベントの種類ごとに、Facebook、Twitter、Criteo、Google Ads、Snapchatへパラメータをマッピングする際の、アプリ内イベントの推奨の構成について説明しています。
- 次のパラメーターは、リッチアプリ内イベントの値の一部として、ローデータレポートでのみ確認できます。なお、ローデータレポートはプレミアム機能です。
- 参照URLをイベント値として含める場合は、URLエンコードする必要があります。
注意
Android (Java)、iOS (Obj-C and Swift)、Unityの業種別コードスニペットは、この記事の 業種別タブ をご覧ください。
推奨するアプリ内イベントの構造
次のアプリ内イベントは AFInAppEventType インターフェースの一部として定義されており、これらを使用することを推奨しています。
レベル達成
イベント名: af_level_achieved
説明: ゲームレベルのイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.LEVEL_ACHIEVED
イベント名定数 (iOS): AFEventLevelAchieved
Facebookにマッピングされるイベント: fb_mobile_level_achieved
Twitterにマッピングされるイベント: LEVEL_ACHIEVED
Criteoにマッピングされるイベント: userLevel
Google Ads: level_up
Snapchat: LEVEL_COMPLETE
推奨項目: af_level、af_score
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_level | fb_level | level | ui_level | level_up | level |
af_score | - | - | - | score | - |
支払情報の追加
イベント名: af_add_payment_info
説明: 支払い情報の設定完了の計測に使用
イベント名定数 (Android): AFInAppEventType.ADD_PAYMENT_INFO
イベント名定数 (iOS): AFEventAddPaymentInfo
Facebookにマッピングされるイベント: fb_mobile_add_payment_info
Twitterにマッピングされるイベント: ADDED_PAYMENT_INFO
Criteoにマッピングされるイベント: なし
Google Ads: add_payment_info
Snapchat: ADD_BILLING
推奨項目: af_success
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_success | fb_success | user_payment_info | - | add_payment_info | success |
カート追加
イベント名: af_add_to_cart
説明: 特定の商品をカートに追加した際の計測に使用
イベント名定数 (Android): AFInAppEventType.ADD_TO_CART
イベント名定数 (iOS): AFEventAddToCart
Facebookにマッピングされるイベント: fb_mobile_add_to_cart
Twitterにマッピングされるイベント: ADD_TO_CART
Criteoにマッピングされるイベント: viewBasket
Google Ads: add_to_cart
Snapchat: ADD_CART
推奨項目: af_price、af_content_type、af_content_id、af_content、af_currency、af_quantity
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snap | ||
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | price** | price | price |
af_content_type | fb_content_type | content_type | - | item_category | item_category |
af_content_id | fb_content_id | content_id | id | item_id | item_ids |
af_content | fb_content | - | - | - | - |
af_currency | fb_currency | price_currency | currency | currency_code | currency |
af_quantity | - | number_items | quantity | quantity | number_items |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
お気に入り(ウィッシュリスト)追加
イベント名: af_add_to_wishlist
説明: 特定の商品の、お気に入り(ウィッシュリスト)追加のイベント計測に使用
イベント名定数 (Android): AFInAppEventType.ADD_TO_WISH_LIST
イベント名定数 (iOS): AFEventAddToWishlist
Facebookにマッピングされたイベント: fb_mobile_add_to_wishlist
Twitterにマッピングされたイベント: ADD_TO_WISHLIST
Criteoにマッピングされるイベント: なし
Google Ads: add_to_wishlist
Snapchat: ADD_TO_WISHLIST
推奨項目: af_price、af_content_type、af_content_id、af_content、af_currency、af_quantity
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | - | 価格 | price |
af_content_type | fb_content_type | content_type | - | item category | item_category |
af_content_id | fb_content_id | content_id | - | item_id | item_ids |
af_content | fb_content | - | - | - | - |
af_currency | fb_currency | price_currency | - | currency_code | currency |
af_quantity | - | number_items | - | quantity | number_items |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
登録完了
イベント名: af_complete_registration
説明: ユーザー登録の計測に使用
イベント名定数 (Android): AFInAppEventType.COMPLETE_REGISTRATION
イベント名定数 (iOS): AFEventCompleteRegistration
Facebookにマッピングされたイベント: fb_mobile_complete_registration
Twitterにマッピングされたイベント: SIGN_UP
Criteoにマッピングされるイベント: なし
Google Ads: sign_up
Snapchat: SIGN_UP
推奨項目: af_registration_method
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_registration_ method |
fb_registration_ method |
registration_method | - | registration_method | sign_up_method |
チュートリアル完了
イベント名: af_tutorial_completion
説明: チュートリアル完了の計測に使用
イベント名定数 (Android): AFInAppEventType.TUTORIAL_COMPLETION
イベント名定数 (iOS): AFEventTutorial_completion
Facebookにマッピングされたイベント: fb_mobile_tutorial_completion
Twitterにマッピングされたイベント: TUTORIAL_COMPLETE
Criteoにマッピングされるイベント: なし
Google Ads: tutorial_complete
Snapchat: COMPLETE_TUTORIAL
推奨項目: af_success, af_content_id, af_content
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_success | fb_success | - | - | success | success |
af_content_id | fb_content_id | content_id | - | item_id | item_ids |
af_content | fb_content | - | - | - | - |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
チェックアウト開始
イベント名: af_initiated_checkout
説明: チェックアウトイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.INITIATED_CHECKOUT
イベント名定数 (iOS): AFEventInitiatedCheckout
Facebook にマッピングされた イベント: fb_mobile_initiated_checkout
Twitterにマッピングされたイベント: CHECKOUT_INITIATED
Criteoにマッピングされるイベント: viewBasket
Google Ads: begin_checkout
Snapchat: START_CHECKOUT
推奨項目: af_price、af_content_type、af_content_id、af_content、af_quantity、af_payment_info_available、af_currency
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | price | price | price |
af_content_type | fb_content_type | content_type | - | item_category | item_category |
af_content_id | fb_content_id | content_id | id | item_id | item_ids |
af_content | fb_content | - | - | - | |
af_currency | fb_currency | price_currency | currency | currency_code | currency |
af_quantity | fb_num_items | number_items | quantity | quantity | number_items |
af_payment_info_ |
fb_payment_info_ available |
user_payment_ info |
- | payment_info_ available |
payment_info_available |
af_content_list | fb_content_id | - | - | item_id | - |
af_date_a- | fb_checkin_date | - | din | start_date | - |
af_date_b | fb_checkout_date | - | dout | end_date | - |
af_departing_ departure_date |
fb_departing_ departure_date |
- | - | - | - |
af_returning_ departure_date |
fb_returning_ departure_date |
- | - | - | - |
af_destination_a | fb_origin_airport | - | - | origin | - |
af_destination_b | fb_destination_airport | - | - | destination | - |
af_destination_list | fb_destination_ids | - | - | - | - |
af_city | fb_city | - | - | - | - |
af_region | fb_region | - | - | - | - |
af_country | fb_country | - | - | - | - |
af_departing_ arrival_date |
fb_departing_arrival_ date |
- | - | - | - |
af_returning_- arrival_date |
fb_returning_arrival_ date |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ destinations |
- | - | - | - |
af_travel_start | fb_travel_start | - | - | - | - |
af_travel_end | fb_travel_end | - | - | - | - |
af_num_adults | fb_num_adults | - | - | - | - |
af_num_childr-en | fb_num_children | - | - | - | - |
af_num_infant-s | fb_num_infants | - | - | - | - |
af_class | fb_travel_class | - | - | travel_class | - |
af_suggested_hotels | fb_suggested_hotels | - | - | - | - |
af_user_score | fb_user_score | - | - | - | - |
af_hotel_score | fb_hotel_score | - | - | - | - |
af_price | fb_purchase_value | - | - | price | - |
af_purchase_currency | fb_purchase_currency | - | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ ratings |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ range |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ neighborhoods |
- | - | - | - |
af_preferred_-num_ stops |
fb_preferred_num_ stops |
- | - | - | - |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
購入/課金
イベント名: af_purchase
説明: 購入イベント(および収益に関するイベント)の計測に使用
イベント名定数 (Android): AFInAppEventType.PURCHASE
イベント名定数 (iOS): AFEventPurchase
Facebookにマッピングされたイベント: fb_mobile_purchase
Twitterにマッピングされたイベント: PURCHASE
Criteoにマッピングされたイベント: transactionConfirmation
Google Ads: in_app_purchase
Snapchat: PURCHASE
推奨項目: af_revenue、af_content_type、af_content_id、af_content、af_price、af_quantity、af_currency、af_order_id
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | Partnerize | ||
---|---|---|---|---|---|---|
af_revenue* |
_valueToSum |
price_micro** |
ui_revenue |
value |
price |
- |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
カテゴリ |
af_content_id |
fb_content_id |
content_id |
id |
item_id |
item_ids |
- |
af_content |
fb_content |
- |
- |
- |
- |
Custom conversion meta |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
通貨 |
af_quantity |
fb_num_items |
number_items |
quantity |
quantity |
number_items |
quantity |
af_validated |
- |
- |
- |
VALIDATED |
success |
Voucher |
af_receipt_id |
- |
- |
transaction_id |
transaction_id |
- |
Conversion Reference |
af_order_id |
fb_order_id |
- |
- |
order_id |
transaction_id |
Clickref |
af_content_list |
fb_content_id |
- |
- |
item_id |
- |
Custom item meta |
af_date_a |
fb_checkin_date |
- | din | start_date | - | - |
af_date_b |
fb_checkout_date |
- | dout | end_date | - | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | - | - |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - | - |
af_destination_a |
fb_origin_airport |
- | - | origin | - | - |
af_destination_b |
fb_destination_ |
- | - | destination | - | - |
af_destination_list |
fb_destination_ids |
- | - | - | - | - |
af_city |
fb_city |
- | - | - | - | - |
af_region |
fb_region |
-- | -- | -- | -- | - |
af_country |
fb_country |
- | - | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - | - |
af_suggested_ hotels |
fb_suggested_ |
- | - | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - | - |
af_price |
fb_purchase_value |
- | price** | price | - | value |
af_purchase_ currency |
fb_purchase_ |
- | - | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - | - |
* af_revenue は、AppsFlyerプラットフォームで収益としてカウントされます。また、キャンセルや返金によるマイナスの収益もカウントされます。
**af_price: af_priceは収益としてカウントされない収益パラメータとして使用できます(「カートに追加」イベント内など)。このパラメータは、個々の商品の価格を示します。すべての購入の合計金額はaf_revenueパラメータの下に表示されます。
AppsFlyerでサポートされている通貨記号の一覧を確認するには、こちらをクリックしてください。
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
購読
イベント名:af_subscribe
説明: 有料サブスクリプション購入の計測に使用
イベント名定数 (Android): AFInAppEventType.SUBSCRIBE
イベント名定数 (iOS): AFEventSubscribe
Facebookにマッピングされるイベント: Subscribe
Twitterにマッピングされたイベント: なし
Criteoにマッピングされるイベント: なし
Google Ads:なし
Snapchat: SUBSCRIBE
推奨項目: af_revenue、af_currency
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_revenue |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
af_subscription_id |
subscription_id |
- |
- |
- |
- |
トライアル開始
イベント名: af_start_trial
説明: 製品の無料トライアル開始の計測に使用
イベント名定数 (Android): AFInAppEventType.START_TRIAL
イベント名定数 (iOS): AFEventStartTrial
Facebookにマッピングされるイベント: StartTrial
Twitterにマッピングされたイベント: なし
Criteoにマッピングされるイベント: なし
Google Ads:なし
Snapchat: START_TRIAL
推奨項目: af_price、af_currency
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
af_subscription_id |
subscription_id |
- |
- |
- |
- |
Rate
イベント名: af_rate
説明: アプリ/商品の評価イベントの計測に使用
イベント名定数 (Android): AFInAppEventType.RATE
イベント名定数 (iOS): AFEventRate
Facebookにマッピングされたイベント: fb_mobile_rate
Twitterにマッピングされたイベント: RATED
Criteoにマッピングされるイベント: なし
Google Ads: submit_rating
Snapchat: RATE
推奨項目: af_rating_value、af_content_type、af_content_id、af_content、af_max_rating_value
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_rating_value |
_valueToSum |
price_micro |
- |
value |
- |
af_content_type |
fb_content_type |
content_type |
- |
content_type |
item_category |
af_content_id |
fb_content_id |
content_id |
- |
content_id |
item_ids |
af_content |
fb_content |
- |
- |
- |
- |
af_max_rating_value |
fb_max_rating_value |
max_rated_value |
- |
max_rating |
- |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
検索
イベント名: af_search
説明: 検索イベントの計測に使用
イベント名定数 (Android): AFInAppEventType.SEARCH
イベント名定数 (iOS): AFEventSearch
Facebookにマッピングされたイベント: fb_mobile_search
Twitterにマッピングされたイベント: SEARCH
Criteoにマッピングされたイベント: viewSearch
Google Ads: view_search_results
Google Ads: SEARCH
推奨項目: af_content_type, af_search_string, af_success
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_search_string |
fb_search_string |
search_string |
- |
search_term |
search_string |
af_date_a |
fb_checkin_date |
- |
din |
start_date |
- |
af_date_b |
fb_checkout_date |
- |
dout |
end_date |
- |
af_destination_a |
fb_origin_airport |
- |
- |
origin |
- |
af_destination_b |
fb_destination_airport |
- |
- |
destination |
- |
af_success |
fb_success |
- |
- |
success |
success |
af_content_list |
fb_content_id |
- |
- |
item_id |
- |
af_departing_ departure_date |
fb_departing_ |
- | - | - | - |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - |
af_destination_list |
fb_destination_ids |
- | - | - | - |
af_city |
fb_city |
- | - | - | - |
af_region |
fb_region |
- | - | - | - |
af_country |
fb_country |
- | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - |
af_travel_end- |
fb_travel_end |
- | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - |
af_suggested_hotels |
fb_suggested_hotels |
- | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - |
af_price |
fb_purchase_value |
- | - | price | - |
af_purchase_currency |
fb_purchase_currency |
- | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - |
クレジット利用
イベント名: af_spent_credits
説明: クレジットが使用されたイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.SPENT_CREDIT
イベント名定数 (iOS): AFEventSpentCredits
Facebookにマッピングされたイベント: fb_mobile_spent_credits
Twitterにマッピングされたイベント: SPENT_CREDITS
Criteoにマッピングされたイベント: transactionConfirmation
Google Ads: spend_virtual_currency
Snapchat: SPENT_CREDITS
推奨項目: af_price、af_content_type、af_content_id、af_content
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price |
_valueToSum |
price_micro* |
price** |
price |
price |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_content_id |
fb_content_id |
content_id |
item_id |
item_id |
item_ids |
af_content |
fb_content |
- |
- |
|
- |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
アチーブメントの解除 (達成)
イベント名: af_achievement_unlocked
説明: アチーブメントの解除(達成)のイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.ACHIEVEMENT_UNLOCKED
イベント名定数 (iOS): AFEventAchievementUnlocked
Facebookにマッピングされたイベント: fb_mobile_achievement_unlocked
Twitterにマッピングされたイベント: ACHIEVEMENT_UNLOCKED
Criteoにマッピングされたイベント: achievement
Google Ads: unlock_achievement
Snapchat: ACHIEVEMENT_UNLOCKED
推奨項目: af_description
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
fb_description |
description |
ui_achievement |
description |
description |
コンテンツ閲覧
イベント: af_content_view
説明: コンテンツ閲覧のイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.CONTENT_VIEW
イベント名定数 (iOS): AFEventContentView
Facebookにマッピングされたイベント: fb_mobile_content_view
Twitterにマッピングされたイベント: CONTENT_VIEW
Criteoにマッピングされたイベント: viewProduct
Google Ads: view_item
Snapchat: VIEW_CONTENT
推奨項目: af_price、af_content_type、af_content_id、af_content、af_currency
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snap | ||
---|---|---|---|---|---|
af_price |
_valueToSum |
price_micro* |
price |
price |
price |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_content_id |
fb_content_id |
content_id |
id |
item_id |
item_ids |
af_content |
fb_content |
- |
- |
- |
- |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
af_content_list |
fb_content_id |
- |
- |
item_id | - |
af_date_a |
fb_checkin_date |
- | din | start_date | - |
af_date_b |
fb_checkout_date |
- | dout | end_date | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - |
af_destination_a |
fb_origin_airport |
- | - | origin | - |
af_destination_b |
fb_destination_ |
- | - | destination | - |
af_destination_list |
fb_destination_ids |
- | - | - | - |
af_city |
fb_city |
- | - | - | - |
af_region |
fb_region |
- | - | - | - |
af_country |
fb_country |
- | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - |
af_suggested_hotels |
fb_suggested_hotels |
- | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - |
af_price |
fb_purchase_value |
- | - | price | - |
af_purchase_currency |
fb_purchase_currency |
- | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - |
リスト閲覧
イベント名: af_list_view
説明: リスト閲覧のイベントの計測に使用
イベント名定数 (Android): use the string "af_list_view" instead:
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
イベント名定数 (iOS): AFEventListView
Facebookにマッピングされたイベント:
Twitterにマッピングされたイベント:
Criteoにマッピングされたイベント: viewListing
Google Ads: view_item_list
Snapchat: LIST_VIEW
推奨項目: af_content_type、af_content_list
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_content_type |
- |
- |
- |
item_Category |
item_category |
af_content_list |
- |
- |
- |
item_id |
- |
広告クリック
イベント名: af_ad_click
説明: アプリに表示される広告の広告クリックの計測に使用
イベント名定数 (Android): AFInAppEventType.AD_CLICK
イベント名定数 (iOS): AFEventAdClick
Facebookにマッピングされるイベント: AdClick
Twitterにマッピングされたイベント: なし
Criteoにマッピングされるイベント: なし
Google Ads:なし
Snapchat: AD_CLICK
推奨項目: af_adrev_ad_type
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
広告閲覧
イベント名:af_ad_view
説明: アプリに表示される広告の広告閲覧の計測に使用
イベント名定数 (Android): AFInAppEventType.AD_VIEW
イベント名定数 (iOS): AFEventAdView
Facebook Mapped Event: AdImpression
Twitterにマッピングされたイベント: なし
Criteoにマッピングされるイベント: なし
Google Ads:なし
Snapchat: AD_VIEW
推奨項目: af_adrev_ad_type
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
旅行の予約
イベント名: af_travel_booking
説明: 旅行の予約イベント(および関連する収益)の計測に使用
イベント名定数 (Android): AFInAppEventType.TRAVEL_BOOKING
イベント名定数 (iOS): AFEventTravelBooking
Facebookにマッピングされたイベント: fb_mobile_purchase
Twitterにマッピングされたイベント: PURCHASE
Criteoにマッピングされたイベント: transactionConfirmation
Google Ads: ecommerce_purchase
Snapchat: RESERVE
推奨項目: af_revenue、af_destination_a、af_destination_b、af_class、af_description、af_customer_user_id、af_content_type、af_content_id、af_date_a、af_date_b
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_revenue* |
_valueToSum |
price_micro** |
price*** |
value |
price |
af_customer_user_id |
- |
- |
cid |
customer_user_ |
- |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_content_id |
fb_content_id |
content_id |
- |
item_id |
item_ids |
af_class |
- |
- |
- |
travel_class |
- |
af_date_a |
- |
- |
din |
start_date |
- |
af_date_b |
- |
- |
dout |
end_date |
- |
af_destination_a |
- |
- |
- |
origin |
- |
af_destination_b |
- |
- |
- |
destination |
- |
af_success |
fb_success |
- |
- |
success |
|
af_content_list |
fb_content_ids |
- |
- |
item_id | - |
af_date_a |
fb_checkin_date |
- | - | start_date | - |
af_date_b |
fb_checkout_date |
- | - | end_date | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | |
af_returning_ departure_date |
fb_returning_ |
- | - | - | |
af_destination_a |
fb_origin_airport |
- | - | origin | - |
af_destination_b |
fb_destination_airport |
- | - | destination | - |
af_destination_list |
fb_destination_ids |
- | - | - | |
af_city |
fb_city |
- | - | - | - |
af_region |
fb_region |
- | - | - | - |
af_country |
fb_country |
- | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - |
af_suggested_hotels |
fb_suggested_hotels |
- | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - |
af_price |
fb_purchase_value |
- | - | price | - |
af_purchase_currency |
fb_purchase_currency |
- | - | - | - |
af_preferred_star_ ratings- |
fb_preferred_star_ |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_star_ |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - |
af_preferred_num_ stops- |
fb_preferred_num_ |
- | - | - | - |
af_order_id |
fb_order_id |
- | - | order_id | transaction_id |
シェア
イベント名: af_share
説明: 共有イベントの計測に使用
イベント名定数 (Android): AFInAppEventType.SHARE
イベント名定数 (iOS): AFEventShare
Facebookにマッピングされた イベント: なし
Twitterにマッピングされたイベント: SHARE
Criteoにマッピングされるイベント: なし
Google Ads: share
Snapchat: SHARE
推奨項目: af_description
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
招待
イベント名: af_invite
説明: 招待(ソーシャル)イベントの計測に使用
イベント名定数 (Android): AFInAppEventType.INVITE
イベント名定数 (iOS): AFEventInvite
Facebookにマッピングされたイベント: なし
Twitterにマッピングされたイベント: INVITE
Criteoにマッピングされるイベント: なし
Google Ads: invite
Snapchat: INVITE
推奨項目: なし
項目マッピング:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
ログイン
イベント名: af_login
説明: ユーザーログインイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.LOGIN
イベント名定数 (iOS): AFEventLogin
Facebookにマッピングされたイベント: なし
Twitterにマッピングされたイベント: LOGIN
Criteoにマッピングされるイベント: なし
Google Ads: login
推奨項目: なし
リエンゲージメント
Event Name:af_re_engage
説明: ユーザーのリエンゲージメントイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.RE_ENGAGE
イベント名定数 (iOS): AFEventReEngage
Facebookにマッピングされた イベント: なし
Twitterにマッピングされたイベント: RE_ENGAGE
Criteoにマッピングされるイベント: なし
Google Ads: custom_event
推奨項目: なし
項目マッピング:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_description |
- |
description |
- |
description |
プッシュ通知からのアプリ起動
イベント名: af_opened_from_push_notification
説明: プッシュ通知からアプリを開いたイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.OPENED_FROM_PUSH_NOTIFICATION
イベント名定数 (iOS): AFEventOpenedFromPushNotification
Facebookにマッピングされたイベント: なし
Twitterにマッピングされたイベント: なし
Criteoにマッピングされるイベント: なし
Google Ads: notification_open
推奨項目: なし
アップデート
イベント名: af_update
説明: アップデートイベントの計測に使用
イベント名定数 (Android): AFInAppEventType.UPDATE
イベント名定数 (iOS): AFEventUpdate
Facebookにマッピングされたイベント: なし
Twitterにマッピングされたイベント: UPDATE
Criteoにマッピングされるイベント: なし
Google Ads: app_update
推奨項目: af_content_id
項目マッピング:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_content_id |
- |
content_id |
- |
item_id |
*複数のアイテムを含むイベントを計測するには、こちらをクリックしてください。
上記で説明したさまざまなネットワークの既定イベントにマッピングできるイベントに加えて、Facebookは属性なしで送信できる追加イベントを提供しています。
オプションパラメーター
各イベントと一緒に渡すことができる推奨パラメーターのほか、以下のパラメーターがAFInAppEventParameterName
インターフェースの一部として定義されます。これらはeventディクショナリのValueの一部として送られます。
パラメーター文字列定数 | パラメーター文字列名 | 推奨される値の型 |
---|---|---|
REVENUE (詳細) |
af_revenue |
Float |
PRICE (詳細) |
af_price |
Float |
LEVEL |
af_level |
Int |
SUCCESS |
af_success |
Boolean |
CONTENT_TYPE |
af_content_type |
String |
CONTENT_LIST |
af_content_list |
String配列 |
CONTENT_ID |
af_content_id |
String |
CURRENCY |
af_currency |
String |
REGISTRATION_METHOD |
af_registration_method |
String |
QUANTITY |
af_quantity |
Int |
PAYMENT_INFO_AVAILABLE |
af_payment_info_available |
Boolean |
RATING_VALUE |
af_rating_value |
Float |
MAX_RATING_VALUE |
af_max_rating_value |
Float |
SEARCH_STRING |
af_search_string |
String |
DESCRIPTION |
af_description |
String |
SCORE |
af_score |
Int |
DESTINATION_A |
af_destination_a |
String |
DESTINATION_B |
af_destination_b |
String |
CLASS |
af_class |
String |
DATE_A |
af_date_a |
String |
DATE_B |
af_date_b |
String |
EVENT_START |
af_event_start |
Unix時間 (00:00:00) |
EVENT_END |
af_event_end |
Unix時間 (00:00:00) |
LATITUDE |
af_lat |
Int |
LONGITUDE |
af_long |
Int |
CUSTOMER_USER_ID |
af_customer_user_id |
String |
CUSTOMER_SEGMENT |
af_customer_segment |
String |
VALIDATED |
af_validated |
String |
RECEIPT_ID |
af_receipt_id |
String |
ORDER_ID |
af_order_id |
String |
TUTORIAL_ID |
af_tutorial_id |
String |
ACHIEVEMENT_ID |
af_achievement_id |
String |
VIRTUAL_CURRENCY_NAME |
af_virtual_currency_name |
String |
DEEP_LINK |
af_deep_link |
String |
OLD_VERSION |
af_old_version |
String |
NEW_VERSION |
af_new_version |
String |
REVIEW_TEXT |
af_review_text |
String |
COUPON_CODE |
af_coupon_code |
String |
DEPARTING_DEPARTURE_DATE |
af_departing_departure_date |
String |
RETURNING_DEPARTURE_DATE |
af_returning_departure_date |
String |
DESTINATION_LIST |
af_destination_list |
String[] |
CITY |
af_city |
String |
REGION |
af_region |
String |
COUNTRY |
af_county |
String |
DEPARTING_ARRIVAL_DATE |
af_departing_arrival_date |
String |
RETURNING_ARRIVAL_DATE |
af_returning_arrival_date |
String |
SUGGESTED_DESTINATIONS |
af_suggested_destinations |
String[] |
TRAVEL_START |
af_travel_start |
String |
TRAVEL_END |
af_travel_end |
String |
NUM_ADULTS |
af_num_adults |
Int |
NUM_CHILDREN |
af_num_children |
Int |
NUM_INFANTS |
af_num_infants |
Int |
SUGGESTED_HOTELS |
af_suggested_hotels |
String[] |
USER_SCORE |
af_user_score |
Float |
HOTEL_SCORE |
af_hotel_score |
Float |
PURCHASE_CURRENCY |
af_purchase_currency |
String |
PREFERRED_STAR_RATINGS |
af_preferred_star_ratings |
Int[2] |
PREFERRED_PRICE_RANGE |
af_preferred_price_range |
Int[2] |
PREFERRED_NEIGHBORHOODS |
af_preferred_neighborhoods |
String[] |
PREFERRED_NUM_STOPS |
af_preferred_num_stops |
Int |
CONTENT |
af_content |
String |
PARAM_1 |
af_param_1 |
String |
PARAM_2 |
af_param_2 |
String |
PARAM_3 |
af_param_3 |
String |
PARAM_4 |
af_param_4 |
String |
PARAM_5 |
af_param_5 |
String |
PARAM_6 |
af_param_6 |
String |
PARAM_7 |
af_param_7 |
String |
PARAM_8 |
af_param_8 |
String |
PARAM_9 |
af_param_9 |
String |
PARAM_10 |
af_param_10 |
String |
アプリ内イベントデータの確認
- アプリ内イベント名、および収益は、管理画面のオーバービューページとイベントページに表示されます。
- 追加パラメーターの値は、ローデータのアプリ内イベントレポートに表示されます。ローデータはプレミアム機能です。
収益パラメーター
任意のパラメーター名とイベントを使用して収益値を送信できます。ただし、収益(マイナスの収益を含む)をAppsFlyerのローデータと集計データに登録するためには、必ず af_revenue パラメーターを使用する必要があります。自身のビジネスロジックに基づいて、実際の収益生成を反映するアプリ内イベントに対して使用してください。
af_revenue パラメーターの詳細については、収益の計測ガイドを参照してください。
個人を特定できる情報
個人を個人を特定できる情報 (PII) は、それ単独で個人のアイデンティティを特定または追跡するために使用される情報(名前、国民ID番号、社会保障番号)、または個人にリンクされている他の識別情報と組み合わせて使用される情報(出生日、出生地)です。
AppsFlyerではプライバシー規制を尊重し、ユーザーのPIIを収集しません。
PIIをイベント値で送信しないでください。
注意
AppsFlyerは、エンゲージメント中にデバイスのIPアドレスを収集します。管轄区域または使用シナリオによっては、IPアドレスがPIIと見なされる場合があります。IPアドレスを使用して、デバイスの広い地理的位置(都市、地区レベル)を取得しますが、特定のアドレスは取得しません。必要に応じて、ローデータレポートに表示されないように、IPアドレスをマスクするように選択できます。
複数の商品
1つのトランザクションに複数の商品を追加することができます。イベントパラメーターごとに1つの値を指定する代わりに、カンマ区切りで複数の商品をトランザクションに記述できます。
例
あるトランザクションで、Aさんが米国拠点のオンラインストアから、同じシャツを2枚と靴を1足、帽子を1つ購入するとします。各商品がそれぞれのパラメーターでリストに記述される順序は、全く同一でなければなりません。af_content_id: ["123","988","399"]
af_quantity: [2,1,1]
af_price: [25,50,10]
af_revenue: [110]
af_currency: USD
複数の商品の場合、コードは次のようになります。
Map<String,Object> eventData = new HashMap<>();
eventData.put(AFInAppEventParameterName.CONTENT_ID, new String[] {"123","988","399"});
eventData.put(AFInAppEventParameterName.QUANTITY, new int[] {2, 1, 1});
eventData.put(AFInAppEventParameterName.PRICE,new int[] {25, 50, 10});
eventData.put(AFInAppEventParameterName.CURRENCY,"USD");
eventData.put(AFInAppEventParameterName.REVENUE,110);
AppsFlyerLib.getInstance().logEvent(AppsFlyerTestActivity.this, AFInAppEventType.PURCHASE,eventData);
複数の項目がポストバックの配列として前方に送信されます。 現在FacebookとTwitterは配列パラメータを正しく解析できません。そのため、AppsFlyerはアイテムを配列として送る代わりに、アイテムの数(af_quantity)を合計しています(例えば、Facebookの上の例ではaf_quantity=4 )。
注意
複数の商品は、次のアプリ内イベントで使用できます。
af_add_to_cart、af_add_to_wishlist、af_tutorial_completion、af_initiated_checkout、af_purchase、af_rate、af_spent_credits、af_content_view、af_travel_booking、af_update
複雑なアプリ内イベント
コンプレックスアプリ内イベントでは、1回のAPI呼び出しで複数のイベントを送ることができます。
関連性の高い複数のユーザーアクションをまとめてグループ化したい場合に便利です。たとえば、1回のセッション中に複数の商品をバスケットに追加するなどです。
例:
{
"af_revenue":"50.87",
"af_currency":"USD",
"af_receipt_id":"57601333",
"product":[
{
"af_content_id":"1164_8186",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"1164_8186",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"1164_8186",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"1177_8185",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"0153_9077",
"af_price":"14.99",
"af_quantity":"1"
}
]
}
警告
コンプレックスアプリ内イベントは、FacebookとCriteoではポストバックの問題を引き起こす場合があります。イベントをFacebook、Criteoと完全にマッピングする必要がある場合は、ユーザーアクションごとに別々にイベントを送ります。例:カートに追加イベントを、追加された各商品ごとに送信アプリ内イベントのローデータを使用すると、これらのイベントをグループ化できます。
オフラインでのイベント計測
- SDKはイベントをAppsFlyerのサーバーに送信し、応答を待ちます。
- SDKが200の応答を受け取らなかった場合、イベントはキャッシュに保存されます。
- 次の200応答が受信されると、保存されたイベントはサーバーに再送信されます。
- キャッシュに複数のイベントがある場合は、それらはイベントを次々にサーバーに送信されます。
注意
SDKのキャッシュには最大40のイベントを保存できます。つまり、オフラインで発生した最初の40のイベントのみが保存されます。次の200の応答までその後に来るすべては、捨てられます。
ローデータに表示されるevent timeは、ユーザーの端末が再びオンラインになった後にイベントがAppsFlyerに送信された時間で、イベントが実際に発生した時間ではありません。
イベントの重複排除
AppsFlyerには、アプリ内イベントの重複排除メカニズムがあります。すべてのアプリ内イベントをチェックして、同じappsflyer_idから10秒以内に発生した同一のアプリ内イベントがあるかどうかを確認します。そのようなイベントが見つかった場合、メカニズムは重複を削除します。
両方のイベントの以下のフィールドが同じ場合、2つのイベントは同一であると見なされます。
- イベント名
- イベント値
- アプリID
- AppsFlyer ID
注意
重複排除は、SDKから送信されたアプリ内イベントに対してのみ機能します。
S2Sイベントは重複排除されません。
このセクションでは、さまざまな業種ごとに活用できるアプリ内イベントをリストアップしています。業種別では、計測をおすすめするアプリ内イベントを厳選して記載しています。
アプリ内イベントの計測を開始するには:
- 業種を選択します。
- 計測したいアプリ内イベントを選択します。該当する業種で記載されているすべてのアプリ内イベントを計測することを推奨しています。
- 各アプリ内イベントのコードスニペットをコピーし、必要に応じてアプリに実装します。
アプリのサイズと業界別にマッピングされた最も人気のあるアプリ内イベントを確認したい場合は、こちらをご覧ください。
ゲーム
ゲームアプリには、アーケード、戦略、教育、さらにギャンブルなど色々なゲームジャンルがあります。ゲームアプリでは、アプリ内課金、ソーシャルメディアでのシェア、友達の招待のイベントを計測することをおすすめします。その他のイベントには、ゲームのレベル達成、ゲーム内チュートリアルの完了などがあります。これらのイベントを計測することがどのように役立つか、いくつかの例を紹介します。
- アプリ内課金を計測することで、ユーザーが課金する動機が何かを理解しやすくなります。
- レベル達成を計測することは、ユーザーのエンゲージメントを把握するために役立ちます。
- シェアや招待イベントを計測すると、何人のユーザーがシェアして他のプレイヤーを招待しているか、それをどのソーシャルメディアで行なっているかを理解するのに役立ちます。
ヒント
こちらで解説するイベントは、以下のプラットフォームのゲームアプリにも関連しています。
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
- Xbox
- Windowsモバイルデバイス
ログイン
イベント名: af_login
目的
このイベントは、登録したユーザーのリテンションを計測するために役立ちます。
イベント送信のロジック
ユーザーがログインする度にこのイベントを発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
登録完了
イベント名: af_complete_registration
目的
ユーザー登録を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。ユーザー登録を計測することで、次のことが可能になります。
- 何人のユーザーが、アプリをインストールしたのにサインアップしなかったかを確認できます。
- ユーザーがどのような登録方法を好むかがわかります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、facebook | サインアップ方法の種類 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompletedRegistrationEvent = new Dictionary<string, string>();
CompletedRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent ("af_complete_registration", CompletedRegistrationEvent);
購入/課金
イベント名: af_purchase
目的
多くのゲームアプリでは、ユーザーがコインや宝石、武器などのアイテムを購入できます。Purchase(購入)イベントは、ユーザーが行ったアプリ内購入の計測に役立ちます。購入イベントを計測することで、次のことが可能になります。
- アドネットワークと広告代理店間のユーザーのLTV(顧客生涯価値)とキャンペーンのROIを判断します。
- どのようなオファーがユーザーに最も人気があるのかを特定します。
- キャンペーンターゲティングを最適化するために、購入されたアイテムとキャンペーンを相互参照します。
イベント送信のロジック
このイベントを正しく計測するには、購入し、ユーザーが購入完了ページを開いた時にイベントを送信する必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 2000 | 購入による予想収益 |
af_currency | string | THB / USD | 通貨コード |
af_quantity | int | 2 | 購入されたアイテムの数 |
af_content_id | string | 001, 092 | アイテムのID |
af_order_id | string | 9277 | オーダーID |
af_receipt_id | string | 9277 | レシートID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 200);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "092");
eventValue.put(AFInAppEventParameterName.ORDER_ID, "9277");
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "9277");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @200,
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
AFEventParamContentId: @"092",
AFEventParamOrderId: @"9277",
AFEventParamReceiptId: @"9277"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase,
withValues: [
AFEventParamRevenue: 200,
AFEventParamCurrency: "THB",
AFEventParamQuantity: 2,
AFEventParamContentId: "092",
AFEventParamOrderId: "9277",
AFEventParamReceiptId: "9277"
]);
Dictionary<string, string> purchaseEvent = new Dictionary<string, string>();
purchaseEvent.Add("af_revenue", "200");
purchaseEvent.Add("af_currency", "USD");
purchaseEvent.Add("af_quantity", "2");
purchaseEvent.Add("af_content_id", "001");
purchaseEvent.Add("af_order_id", "9277");
purchaseEvent.Add("af_receipt_id", "9277");
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
レベル達成
イベント名: af_level_achieved
目的
ゲームでレベルアップすることは、ユーザーの大きな目標の1つです。ゲームでレベルアップすると、新しい機能やステージが解除される場合が多いため、ユーザーはますますプレイを続けたくなります。Level Achieved(レベル達成)イベントは、アプリのユーザーエンゲージメントを計測するのに役立ちます。レベル達成を記録することで、次のことが可能になります。
- どのキャンペーンが最もアクティブなユーザーを生み出すかを特定します。
- 最もアクティブで関心の高いユーザーのタイプを割り出します。
- 収益などのディメンション(分析軸)と全体のユーザーアクティビティを関連付けます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーがレベル達成ページを開いた時にイベントを送信する必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_level | int | 3 | ユーザーが達成したレベル |
af_score | int | 500 | ユーザーの達成と関連するスコア |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL, 10);
eventValue.put(AFInAppEventParameterName.SCORE, 500);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LEVEL_ACHIEVED, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventLevelAchieved
withValues: @{
AFEventParamLevel: @10,
AFEventParamScore: @500
}];
AppsFlyerLib.shared().logEvent(AFEventLevelAchieved,
withValues: [
AFEventParamLevel: 3,
AFEventParamScore: 500
]);
Dictionary<string, string> LevelAchievedEvent = new Dictionary<string, string>();
LevelAchievedEvent.Add("af_level", "10");
LevelAchievedEvent.Add("af_score", "500");
AppsFlyer.sendEvent ("af_level_achieved", LevelAchievedEvent);
チュートリアル完了
イベント名: af_tutorial_completion
目的
チュートリアルは、ユーザーがアプリの活用方法を学ぶために役立ちます。チュートリアル完了を計測することで、次のことが可能になります。
- ユーザーがつまずく可能性のあるトピックは何かを理解します。
- どのチュートリアルがうまくいかないかを知り、改善します。
イベント送信のロジック
このイベントが発火するシナリオは2つあります。
- ユーザーがチュートリアルを完了した時。正常なチュートリアルの完了を示す項目とともにイベントが送信されます。
- ユーザーがチュートリアルを開始したが、完了せずに中止した場合。ユーザーがチュートリアルを中止した時、そのユーザーがチュートリアルを完了していないことを示す項目とともにイベントが送信されます。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_success | boolean | true | ユーザーがチュートリアルを完了したかどうか |
af_tutorial_id | string | 3 | チュートリアルのID |
af_content | string | はじめよう | チュートリアルの名前 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SUCCESS, true);
eventValue.put(AFInAppEventParameterName.TUTORIAL_ID, "3");
eventValue.put(AFInAppEventParameterName.CONTENT, "Getting Started");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.TUTORIAL_COMPLETION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventTutorial_completion
withValues: @{
AFEventParamSuccess: @TRUE,
AFEventParamTutorialId: @"3",
AFEventParamContent: @"Getting Started"
}];
AppsFlyerLib.shared().logEvent(AFEventTutorial_completion,
withValues: [
AFEventParamSuccess: true,
AFEventParamTutorialId: "3",
AFEventParamContent: "Getting started"
]);
Dictionary<string, string> TutorialCompletiondEvent = new Dictionary<string, string>();
TutorialCompletiondEvent.Add("af_success", "true");
TutorialCompletiondEvent.Add("af_tutorial_id", "3");
TutorialCompletiondEvent.Add("af_tutorial_content", "Getting started");
AppsFlyer.sendEvent ("af_tutorial_completion", TutorialCompletiondEvent);
シェア
イベント名: af_share
目的
ユーザーはソーシャルメディアサイトでゲームの成果をシェアすることを好みます。シェアはブランド認知を生み出し、さらに多くのユーザーがアプリをダウンロードしてインストールするよう促進することができます。Share(シェア)イベントを計測することで、ユーザーが友達にアプリをシェアする可能性が最も高いのはいつかを把握できます。
ヒント
AppsFlyer SDKには、シェアと招待を計測する専用のメソッドがあります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーがソーシャルメディアで問題なく投稿をシェアし完了した時にイベントを送信しましょう。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_description | string | 新しいハイスコア / レベルアップ / ゲーム優勝 | ソーシャルメディアでシェアする理由。新しいハイスコア、レベルアップなどがあります。 |
プラットフォーム | string | Facebook、Whatsapp、メール | ユーザーがシェアを行うプラットフォーム |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DESCRIPTION, "New High Score");
eventValue.put("platform", "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SHARE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventShare
withValues: @{
AFEventParamDescription: @"New High Score",
@"platform": @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventShare,
withValues: [
AFEventParamDescription: "New High Score",
"platform": "Facebook"
]);
Dictionary<string, string> ShareEvent = new Dictionary<string, string>();
ShareEvent.Add("af_description", "New High Score");
ShareEvent.Add("platform", "Facebook");
AppsFlyer.sendEvent ("af_share", ShareEvent);
招待
イベント名: af_invite
目的
ユーザーが友達を招待して、アプリのダウンロードとインストールをすすめることがあります。多くの場合、ユーザーはアプリをシェアしたいと考えていますが、時には他のユーザーを招待して報酬を受け取る場合もあるでしょう。Invite(招待)イベントを使用して、ユーザー招待を計測することができます。招待イベントを計測することで、次のことが可能になります。
- どのソーシャルメディアサイトで普段ユーザーが友達に招待を送るかがわかります。
- 何人のユーザーが、アプリのダウンロードとインストールをすすめるために友達を招待するかがわかります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが問題なく友達を招待しアプリのインストールが完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_description | string | このアプリを使ってみてください。 | 招待の内容 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DESCRIPTION, "Try this app");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.INVITE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventInvite
withValues: @{
AFEventParamDescription: @"Try this app"
}];
AppsFlyerLib.shared().logEvent(AFEventInvite, withValues: [
AFEventParamDescription: "Try this app"
]);
Dictionary<string, string> InviteEvent = new Dictionary<string, string>();
InviteEvent.Add("af_description", "Try this app");
AppsFlyer.sendEvent ("af_invite", InviteEvent);
ボーナス獲得
イベント名: bonus_claimed
目的
ボーナス獲得イベントを計測すると、次のことに役立ちます。
- 提供したボーナスを獲得したユーザー数を確認できます。
- 獲得されたボーナスを、ユーザーアクティビティとエンゲージメントに関連付けます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーがボーナスを獲得し、アカウントに反映された時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
bonus_type | string | コイン | ユーザーが獲得するボーナスの種類 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("bouns_type", "coins");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "bonus_claimed", eventValue);
[[AppsFlyerLib shared] logEvent:@"bonus_claimed"
withValues: @{
@"bonus_type": @"coins"
}];
AppsFlyerLib.shared().logEvent("bonus_claimed", withValues: [
"bouns_type": "coins"
]);
Dictionary<string, string> BonusClaimedEvent = new Dictionary<string, string>();
BonusClaimedEvent.Add("bouns_type", "coins");
AppsFlyer.sendEvent ("bonus_type", BonusClaimedEvent);
eコマース
Eコマースアプリを使うと、ユーザーは、オンラインで商品を簡単に検索して購入できます。Eコマースアプリの主な機能の1つは、ユーザーが価格を比較できることです。AppsFlyerでは、Eコマースアプリでイベント計測を実装することをおすすめします。イベントを計測することで、ユーザーが何を探し、何を購入するのかについて貴重なインサイトを得ることができます。
AppsFlyerで計測をおすすめするイベントは、search(検索)、purchase(購入)、adding to cart(カートの追加)、adding to wishlist(ウィッシュリストの追加)です。これらのイベントを計測することで、次のことが可能になります。
- 最も人気のあるカテゴリをハイライトします。
- ユーザーが何を探しているかを理解できます。
- チェックアウトを完了した購入者の数を計測できます。
- 何人のユーザーがリピーターで、何人が1回の購入のみであるかを把握します。
登録完了
イベント名: af_complete_registration
目的
登録完了イベントを使用すると、アプリのダウンロードとインストール後に何人のユーザーがサインアップしたかを計測できます。サインアップ方法も記録できます(例:Facebook、emailなど)。
イベント送信のロジック
このイベントは、ユーザーが問題なく登録された後に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | Facebook、Google、メール | ユーザーが選択したサインアップ方法 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD,"Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent("af_complete_registration", CompleteRegistrationEvent);
ログイン
イベント名: af_login
目的
Login(ログイン)イベントを使用すると、アカウントにログインしたユーザー数を計測できます。ログインイベントでは、次の計測が可能になります。
- アクティブユーザーの数を確認できます。
- ユーザーが最も活発に利用するのはいつなのかを把握できます。
イベント送信のロジック
このイベントは、ユーザーが正常にログインしている時に発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent("af_login", null);
検索
イベント名: af_search
目的
Search(検索)イベントを計測すると、ユーザーが何を探しているかを知ることができます。また、どの検索結果が探しているものに最も関連があるのかを知ることもできます。さらに、どの検索結果が購入につながるかを計測できます。
イベント送信のロジック
このイベントは、次のいずれかの場合に発火してください。
- ユーザーが検索ボタンをクリックした時。
- ユーザーが検索結果ページを開いた時。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_search_string | string | 赤い服、ランニングシューズ | 検索キーワード |
af_content_list | string配列 | 001, 092 | コンテンツIDのリスト |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SEARCH_STRING, "red shoes");
eventValue.put(AFInAppEventParameterName.CONTENT_LIST, new String[] {"001", "092"});
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SEARCH, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventSearch
withValues: @{
AFEventParamSearchString: @"red shoes",
AFEventParamContentList: @[@"001", @"092"]
}];
AppsFlyerLib.shared().logEvent(AFEventSearch, withValues: [
AFEventParamSearchString: "red shoes",
AFEventParamContentList: ["001", "092"]
]);
Dictionary<string, string> SearchEvent = new Dictionary<string, string>();
SearchEvent.Add("af_search_string", "red shoes");
SearchEvent.Add("af_content_list", "['001', '092']");
AppsFlyer.sendEvent("af_search", SearchEvent);
コンテンツ閲覧
イベント名: af_content_view
目的
コンテンツ閲覧イベントは、特定の商品の閲覧率を計測するために役立ちます。このイベントを計測することで、次のことが可能になります。
- 商品の閲覧と販売を関連付けます。
- 商品の閲覧に基づいて、どのカテゴリが最も人気があるかを理解できます。
- 購入者の通貨と閲覧している商品との相関性を確認します。
イベント送信のロジック
このイベントは、ユーザーが特定の商品詳細ページを閲覧している時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 2000 | 商品の価格 |
af_content_id | string | 102 | プロダクトID |
af_content_type | string | シューズ | プロダクトカテゴリ |
af_currency | string | THB, USD | プロダクトの詳細ページの通貨 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 2000);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "102";
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shoes");
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.CONTENT_VIEW, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventContentView
withValues: @{
AFEventParamPrice: @2000,
AFEventParamContentId: @"102",
AFEventParamContentType: @"shoes",
AFEventParamCurrency: @"USD"
}];
AppsFlyerLib.shared().logEvent(AFEventContentView,
withValues: [
AFEventParamPrice: 2000,
AFEventParamContentId: "102",
AFEventParamContentType: "shoes",
AFEventParamCurrency: "USD"
]);
Dictionary<string, string> ContentViewEvent = new Dictionary<string, string>();
ContentViewEvent.Add("af_price", "2000");
ContentViewEvent.Add("af_content_type", "shoes");
ContentViewEvent.Add("af_currency", "USD");
AppsFlyer.sendEvent("af_content_view", ContentViewEvent);
リスト閲覧
イベント名: af_list_view
目的
Eコマースのプラットフォームでは、新しく追加された商品、関連商品、おすすめ商品などのカテゴリ別に商品をリスト表示することが多いです。リスト閲覧イベントは、購入者が最もよく見るのはどのリストかを計測するのに役立ちます。
イベント送信のロジック
このイベントは、購入者が特定のリストを閲覧している時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_content_type | string | 関連商品、おすすめ商品、新商品 | リストの種類 |
af_content_list | string配列 | 001, 092 | カテゴリのコンテンツIDのリスト |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "related products");
eventValue.put(AFInAppEventParameterName.CONTENT_LIST, new String[] {"001", "092"});
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
[[AppsFlyerLib shared] logEvent:AFEventListView
withValues: @{
AFEventParamContentType: @"related products",
AFEventParamContentList: @[@"001", @"092"]
}];
AppsFlyerLib.shared().logEvent(AFEventListView,
>withValues: [
AFEventParamContentType: "related products",
AFEventParamContentList: ["001", "092"]
]);
Dictionary<string, string> ListViewEvent = new Dictionary<string, string>();
ListViewEvent.Add("af_content_type", "related products");
ListViewEvent.Add("af_content_list", "['001', '092']");
AppsFlyer.sendEvent("af_list_view", ListViewEvent);
ウィッシュリストに追加
イベント名: af_add_to_wishlist
目的
お気に入り(ウィッシュリスト)に追加イベントを計測することで、購入者がウィッシュリストに追加する商品やカテゴリを計測できます。ウィッシュリストに頻繁に追加される商品がわかっている場合は、これらの商品をセールまたは割引価格で購入者に提示して、購入を促すことができます。また、ユーザーがウィッシュリストに追加した商品に応じて、これらのユーザーをリターゲティングすることもできます。
イベント送信のロジック
このイベントは、購入者がアイテムをウィッシュリストに追加した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 600 | 商品の価格 |
af_content_id | string | 300 | プロダクトID |
af_content_type | string | シューズ、電子機器 | プロダクトカテゴリ |
af_currency | string | GBP | 商品の詳細ページに表示された通貨 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 600);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "300");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "electronics");
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_TO_WISH_LIST, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventAddToWishlist
withValues: @{
AFEventParamPrice: @600,
AFEventParamContentId: @"300",
AFEventParamContentType: @"electronics",
AFEventParamCurrency: @"GBP"
}];
AppsFlyerLib.shared().logEvent(AFEventAddToWishlist,
withValues: [
AFEventParamPrice: 600,
AFEventParamContentId: "300",
AFEventParamContentType: "electronics",
AFEventParamCurrency: "GBP"
]);
Dictionary<string, string> AddToWishListEvent =
new Dictionary<string, string>();
AddToWishListEvent.Add("af_price", "600");
AddToWishListEvent.Add("af_content_id", "300");
AddToWishListEvent.Add("af_content_type", "electronics");
AddToWishListEvent.Add("af_currency", "GBP");
AppsFlyer.sendEvent("af_add_to_wishlist", AddToWishListEvent);
カート追加
イベント名: af_add_to_cart
目的
カートに追加イベントは、カートに商品が追加されたことを計測するために使用します。招待イベントを計測することで、次のことが可能になります。
- 1回の購入で、ユーザーがカートに追加する商品の平均数を確認できます。
- 2つの違う商品をカートに追加する間に、どれくらいの時間が経過しているかを知ることができます。
- 何人の購入者がカートを放棄したかを確認できます。
イベント送信のロジック
このイベントは、購入者が商品をカートに追加した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 350, 1000 | 商品価格 |
af_content_id | string | 001, 092 | プロダクトID |
af_content_type | string | シャツ、靴 | 商品の種類 |
af_currency | string | THB, USD | 商品の通貨 |
af_quantity | float | 2, 5 | カートに追加された同じ商品の数 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "001");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_TO_CART, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventAddToCart
withValues: @{
AFEventParamPrice: @350,
AFEventParamContentId: @"001",
AFEventParamContentType: @"shirt",
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2
}];
AppsFlyerLib.shared().logEvent(AFEventAddToCart, withValues: [
AFEventParamPrice: 350,
AFEventParamContentId: "001",
AFEventParamContentType: "shirt",
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2
]);
Dictionary<string, string> AddToCartEvent = new Dictionary<string, string>();
AddToCartEvent.Add("af_price", "350");
AddToCartEvent.Add("af_content_id", "001");
AddToCartEvent.Add("af_content_type", "shirt");
AddToCartEvent.Add("af_currency", "USD");
AddToCartEvent.Add("af_quantity", "2");
AppsFlyer.sendEvent("af_add_to_cart", AddToCartEvent);
チェックアウト開始
イベント名: af_initiated_checkout
目的
チェックアウト開始イベントを計測すると、購入者がチェックアウトに進むときの行動を理解するのに役立ちます。たとえば、次のことに役立ちます。
- 購入者がチェックアウトしたときの平均価格を見て、購入イベントの平均価格と比較します。
- チェックアウトに進んだ後に、購入者が商品を追加または削除するかどうかを確認できます。
イベント送信のロジック
このイベントは、購入者がチェックアウトを開始してから、チェックアウトが完了する前までに発火してください。
推奨項目
ヒント
異なるカテゴリの商品が複数ある場合は、配列を使用してデータを送信します。
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 4000 | カート内の合計金額 |
af_content_id | stringまたはstring配列 | 221, 124 | カート内の商品ID |
af_content_type | stringまたはstring配列 | シャツ、パンツ | 商品カテゴリのリスト |
af_currency | string | THB | チェックアウト時の通貨 |
af_quantity | intまたはint配列 | 2, 5 | カート内商品数の合計 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
// for multiple product categories,, set the param value as: new String {"shirt", "pants"}
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories,, set the param value as: new int {2, 5}
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.INITIATED_CHECKOUT, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventInitiatedCheckout
withValues: @{
AFEventParamPrice: @350,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as: @[@"shirt", @"pants"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2
// for multiple product categories, set the param value as: @[@2, @5]
}];
AppsFlyerLib.shared().logEvent(AFEventInitiatedCheckout,
withValues: [AFEventParamPrice: 350,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]*/
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["shirt", "pants"] AFEventParamCurrency: "USD",
AFEventParamQuantity: 2
//for multiple product categories, set the param value as: [2, 5]
]);
Dictionary<string, string> InitiatedCheckoutEvent = new Dictionary<string, string>();
InitiatedCheckoutEvent.Add("af_price", "350");
InitiatedCheckoutEvent.Add("af_content_id", "001");
InitiatedCheckoutEvent.Add("af_content_type", "shirt");
InitiatedCheckoutEvent.Add("af_currency", "USD");
InitiatedCheckoutEvent.Add("af_quantity", "2");
AppsFlyer.sendEvent ("af_initiated_checkout", InitiatedCheckoutEvent);
購入/課金
イベント名: af_purchase
目的
Purchase(購入)イベントは、Eコマースにおいて最も重要なイベントの1つです。購入イベントを計測すると、Eコマースアプリのさまざまな購入動向について知ることができます。購入イベントを計測することで、次のことが可能になります。
- 全体で何人のユーザーが実際に購入しているかを確認できます。
- 最も活発な購入者を計測し、購入履歴の取引を基にリターゲティングします。
- 購入期間全体でどのような商品やカテゴリが順調に購入されているかを理解できます。
- 商品やカテゴリ全般での購入から得られた収益を計測します。
- キャンペーンやメディアソース全体で発生した収益を計測します。
イベント送信のロジック
このイベントは、購入者が購入を完了後に発火してください(支払いが必ずしも完了していない場合でも可)。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 1200 | 購入からの収益 |
af_price | float | 4000 | 全体の購入金額の合計 |
af_content_id | string | 121, 262 | 商品ID |
af_content_type | string | シューズ、パンツ | 商品カテゴリ |
af_currency | string | AUD | 通貨 |
af_quantity | int | 2, 5 | カート内の商品の数 |
af_order_id | string | X123ABC | 購入後に生成されるオーダーID |
af_receipt_id | string | X123ABC | CRITEOとGoogle AdWordsのリターゲティング連携に必要なオーダーID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: // new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
// for multiple product categories,, set the param value as: new String {"shoes", "pants"}
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {2, 5}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as:
// @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as:
// @[@"shoes", @"pants"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as:
// @[@2, @5]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase, withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"],
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["shoes", "pants"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: [2, 5]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> PurchaseEvent = new Dictionary<string, string>();
PurchaseEvent.Add("af_revenue", "1200");
PurchaseEvent.Add("af_price", "4000");
PurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
PurchaseEvent.Add("af_content_type", "shoes");
// for multiple product categories, set the param value as: ["shirt", "pants"]
PurchaseEvent.Add("af_currency", "USD");
PurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [2, 5]
PurchaseEvent.Add("af_order_id", "X123ABC");
PurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.sendEvent ("af_purchase", PurchaseEvent);
購入完了
イベント名: completed_purchase
目的
購入完了イベントを計測すると、購入が実際に全額支払われた方法を分析するのに役立ちます。
イベント送信のロジック
このイベントはバックエンドで発生するため、ユーザーが購入の支払いを実行した時に、S2S(サーバー間通信)を使用してイベントを送信できます。
重要:
このイベントは、支払いがオフラインで行われた場合(銀行振込または代金引換など)に送信します。このイベントを送信する場合は、購入イベント(af_purchase
)にaf_revenue
パラメータが含まれていないことを確認してください。af_revenue
パラメータを使用して両方のイベントを送信すると、収益が重複します。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 4000 | 購入からの収益 |
af_order_id | string | X123ABC | 購入から作成されたオーダーID |
af_receipt_id | string | X123ABC | 購入者に発行したレシートID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 4000);
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id" "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "completed_purchase", eventValue);
[[AppsFlyerLib shared] logEvent:@"completed_purchase"
withValues: @{
AFEventParamRevenue: @4000,
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerLib.shared().logEvent("completed_purchase", withValues: [
AFEventParamRevenue: 4000,
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> CompletedPurchaseEvent = new Dictionary<string, string>();
CompletedPurchaseEvent.Add("af_revenue", "1200");
CompletedPurchaseEvent.Add("af_order_id", "X123ABC");
CompletedPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.sendEvent ("completed_purchase", CompletedPurchaseEvent);
カートから削除
イベント名: remove_from_cart
目的
カートから削除イベントを計測すると、次のことに役立ちます。
- 購入者がどの商品をカートから削除したかを確認できます。
- 購入者がカートから削除した商品のカテゴリを確認できます。
- カートに追加イベントのデータと比較して、チェックアウトされない商品に関するインサイトを得ることができます。
イベント送信のロジック
このイベントは、購入者が商品をカートから削除した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_content_id | string | 521 | 商品またはアイテムのID |
af_content_type | string | シューズ | 商品またはアイテムのカテゴリ |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "521");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shoes");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "remove_from_cart", eventValue);
[[AppsFlyerLib shared] logEvent:@"remove_from_cart"
withValues: @{
AFEventParamContentId: @"521",
AFEventParamContentType: @"shoes",
}];
AppsFlyerLib.shared().logEvent("remove_from_cart", withValues: [
AFEventParamContentId: "521",
AFEventParamContentType: "shoes",
]);
Dictionary<string, string> RemoveFromCartEvent = new Dictionary<string, string>();
RemoveFromCartEvent.Add("af_content_id", "521");
RemoveFromCartEvent.Add("af_content_type", "shoes");
AppsFlyer.sendEvent ("remove_from_cart", RemoveFromCartEvent);
初回購入
イベント名: first_purchase
目的
このイベントは、購入イベントと同じです。ただし、購入イベントと違い、初回購入イベントは次のことを計測するために使用されます。
- 新規購入者が、購入にどれくらいの時間がかかるかを確認できます。
- どの商品が初回購入時に購入されやすいかを知ることができます。
- 初回購入の平均的な価格と収益を把握できます。
イベント送信のロジック
このイベントは、ユーザーが初回購入を完了した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 1200 | 購入からの収益 |
af_price | float | 4000 | 全体の購入金額の合計 |
af_content_id | string | 121, 262 | 商品ID |
af_content_type | string | シューズ、パンツ | 商品カテゴリ |
af_currency | string | AUD | 通貨 |
af_quantity | int | 2, 5 | カート内の商品の数 |
af_order_id | string | X123ABC | 購入後に生成されるオーダーID |
af_receipt_id | string | X123ABC | CRITEOとGoogle AdWordsのリターゲティング連携に必要なオーダーID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
// for multiple product categories set the param value as: new String {"shoes", "pants"}
eventValue.put(AFInAppEventParameteName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {2, 5}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "first_purchase", eventValue);
[[AppsFlyerLib shared] logEvent:("first_purchase")
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as: @[@"shoes", @"pants"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as: @[@2, @5]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerLib.shared().logEvent("first_purchase", withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["shoes", "pants"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: // [2, 5]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> FirstPurchaseEvent = new Dictionary<string, string>();
FirstPurchaseEvent.Add("af_revenue", "1200");
FirstPurchaseEvent.Add("af_price", "4000");
FirstPurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
FirstPurchaseEvent.Add("af_content_type", "shoes");
// for multiple product categories, set the param value as: ["shirt", "pants"]
FirstPurchaseEvent.Add("af_currency", "USD");
FirstPurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [2, 5]
FirstPurchaseEvent.Add("af_order_id", "X123ABC");
FirstPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.sendEvent ("first_purchase", FirstPurchaseEvent);
エンターテインメント:ストリーミング
オンデマンドコンテンツに対するユーザーの要求が高まるにつれて、ストリーミングアプリケーション市場は非常に競争が激しくなっています。オンデマンドコンテンツのストリーミングアプリを運用する場合は、アプリ内のイベントを計測することをお勧めします。
ヒント
こちらで説明したイベントは、スマートテレビで動作するストリーミングアプリにも関連しています。:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
ストリーミングアプリでイベントを計測すると、次のことに役立ちます。
- ユーザーがどのようなコンテンツを視聴するかを理解できます。
- コンテンツの需要に応じてキャンペーンを分析し、最適化します。
- ユーザーのエンゲージメントと使用状況を計測します。
登録完了
イベント名: af_complete_registration
目的
登録完了イベントを使用すると、アプリのダウンロードとインストール後に何人のユーザーがサインアップしたかを計測できます。サインアップ方法(例:Facebook、メール等)も計測でき、ユーザーがサインアップしやすい方法を知ることができます。
イベント送信のロジック
このイベントは、ユーザーが問題なく登録された後に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | Facebook、Google、メール | ユーザーが選択したサインアップ方法 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent("af_complete_registration", CompleteRegistrationEvent);
ログイン
イベント名: af_login
目的
Login(ログイン)イベントを使用すると、アカウントにログインしたユーザー数を計測できます。ログインイベントでは、次の計測が可能になります。
- アクティブユーザーの数を確認できます。
- ユーザーが最も活発に利用するのはいつなのかを把握できます。
イベント送信のロジック
このイベントは、ユーザーが正常にログインしている時に発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent("af_login", null);
トライアル開始
イベント名: af_start_trial
目的
多くのストリーミングサービスでは、ユーザーにプレミアム機能を体験するための試用期間を提供します。トライアル開始イベントを計測すると、次のことが可能になります。
- 何人のユーザーが試用期間中にオプトインするかを把握できます。
- トライアルがプロモーションまたはパートナーとのコラボレーションの一部として実施される場合、どのプロモーションによってユーザーがトライアルに登録したかを計測できます。
イベント送信のロジック
このイベントは、ユーザーがトライアル期間にオプトインしてトライアルを開始した時に発火します。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
trial_method | string | 新機種が無料、データ通信料が無料、プロモーション、クーポンコード | トライアルを開始した方法 |
trial_method_identifier | string |
キャリア名(Vodafoneなど)、 パートナー名(Facebookなど)、 クーポンコード(例:TRA123) |
トライアル方法のID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("trial_method", "coupon code");
eventValue.put("trial_method_identifier", "TRA123");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.START_TRIAL, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventStartTrial
withValues: @{
@"trial_method": @"coupon code",
@"trial_method_identifier": @"TRA123"
}]
AppsFlyerLib.shared().logEvent(AFEventStartTrial,
withValues: [
"trial_method": "coupon code",
"trial_method_identifier": "TRA123"
]);
Dictionary<string, string> SubscriptionTrial = new Dictionary<string, string>();
SubscriptionTrial.Add("trial_method ", "coupon code");
SubscriptionTrial.Add("trial_method_identifier", "TRA123");
AppsFlyer.sendEvent("af_start_trial", SubscriptionTrial);
購読
イベント名:af_subscribe
目的
サブスクリプションはストリーミングサービスの中核です。ユーザーサブスクリプションを計測することで、次のことが可能になります。
- どのキャンペーンがユーザーのサブスクリプションに結び付いたかを確認できます。
- トライアル中のユーザー数をサブクスライブ中のユーザー数と比較します。
- サブスクリプションから発生した収益を計測し、キャンペーンやメディアソースに関連付けます。
イベント送信のロジック
このイベントは、次のいずれかの場合に発火してください。
- ユーザーが正常にサブスクライブした時
- サブスクリプションが更新された時
ヒント
詳細については、サブスクリプションの計測ガイドを参照してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
new_subscription | boolean | true / false | サブスクリプションが新規購入または更新された時 |
af_coupon_code | string | 3か月間契約 | クーポンコード(サブスクリプション中に使用されている場合) |
coupon_code_value | string | 10% | 初期価格からのクーポン割引率 |
af_revenue | float | 5 | サブスクリプションに関連する収益 |
af_currency | string | 米ドル | サブスクリプションの支払いの通貨 |
subscription_method | string | クレジットカード、E-Wallet、PayPal | サブスクリプションに使用された支払い方法 |
expiration_date | string | 2018/07/18 | サブスクリプションの有効期限 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("new_subscription", true);
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "3MonthsSubscription");
eventValue.put("coupon_code_value", "10%");
eventValue.put(AFInAppEventParameterName.REVENUE, 5);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put("subscription_method", "");
eventValue.put("expiration_date", "2018/07/18");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SUBSCRIBE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventSubscribe
withValues: @{
@"new_subscription": @TRUE,
AFEventParamCouponCode: @"3MonthsSubscription",
@"coupon_code_value": @"10%",
AFEventParamRevenue: @5,
AFEventParamCurrency: @"USD",
@"subscription_method": @"",
@"expiration_date": @"2018/07/18"
}];
AppsFlyerLib.shared().logEvent(AFEventSubscribe,
withValues: [
"new_subscription": true,
AFEventParamCouponCode: "3MonthsSubscription",
"coupon_code_value": "10%",
AFEventParamRevenue: 5,
AFEventParamCurrency: "USD",
"subscription_method": "",
"expiration_date": "2018/07/18"
]);
Dictionary<string, string> Subscription = new Dictionary<string, string>();
Subscription.Add("new_subscription", "true");
Subscription.Add("af_coupon_code", "3MonthsSubscription");
Subscription.Add("coupon_code_value", "10%");
Subscription.Add("af_revenue", "5");
Subscription.Add("af_currency", "USD");
Subscription.Add("subscription_method", "");
Subscription.Add("expiration_date", "2018/07/18");
AppsFlyer.sendEvent("af_subscribe", Subscription);
メディア再生
イベント名: media_play
目的
メディア再生イベントを使用すると、提供しているメディアをユーザーが再生したことを計測できます。このようなメディアには、動画、音楽、テレビ番組、ラジオ番組などがあります。複数の種類のメディアを提供している場合は、それぞれのメディアとコンテンツタイプ間の再生率を計測できます。たとえば、ユーザーが動画よりも音楽を再生する方か多いかどうかを確認できます。また、ユーザーが映画よりテレビ番組の方をよく見ているかどうかもわかります。そのほか、メディア再生イベントを計測すると、次のことに役立つでしょう。
- メディアの種類とコンテンツ別にメディアの消費量を計測します。
- 最も一般的なストリーミングコンテンツの言語を確認できます。
- ストリーミングコンテンツの最小、最大、平均の再生継続時間を確認できます。
イベント送信のロジック
このイベントは、事前に定義した数値(2分間など時間を表す)のストリーミングコンテンツの再生後に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_content_type | string | テレビ番組、音楽 | ストリーミングコンテンツの種類 |
af_content_id | string | 092, E34 | ストリーミングコンテンツのID |
af_content | string | コンテンツのタイトル | コンテンツのタイトル(曲の名前、テレビ番組のタイトルやエピソードなど) |
media_duration | float | 5 | 再生時間 |
言語 | string | en-us, fr, es | コンテンツの言語 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_play", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_play"
withValues: @{
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_play",
withValues: [
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaPlay = new Dictionary<string, string>();
MediaPlay.Add("af_content_type", "tv show");
MediaPlay.Add("af_content_id", "E34");
MediaPlay.Add("af_content", "My show");
MediaPlay.Add("media_duration", "5");
MediaPlay.Add("language", "en-us");
AppsFlyer.sendEvent("media_play", MediaPlay);
視聴時間
イベント名: media_minutes
目的
視聴時間は、特定のコンテンツをユーザーがどれくらい視聴したかを表します。これは収益の指標に次いで、ストリーミング業界で最も重要な指標です。このメトリックが重要な理由は、ユーザーのサービス使用量を見積もることができるためです。また、サービスの全体的な使用率がどの程度か、最も人気のあるコンテンツが何かを理解することもできます。視聴時間(パラメーターminutes_consumedを使用) を計測することで、次のことが可能になります。
- どのユーザーがサービスを幅広く利用しているのか、どのユーザーがそうでないのかを確認できます。
- 人気のあるメディアの種類とコンテンツタイプは何かを把握できます。
イベント送信のロジック
このイベントは、次のいずれかの場合に発火してください。
- ユーザーがメディアアイテムのストリーミングを終了した時
- ユーザーがメディアアイテムのストリーミングを中止した時
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
minutes_consumed | float | 3 | ユーザーによる実際のメディア視聴時間 |
af_content_type | string | テレビ番組、音楽 | ストリーミングコンテンツの種類 |
af_content_id | string | 092, E34 | ストリーミングコンテンツのID |
af_content | string | コンテンツのタイトル | コンテンツのタイトル(曲の名前、テレビ番組のタイトルやエピソードなど) |
media_duration | float | 5 | 再生時間 |
言語 | string | en-us, fr, es | コンテンツの言語 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"media_minutes", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_minutes"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_minutes", withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaMinutes =
new Dictionary<string, string>();
MediaMinutes.Add("minutes_consumed", "3");
MediaMinutes.Add("af_content_type", "tv show");
MediaMinutes.Add("af_content_id", "E34");
MediaMinutes.Add("af_content", "My show");
MediaMinutes.Add("media_duration", "5");
MediaMinutes.Add("language", "en-us");
AppsFlyer.sendEvent("media_minutes", MediaMinutes);
メディアダウンロード
イベント名: media_downloaded
目的
メディアダウンロードを計測すると、ユーザーの関心を明確にすることができます。メディア再生とメディアダウンロードを計測し、2つのイベントを比較することができます。ストリーミングが好まれるメディアと、ダウンロードが好まれるメディアを知ることができます。
イベント送信のロジック
このイベントは、ユーザーがメディアのダウンロードを開始した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_content_type | string | テレビ番組、音楽 | コンテンツタイプ |
af_content_id | string | 092, E34 | コンテンツID |
af_content | string | コンテンツのタイトル | コンテンツのタイトル(曲の名前、テレビ番組のタイトルやエピソードなど) |
media_duration | float | 5 | 再生時間 |
言語 | string | en-us, fr, es | コンテンツの言語 |
eCode の例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_downloaded", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_downloaded"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_downloaded",
withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaDownloaded = new Dictionary<string, string>();
MediaDownloaded.Add("minutes_consumed", "3");
MediaDownloaded.Add("af_content_type", "tv show");
MediaDownloaded.Add("af_content_id", "E34");
MediaDownloaded.Add("af_content", "My show");
MediaDownloaded.Add("media_duration", "5");
MediaDownloaded.Add("language", "en-us");
AppsFlyer.sendEvent("media_downloaded", MediaDownloaded);
メディア保存
イベント名: media_saved
目的
メディア保存を計測すると、ユーザーの関心を明確にすることができます。
イベント送信のロジック
メディアがユーザーのデバイス上に保存される度に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_content_type | string | テレビ番組、音楽 | コンテンツタイプ |
af_content_id | string | 092, E34 | コンテンツID |
af_content | string | コンテンツのタイトル | コンテンツのタイトル(曲の名前、テレビ番組のタイトルやエピソードなど) |
media_duration | float | 5 | 再生時間 |
言語 | string | en-us, fr, es | コンテンツの言語 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_saved", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_saved"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_saved",
withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"]);
Dictionary<string, string> MediaSaved = new Dictionary<string, string>();
MediaSaved.Add("minutes_consumed", "3");
MediaSaved.Add("af_content_type", "tv show");
MediaSaved.Add("af_content_id", "E34");
MediaSaved.Add("af_content", "My show");
MediaSaved.Add("media_duration", "5");
MediaSaed.Add("language", "en-us");
AppsFlyer.sendEvent("media_saved", MediaSaved);
金融:銀行
金融アプリと銀行アプリは、新しいクレジットカードへのサインアップやローンの申請など、財務関連のさまざまな目的を実行することができます。金融/銀行アプリでの記録をお勧めするアプリ内イベントには、口座開設、クレジットカード申請、ローン申請などがあります。これらのイベントを計測することがどのように役立つか、いくつかの例を紹介します。
- アプリ内のアカウント申請を計測すると、アカウントユーザーが最も望むアカウントを理解し、リターゲティングのアイデアを得ることができます。
- クレジットカードアプリケーションの記録は、ユーザーがクレジットカードにどのような利点を必要とするかを理解するのに役立ちます。
- ローン申請を計測することで、ユーザーがどんな財務支援をどれだけ必要とするかを理解できます。
ログイン
イベント名: af_login
目的
このイベントは、登録したユーザーのリテンションを計測するために役立ちます。
イベント送信のロジック
ユーザーがログインする度にこのイベントを発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
登録完了
イベント名: af_complete_registration
目的
ユーザー登録を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。ユーザー登録を計測することで、次のことが可能になります。
- 何人のユーザーが、アプリをインストールしたのにサインアップしなかったかを確認できます。
- ユーザーがどのような登録方法を好むかがわかります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、facebook | サインアップ方法の種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.registration_method, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.complete_registration, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompletedRegistrationEvent = new Dictionary<string, string>();
CompletedRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent ("af_complete_registration", CompletedRegistrationEvent);
登録の検証
イベント名: registration_verified
目的
登録の承認を計測し、他のデータと照会することで、ユーザーの詳細を把握できます。例えば、登録が承認されたイベントを計測すると、何人のユーザーがサインアップしたが承認されなかったのかを把握できます。
イベント送信のロジック
このイベントを計測する最良の方法は、登録が確認されたときにトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
submit_registration | string | メール、facebook | サインアップ方法が認証されました。個人を特定できる情報(PII)を入力しないでください。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("submit_registration", "facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "registration_verified", eventValue);
[[AppsFlyerLib shared] logEvent:@"registration_verified"
withValues: @{
@"submit_registartion": @"facebook"
}];
AppsFlyerLib.shared().logEvent("registration_verified",
withValues: [
"submit_registration": "facebook"
])
Dictionary<string, string> RegistrationVerifiedEvent = new Dictionary<string, string>();
RegistrationVerifiedEvent.Add("submit_registration", "facebook");
AppsFlyer.sendEvent ("registration_verified", RegistrationVerifiedEvent);
アカウント申請を送信
イベント名: submit_account_application
目的
アカウント申請を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。例えば、ユーザー登録イベントを計測することで、何人のユーザーがサインアップしたがアカウントを開設しなかったかを把握できます。
イベント送信のロジック
このイベントを計測する最良の方法は、アカウント申請プロセスが完了した時点でイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
account_type | string | savings | 申請したアカウントの種類。 |
application_method | string | アプリ | 申請が行われた場所。 |
PII_type | string | passport | 申請時に使用されたIDタイプ。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("account_type", "savings");
eventValue.put("application_method", "app");
eventValue.put("PII_type", "passport");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "submit_account_application", eventValue);
[[AppsFlyerLib shared] logEvent:@"submit_account_application"
withValues: @{
@"account_type": @"savings",
@"application_method": @"app",
@"PII_type": @"passport"
}];
AppsFlyerLib.shared().logEvent("submit_account_application",
withValues: [
"account_type": "savings",
"application_method": "app",
"PII_type": "passport"
])
Dictionary<string, string> SubmitAccountApplicationEvent = new Dictionary<string, string>();
SubmitAccountApplicationEvent.Add("account_type", "savings");
SubmitAccountApplicationEvent.Add("application_method", "app");
SubmitAccountApplicationEvent.Add("PII_type", "passport");
AppsFlyer.sendEvent ("submit_account_applicationn", SubmitAccountApplicationEvent);
アカウント開設の成功
イベント名: open_account_success
目的
アカウント申請が承認されたことを計測し、他のデータと比較することで、ユーザーについてもっと知ることができます。たとえば、承認されたアカウント申請を計測することで、アカウントを申請したが却下されたユーザー数を把握し、ファネルを改善したり、後でそれらのユーザーを再ターゲットしたりできます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーの申請が許可されアカウントが開設された時点でイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
account_type | string | savings | 開設されたアカウントタイプ。 |
application_method | string | アプリ | 申請が行われた場所。 |
PII_type | string | identification card | 申請時に使用されたIDタイプ。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("account_type", "savings");
eventValue.put("application_method", "app");
eventValue.put("PII_type", "identification card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "open_account_suucess", eventValue);
[[AppsFlyerLib shared] logEvent:@"open_account_success"
withValues: @{
@"account_type": @"savings",
@"application_method": @"app",
@"PII_type": @"identification card"
}];
AppsFlyerLib.shared().logEvent("open_account_success",
withValues: [
"account_type": "savings",
"application_method": "app",
"PII_type": "identification card"
])
Dictionary<string, string> OpenAccountSuccessEvent = new Dictionary<string, string>();
OpenAccountSuccessEventEvent.Add("account_type", "savings");
OpenAccountSuccessEventEvent.Add("application_method", "app");
OpenAccountSuccessEventEvent.Add("PII_type", "identification_card");
AppsFlyer.sendEvent ("open_account_success", OpenAccountSuccessEvent);
アカウント開設の拒否
イベント名: open_account_rejected
目的
アカウント申請が拒否されたことを計測し、他のデータと比較することで、ユーザーについてもっと知ることができます。たとえば、拒否されたアカウント申請を計測することで、アカウントを申請したが却下されたユーザー数を把握し、ファネルを改善したり、後でそれらのユーザーを再ターゲットしたりできます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
account_type | string | savings | 申請したアカウントの種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("account_type", "savings");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "open_account_rejected", eventValue);
[[AppsFlyerLib shared] logEvent:@"open_account_rejected"
withValues: @{
@"account_type": @"savings"
}];
AppsFlyerLib.shared().logEvent("open_account_rejected",
withValues: [
"account_type": "savings"
])
Dictionary<string, string> OpenAccountRejectedEvent = new Dictionary<string, string>();
OpenAccountRejectedEvent.Add("account_type", "savings");
AppsFlyer.sendEvent ("open_account_rejected", OpenAccountRejectedEvent);
クレジットカード申請
イベント名: submit_credit_card_application
目的
クレジットカードへの申請を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。たとえば、ユーザーのクレジットカードへの申し込みを計測することで、クレジットカードを申請したが却下されたユーザー数を把握し、ファネルを改善したり、後でそれらのユーザーを再ターゲットしたりできます。
イベント送信のロジック
このイベントを適切に記録するには、ユーザーが新しいクレジットカードの申請を送信したときにトリガーする必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
credit_card_type | string | gold card | 申請されたクレジットカードの種類。 |
application_method | string | アプリ | 申請が行われた場所。 |
PII_type | string | passport | 申請時に使用されたIDタイプ。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("credit_card_type", "gold card");
eventValue.put("application_method", "app");
eventValue.put("PII_type", "passport");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "submit_credit_card_application", eventValue);
[[AppsFlyerLib shared] logEvent:@"submit_credit_card_application"
withValues: @{
@"credit_card_type": @"gold_card",
@"application_method": @"app",
@"PII_type": @"passport"
}];
AppsFlyerLib.shared().logEvent("submit_credit_card_application",
withValues: [
"credit_card_type": "gold_card",
"application_method": "app",
"PII_type": "passport"
])
Dictionary<string, string> SubmitCreditCardApplicationEvent = new Dictionary<string, string>();
SubmitCreditCardApplicationEvent.Add("credit_card_type", "gold_card");
SubmitCreditCardApplicationEvent.Add("application_method", "app");
SubmitCreditCardApplicationEvent.Add("PII_type", "passport");
AppsFlyer.sendEvent ("submit_credit_card_application", SubmitCreditCardApplicationEvent);
クレジットカード申請の成功
イベント名: credit_card_application_success
目的
クレジットカードの申請成功を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。たとえば、クレジットカードの申請成功を計測することで、クレジットカードを申請したが却下されたユーザー数を把握し、ファネルを改善したり、後でそれらのユーザーを再ターゲットしたりできます。
イベント送信のロジック
このイベントを適切に記録するには、ユーザーのクレジットカードの申請が承認された時点でトリガーする必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
credit_card_type | string | gold card | 申請されたクレジットカードの種類。 |
application_method | string | アプリ | 申請が行われた場所。 |
PII_type | string | identification card | 申請時に使用されたIDタイプ。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("credit_card_type", gold card);
eventValue.put("application_method", app);
eventValue.put("PII_type", identification card);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "credit_card_application_success", eventValue);
[[AppsFlyerLib shared] logEvent:@"credit_card_application_success"
withValues: @{
@"credit_card_type": @"gold card",
@"application_method": @"app",
@"PII_type": @"identification card"
}];
AppsFlyerLib.shared().logEvent("credit_card_application_success",
withValues: [
"credit_card_type": "gold card",
"application_method": "app",
"PII_type": "identification card"
])
Dictionary<string, string> CreditCardApplicationSuccessEvent = new Dictionary<string, string>();
CreditCardApplicationSuccessEvent.Add("redit_card_type", "gold card");
CreditCardApplicationSuccessEvent.Add("application_method", "app");
CreditCardApplicationSuccessEvent.Add("PII_type", "identificationcard");
AppsFlyer.sendEvent ("credit_card_application_success", CreditCardApplicationSuccessEvent);
クレジットカード申請の拒否
イベント名: credit_card_application_rejected
目的
クレジットカードの申請拒否を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。たとえば、クレジットカードの申請拒否を計測することで、クレジットカードを申請したが却下されたユーザー数を把握し、ファネルを改善したり、後で他のクレジットカードへの勧誘でそれらのユーザーを再ターゲットしたりできます。
イベント送信のロジック
このイベントを適切に記録するには、ユーザーのクレジットカードの申請が拒否された時点でトリガーする必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
credit_card_type | string | gold card | 申請されたクレジットカードの種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("credit_card_type", "gold card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "credit_card_application_rejected", eventValue);
[[AppsFlyerLib shared] logEvent: @"credit_card_application_rejected"
withValues: @{
"credit_card_type: @"gold card"
}];
AppsFlyerLib.shared().logEvent("credit_card_application_rejected",
withValues: [
"credit_card_type: "gold card"
])
Dictionary<string, string> CreditCardApplicationRejectedEvent = new Dictionary<string, string>();
CreditCardApplicationRejectedEvent.Add("credit_card_type", "gold card");
AppsFlyer.sendEvent ("credit_card_application_rejected", CreditCardApplicationRejectedEvent);
クレジットカードの有効化
イベント名: credit_card_activation
目的
ユーザーが新しいクレジットカードを有効化したことを計測して、他のデータと比較することで、ユーザーについてより詳しく知ることができます。例えば、クレジットカードの有効化を記録することで、クレジットカードを取得したが、そのカードを有効にしなかったユーザーの数を知ることができ、この情報を使用して、ファネルを改善したり、ユーザーを再ターゲットしたりできます。
イベント送信のロジック
このイベントを適切に記録するには、ユーザーが新しいクレジットカードを有効化したときにトリガーする必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
credit_card_type | string | gold card | 申請されたクレジットカードの種類。 |
application_method | string | アプリ | 申請が行われた場所。 |
PII_type | string | identification card | 申請時に使用されたIDタイプ。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("credit_card_type", gold card);
eventValue.put("application_method", app);
eventValue.put("PII_type", identification card);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "credit_card_activation", eventValue);
[[AppsFlyerLib shared] logEvent: @"credit_card_activation"
withValues: @{
@"credit_card_type": @"gold card",
@"application_method: @"app",
@"PII_type": @"identification card"
}];
AppsFlyerLib.shared().logEvent("credit_card_activation",
withValues: [
"credit_card_type": "gold card",
"application_method": "app",
"PII_type": "identification card"
])
Dictionary<string, string> CreditCardActivationEvent = new Dictionary<string, string>();
CreditCardActivationEvent.Add("credit_card_type", "gold card");
CreditCardActivationEvent.Add(application_method", "app");
CreditCardActivationEvent.Add(PII_type", "identification_card");
AppsFlyer.sendEvent ("credit_card_activation", CreditCardActivationEvent);
ローン申請の送信
イベント名: submit_loan_application
目的
このイベントは、ローン申請の計測をサポートします。ローン申請の送信イベントを追跡すると、次のことに役立つでしょう。
- アプリ内のローン申請の総数を計測します。
- ローン申請の最大金額、最小金額、平均金額について把握できます。
- ユーザーが申請するローンの種類を確認できます。
イベント送信のロジック
このイベントは、ユーザーが正常にローン申請を送信した時に起動します。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
loan_type | string | housing | ローンの目的。 |
loan_amount | float | 1000 | ローン申込金額。 |
loan_period | string | 3か月 | ローン期間。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("loan_id", "1735102");
eventValue.put("loan_type", "housing");
eventValue.put("loam_amount", "1000");
eventValue.put("loan_period", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"submit_loan_application", eventValue);
[[AppsFlyerLib shared] logEvent: @"submit_loan_application"
withValues: @{
@"loan_id": @"1735102",
@"loan_type": @"housing",
@"loan_amount": @"1000",
@"loan_period": @"3 months"
}];
AppsFlyerLib.shared().logEvent("submit_loan_application",
withValues: [
"loan_id": "1735102",
"loan_type": "housing",
"loan_amount": "1000",
"loan_period": "3 months"
])
Dictionary<string, string> SubmitLoanApplication = new Dictionary<string, string>();
SubmitLoanApplication.Add("loan_id", "1735102");
SubmitLoanApplication.Add("loan_type", "housing");
SubmitLoanApplication.Add("loan_amount", "1000");
SubmitLoanApplication.Add("loan_period", "3 months");
AppsFlyer.sendEvent("submit_loan_application", SubmitLoanApplication);
ローンの承認
イベント名: loan_accepted
目的
ローンの承認イベントを計測すると、ローンの動向やその他の指標について知ることができます。
- どのような種類のローンが承認されたかを確認できます。
- 承認されたローンの申込金額が確認できます。
- ほとんどのローンを承認している貸し手は誰か、その種類や金額はいくらかを知ることができます。
イベント送信のロジック
このイベントは融資がローンされた時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
loan_type | string | housing | ローンの目的。 |
loan_amount | float | 1000 | ローン申込金額。 |
loan_period | string | 3か月 | ローン期間。 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", "1000");
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"loan_accepted" , eventValue);
[[AppsFlyerLib shared] logEvent: @"loan_accepted"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @"1000",
@"loan_type": @"3 months"
}];
AppsFlyerLib.shared().logEvent("loan_accepted",
withValues: [
"loan_id": "1735102",
"loan_amount": "1000",
"loan_type": "3 months"
])
Dictionary<string, string> LoanAccepted = new Dictionary<string, string>();
LoanAccepted.Add("loan_id", "1735102");
LoanAccepted.Add("loan_amount", "1000");
LoanAccepted.Add("loan_type", "3 months");
AppsFlyer.sendEvent("loan_accepted", LoanAccepted);
ローンの拒否
イベント名: loan_rejected
目的
ローンの拒否イベントを計測すると、ローンが拒否された理由を理解するために役立ちます。ローンの金額、ローン期間、拒否率の間の相関性を見ることができます。ローンを拒否されたユーザーをリターゲティングして、小額のローンを選ぶよう提案することもできます。
イベント送信のロジック
このイベントは貸し手がローンを拒否した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("loan_id", "1735102");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "loan_rejected" , eventValue);
[[AppsFlyerLib shared] logEvent:@"loan_rejected"
withValues: @{
@"loan_id": @"1735102",
}];
AppsFlyerLib.shared().logEvent("loan_rejected",
withValues: [
"loan_id": "1735102",
]);
Dictionary<string, string> LoanRejected = new Dictionary<string, string>();
LoanRejected.Add("loan_id", "1735102");
AppsFlyer.sendEvent("loan_rejected", LoanRejected);
フィンテック:P2P貸出
P2P(ピアツーピア)レンディングは、個人や企業が互いにお金を貸し借りする新しい方法です。
P2Pレンディングアプリ内でイベントを計測することをお勧めします。
- 個人の貸し手と借り手のアクティビティを計測することができます。
- 借り手がどのような融資に興味を持っているか、逆に貸し手がどのような種類の融資を提供するかを知ることができます。
- 融資の合計金額の平均、最小、最大値についてのメトリックを収集することができます。
- 融資の承認率と拒否率を計測できます。
イベントの計測からこのようなデータを収集することで、信頼できる借り手を明確化し、有利な金利を提供することができます。同様に、最も活発な貸し手は誰なのかを確認して、手数料を安く提供することができます。さらに、ユーザーに最も人気のある融資の種類がわかれば、そのユーザーを対象にマーケティングキャンペーンを開始することもできます。
登録の送信
イベント名: registration_submitted
目的
P2Pレンディングは悪用されやすいため、ユーザーは最初に本人確認を行う必要があります。この手続きは、登録リクエストの送信によって行います。登録の送信を計測することで、次のことが可能になります。
- ユーザー登録をしたがアカウントを承認しなかったユーザー数を計測できます。
- 登録方法(メール、Facebook、Google)と本人確認の割合の相関性を把握できます。
イベント送信のロジック
このイベントは、ユーザーがP2Pサービスに登録するリクエストを送信した後に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、Facebook、Google | ユーザーが選択したサインアップの方法(またはソーシャルログインでのサインアップ) |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "registration_submitted", eventValue);
[[AppsFlyerLib shared] logEvent:@"registration_submitted"
withValues: @{
AFEventParamRegistrationMethod: @"Facebook",
}];
AppsFlyerLib.shared().logEvent("registration_submitted",
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> RegistrationSubmitted = new Dictionary<string, string>();
RegistrationSubmitted.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent("registration_submitted", RegistrationSubmitted);
登録完了
イベント名: af_complete_registration
目的
登録完了イベントを計測すると、何人のユーザーが登録後に実際に本人確認を行ったかを確認できます。これらのユーザーをキャンペーンと関連付けし、どのようなキャンペーンがアクティブなユーザーを生み出すかを知ることができます。
イベント送信のロジック
このイベントは、ユーザーの登録が承認された時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | ユーザーが選択したサインアップの方法(またはソーシャルログインでのサインアップ) |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistration = new Dictionary<string, string>();
CompleteRegistration.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent("af_complete_registration", CompleteRegistration);
ローン申請の入力
イベント名: fill_loan_form_<FORM_NAME>
目的
ローンをリクエストするために、借り手は複数の申請フォームに入力する必要があります。フォームの離脱率を見るために、潜在的な借り手が入力したフォームを計測することができます。離脱率の他に、ローン申請フォームの入力を中止した借り手をリターゲティングすることもできます。このイベントを送信する時は、イベント名にフォーム名を追加してください。
イベント送信のロジック
借り手がフォームを送信する度にこのイベントを発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
注意
ローンを貸し手と関連付けることをおすすめします。これを行うには、必ずカスタマーユーザーIDを設定してください。カスタマーユーザーIDを設定することで、貸し手とAppsFlyerに表示されているアプリのユーザーとを照合することができます。カスタマーユーザーIDを設定することにより、そのカスタマーユーザーIDで送信されたすべてのイベントを確認できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "fill_loan_form_FORM_NAME", null);
[[AppsFlyerLib shared] logEvent:@"fill_loan_formFORM_NAME"
withValues: nil];
AppsFlyerLib.shared().logEvent("fill_loan_form_FORM_NAME",
withValues: nil);
AppsFlyer.sendEvent("fill_loan_form_FORM_NAME", null);
ローン申請の送信
イベント名: submit_loan_application
目的
このイベントは、ローン申請の計測をサポートします。ローン申請の送信イベントを追跡すると、次のことに役立つでしょう。
- アプリ内のローン申請の総数を計測します。
- ローン申請の最大金額、最小金額、平均金額について把握できます。
- ユーザーが申請するローンの種類を確認できます。
イベント送信のロジック
このイベントは、ユーザーが正常にローン申請を送信した時に起動します。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
loan_amount | float | 1000 | ローン申込金額 |
loan_type | string | 3か月 | ローン期間 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", 1000);
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"submit_loan_application", eventValue);
[[AppsFlyerLib shared] logEvent:@"submit_loan_application"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @1000,
@"loan_type": @"3 months"
}];
AppsFlyerLib.shared().logEvent("submit_loan_applications",
withValues: [
"loan_id": "1735102",
"loan_amount": 1000,
"loan_type": "3 months"
]);
Dictionary<string, string> SubmitLoanApplication = new Dictionary<string, string>();
SubmitLoanApplication.Add("loan_id", "1735102");
SubmitLoanApplication.Add("loan_amount", "1000");
SubmitLoanApplication.Add("loan_type", "3 months");
AppsFlyer.sendEvent("submit_loan_application", SubmitLoanApplication);
ローンの承認
イベント名: loan_accepted
目的
ローンの承認イベントを計測すると、ローンの動向やその他の指標について知ることができます。
- どのような種類のローンが承認されたかを確認できます。
- 承認されたローンの申込金額が確認できます。
- ほとんどのローンを承認している貸し手は誰か、その種類や金額はいくらかを知ることができます。
イベント送信のロジック
このイベントは融資がローンされた時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
loan_amount | float | 1000 | ローン申込金額 |
loan_type | string | 3か月 | ローン期間 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", 1000);
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"loan_accepted" , eventValue);
[[AppsFlyerLib shared] logEvent:@"loan_accepted"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @1000,
@"loan_type": @"3 months"
}];
AppsFlyerLib.shared().logEvent("loan_accepted",
withValues: [
"loan_id": "1735102",
"loan_amount": 1000,
"loan_type": "3 months"
]);
Dictionary<string, string> LoanAccepted = new Dictionary<string, string>();
LoanAccepted.Add("loan_id", "1735102");
LoanAccepted.Add("loan_amount", "1000");
LoanAccepted.Add("loan_type", "3 months");
AppsFlyer.sendEvent("loan_accepted", LoanAccepted);
ローンの拒否
イベント名: loan_rejected
目的
ローンの拒否イベントを計測すると、ローンが拒否された理由を理解するために役立ちます。ローンの金額、ローン期間、拒否率の間の相関性を見ることができます。ローンを拒否されたユーザーをリターゲティングして、小額のローンを選ぶよう提案することもできます。
イベント送信のロジック
このイベントは貸し手がローンを拒否した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
load_id | string | 1735102 | ローンID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", 1000);
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),loan_rejected" , eventValue);
[[AppsFlyerLib shared] logEvent:@"loan_rejected"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @1000,
@"loan_type": @"3 months"
}];
AppsFlyerLib.shared().logEvent("loan_rejected", withValues: [
"loan_id": "1735102",
"loan_amount": 1000,
"loan_type": "3 months"
]);
Dictionary<string, string> LoanRejected = new Dictionary<string, string>();
LoanRejected.Add("loan_id", "1735102");
LoanRejected.Add("loan_amount", "1000");
LoanRejected.Add("loan_type", "3 months");
AppsFlyer.sendEvent("loan_rejected", LoanRejected);
支払い
イベント名: payment
目的
支払いイベントの計測は、信頼できる借り手を把握するために役立つでしょう。信頼できる借り手とは、ローンの返済を怠らないように努力する借り手を指します。信頼できる借り手がどのキャンペーンから生み出されているかを知ることができます。このイベントの計測は、支払いの最小額、最大額、平均額に関するデータを収集するためにも役立つでしょう。
イベント送信のロジック
このイベントは、ユーザーがローンの返済を行うたびに発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
payment_amount | float | 100 | 支払額 |
payment_id | string | AE12SF | 支払いID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("payment_amount", 100);
eventValue.put("payment_id", "AE12SF");
AppsFlyerLib.getInstance().logEvent(
getApplicationContext(),
"payment" , eventValue);
[[AppsFlyerLib shared] logEvent:@"payment"
withValues: @{
@"loan_id": @"1735102",
@"payment_amount": @100,
@"payment_id": @"AE12SF"
}];
AppsFlyerLib.shared().logEvent("payment",
withValues: [
"loan_id": "1735102",
"payment_amount": 100,
"payment_id": "AE12SF"
]);
Dictionary<string, string> Payment = new Dictionary<string, string>();
Payment.Add("loan_id", "1735102");
Payment.Add("payment_amount", "100");
Payment.Add("payment_id", "AE12SF");
AppsFlyer.sendEvent("payment", Payment);
支払い完了
イベント名: payment_completed
目的
支払い完了イベントを計測すると、ローンの返済を怠らない借り手を特定するために役立ちます。また、このような借り手をリターゲティングし、利子の削減や他のプロモーションを提供することもできます。
イベント送信のロジック
このイベントはローンが完全に返済された時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
loan_id | string | 1735102 | ローンID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"payment_completed" , eventValue);
[[AppsFlyerLib shared] logEvent:@"payment_completed"
withValues: @{
@"loan_id": @"1735102"
}];
AppsFlyerLib.shared().logEvent("payment_completed",
withValues: [
"loan_id": "1735102"
]);
Dictionary<string, string> PaymentCompleted = new Dictionary<string, string>();
PaymentCompleted.Add("loan_id", "1735102");
AppsFlyer.sendEvent("payment_completed", PaymentCompleted);
オンライン教育
オンライン教育アプリはユーザーのリモート学習を可能にします。オンライン教育アプリで推奨されるアプリ内イベントには、登録、チュートリアル、コース修了、証明書の取得などがあります。これらのイベントを計測することがどのように役立つか、いくつかの例を紹介します。
- アプリ内登録を計測することで、ユーザーがどのコースを希望しているかを把握でき、ターゲティングに役立てることができます。
- 完了したチュートリアルを記録すると、リターゲティングできるユーザーを理解し、コースを完了するための追加のチュートリアルがあることを知らせることができます。
- 受信した証明書を記録すると、最も需要が高いコースと証明書を理解するのに役立ちます。
ログイン
イベント名: af_login
目的
このイベントは、登録したユーザーのリテンションを計測するために役立ちます。
イベント送信のロジック
ユーザーがログインする度にこのイベントを発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
登録完了
イベント名: af_complete_registration
目的
ユーザー登録を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。ユーザー登録を計測することで、次のことが可能になります。
- 何人のユーザーが、アプリをインストールしたのにサインアップしなかったかを確認できます。
- ユーザーがどのような登録方法を好むかがわかります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、facebook | サインアップ方法の種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.registration_method, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.complete_registration, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent ("af_complete_registration", CompleteRegistrationEvent);
チュートリアル完了
イベント名: af_tutorial_completion
目的
チュートリアルは、ユーザーがアプリの活用方法を学ぶために役立ちます。チュートリアル完了を計測することで、次のことが可能になります。
- ユーザーがつまずく可能性のあるトピックは何かを理解します。
- どのチュートリアルがうまくいかないかを知り、改善します。
イベント送信のロジック
このイベントが発火するシナリオは2つあります。
- ユーザーがチュートリアルを完了した時。正常なチュートリアルの完了を示す項目とともにイベントが送信されます。
- ユーザーがチュートリアルを開始したが、完了せずに中止した場合。ユーザーがチュートリアルを中止した時、そのユーザーがチュートリアルを完了していないことを示す項目とともにイベントが送信されます。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_success | boolean | yes | ユーザーがチュートリアルを完了したかどうか |
af_tutorial_id | string | 3 | チュートリアルのID |
af_content | string | algebra | チュートリアルの名前 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.SUCCESS, yes);
eventValue.put(AFInAppEventParameterName.TUTORIAL_ID, "3");
eventValue.put(AFInAppEventParameterName.CONTENT, "algebra");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.TUTORIAL_COMPLETION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventTutorial_completion
withValues: @{
AFEventParamSuccess: @YES,
AFEventParamTutorialId: @"3",
AFEventParamContent: @"algebra"
}];
AppsFlyerLib.shared().logEvent(AFEventTutorial_completion,
withValues: [
AFEventParamSuccess: YES,
AFEventParamTutorialId: "3",
AFEventParamContent: "algebra"
]);
Dictionary<string, string> TutorialCompletiondEvent = new Dictionary<string, string>();
TutorialCompletiondEvent.Add("af_success", "yes");
TutorialCompletiondEvent.Add("af_tutorial_id", "3");
TutorialCompletiondEvent.Add("af_tutorial_content", "algebra");
AppsFlyer.sendEvent ("af_tutorial_completion", TutorialCompletiondEvent);
エクササイズ完了
イベント名: complete_excercise
目的
エクササイズの完了を計測し、他のデータと照合することで、ユーザーについてより詳しく理解できます。例えば、エクサイズ完了イベントを計測することで、エクササイズを開始したが完了しなかったユーザーの数を把握できます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーがエクササイズを完了した時点でイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
course_name | string | algebra | コースの名前。 |
exercise_name | string | 2 | エクササイズの名前。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("course_name", "algebra");
eventValue.put("exercise_name", "2");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "complete_exercise", eventValue);
[[AppsFlyerLib shared] logEvent:@"complete_exercise"
withValues: @{
@"course_name": @"algebra",
@"exercise_name": @"2"
}];
AppsFlyerLib.shared().logEvent("complete_exercise",withValues:
["course_name": "algebra","exercise_name": "2" ])
Dictionary<string, string> CompleteExerciseEvent = new Dictionary<string, string>();
CompleteExerciseEvent.Add("course_name", "algebra");
CompleteExerciseEvent.Add("exercise_name", "2");
AppsFlyer.sendEvent ("complete_exercise", CompleteExerciseEvent);
コース完了
イベント名: course_completed
目的
コースの完了を計測し、他のデータと照合することで、ユーザーについてより詳しく理解できます。例えば、コース完了イベントを計測することで、コースを開始したが完了しなかったユーザーの数を把握できます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーがコースを完了した時点でイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
course_name | string | algebra | コースの名前。 |
course_completed | string | yes | コースが完了したかどうか。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("course_name", "algebra");
eventValue.put("course_completed", "yes");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "course_completed", eventValue);
[AppsFlyerLib shared] logEvent:@"course_completed" withValues:@{
@"course_name": @"algebra",
@"course_completed": @"yes"}];
ApAppsFlyerLib.shared().logEvent("course_completed", withValues:
[ "course_name": "algebra",
"course_completed": "yes"])
Dictionary<string, string> CourseCompletedEvent = new Dictionary<string, string>();
CourseCompletedEvent.Add("course_name", "algebra");
CourseCompletedEvent.Add("course_completed", "yes");
AppsFlyer.sendEvent ("course_completed
", CourseCompletedEvent);
証明書の発行
イベント名: certificate_issued
目的
証明書の発行を計測し、他のデータと照合することで、ユーザーについてより詳しく理解できます。例えば、証明書の発行イベントを計測することで、何人のユーザーがコースを完了したかを把握し、次のコースへ誘導するリターゲティングに活用できます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが証明書を発行したときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
course_name | string | algebra | コースの名前。 |
certificate_received | string | yes | 証明書が発行されたかどうか。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("course_name", "algebra");
eventValue.put("certificate_received", "yes");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "certificate issued", eventValue);
[[AppsFlyerLib shared] logEvent:@"course_completed" withValues: @{
@"course_name": @"algebra",
@"certificate_received": @"yes"}];
AppsFlyerLib.shared().logEvent("certificate issued", withValues:
[ "course_name": "algebra",
"certificate_received": "yes"])
Dictionary<string, string> CertificateIssuedEvent = new Dictionary<string, string>();
CertificateIssuedEvent.Add("course_name", "algebra");
CertificateIssuedEvent.Add("certificate_received", "yes");
AppsFlyer.sendEvent ("certificate issued
", CertificateIssuedEvent);
購入/課金
イベント名: af_purchase
目的
オンライン教育アプリの多くでは、ユーザーがアイテムを購入(例:コース、ソフトウェア、学校用品等)できるようになっています。購入イベントを実装することでユーザーのアプリ内購入を計測できます。購入イベントを計測することで、次のことが可能になります。
- アドネットワークと広告代理店間のユーザーのLTV(顧客生涯価値)とキャンペーンのROIを判断します。
- どのようなオファーがユーザーに最も人気があるのかを特定します。
- キャンペーンターゲティングを最適化するために、購入されたアイテムとキャンペーンを相互参照します。
イベント送信のロジック
このイベントを正しく計測するには、購入し、ユーザーが購入完了ページを開いた時にイベントを送信する必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 200 | 購入による予想収益 |
af_currency | string | 米ドル | 通貨コード |
af_content_id | string | 001, 092 | アイテムID |
order_id | string | 9277 | オーダーID |
af_receipt_id | string | 9277 | レシートID |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.REVENUE, 200);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "092");
eventValue.put("order_id", "9277");
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "9277");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @200,
AFEventParamCurrency: @"USD",
AFEventParamContentId: @"092",
@"order_id": @"9277",
AFEventParamReceiptId: @"9277"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase,
withValues: [
AFEventParamRevenue: 200,
AFEventParamCurrency: "USD",
AFEventParamContentId: "092",
"order_id": "9277",
AFEventParamReceiptId: "9277"
]);
Dictionary<string, string> purchaseEvent = new Dictionary<string, string>();
purchaseEvent.Add("af_revenue", "200");
purchaseEvent.Add("af_currency", "USD");
purchaseEvent.Add("af_content_id", "001");
purchaseEvent.Add("order_id", "9277");
purchaseEvent.Add("af_receipt_id", "9277");
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
ナビゲーション:配車アプリ
近年、配車サービスが人気を集めています。特に、大半の住民が自動車を所有していない都市部で人気となっています。アプリ内イベントを計測して分析することは、次に役立つでしょう。
- 乗客とドライバーがどのようにやり取りをしているか。
- 配車サービスの利用率の高い国。
- 価格、乗車回数、乗車距離に関する指標。
登録完了
イベント名: af_complete_registration
目的
登録完了イベントの計測は、ユーザーに関するインサイトを入手できます。登録完了イベントを計測することで、次のことに役立ちます。
- ユーザーが好む登録方法(Google、Facebook、メール)。
- アプリをダウンロードして、インストールした後に、実際に登録したユーザーの数。
- 国ごとの登録トレンドを確認し、ユーザーがアプリを使用する可能性の高い国を判断します。
イベント送信のロジック
このイベントは、ユーザーが正常に登録した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | ユーザーが登録に使用したプラットフォームまたは方法 | |
country_code | string | 66 | 国番号 (電話局番) |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "shoes");
eventValue.put("country_code", "66");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook",
@"country_code": @"66",
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook",
"country_code": "66"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
CompleteRegistrationEvent.Add("country_code", "66");
AppsFlyer.sendEvent("af_complete_registration", CompleteRegistrationEvent);
支払情報の追加
イベント名: af_add_payment_info
目的
支払い情報の追加イベントを計測することで、ユーザーを分類できます。これは、次のことに役立ちます。
- ユーザーが支払い情報を追加するのにかかる時間を確認します。
- 最もよく使用される支払い方法 (クレジットカード、e-Wallet) を確認します。
- よく使用される支払い方法のプロバイダーでキャンペーンやコラボレーションを実施します。
イベント送信のロジック
このイベントは、ユーザーがアカウントに正常に支払い情報を追加した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_success | boolean | true | 支払い方法の追加が成功したかどうか |
credit_card_type | string | Visa, Mastercard | クレジットカードのタイプ (オプション) |
payment_method_type | string | クレジットカード、E-Wallet | 支払い方法の種類 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SUCCESS, true);
eventValue.put("credit_card_type", "Visa");
eventValue.put("payment_method_type", true);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_PAYMENT_INFO, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventAddPaymentInfo
withValues: @{
AFEventParamSuccess: @TRUE,
@"credit_card_type": @"Visa",
@"payment_method_type": @"credit card"
}];
AppsFlyerLib.shared().logEvent(AFEventAddPaymentInfo, withValues: [
AFEventParamSuccess: true,
"credit_card_type": "Visa",
"payment_method_type": "credit card"
]);
Dictionary<string, string> AddPaymentInfoEvent = new Dictionary<string, string>();
AddPaymentInfoEvent.Add("af_success", "true");
AddPaymentInfoEvent.Add("credit_card_type", "Visa");
AddPaymentInfoEvent.Add("payment_method_type", "credit card");
AppsFlyer.sendEvent("af_add_payment_info", AddPaymentInfoEvent);
乗車予約のリクエスト
イベント名: ride_booking_requested
目的
乗車予約のリクエストイベントは、乗車予約関連の4つのイベントのうちの1つです。これらのイベントは次のとおりです。招待イベントを計測することで、次のことが可能になります。
- 人気のある目的地。
- ユーザーの出発地や目的地などのトレンド。
- 平均的な乗車距離。
- 大半のユーザーが居住する都市、地域、国。
さらに、このイベントに加えて、他の3つの予約関連イベントを計測すると、取引完了を確認するために役立ちます。完了した取引を計測して、未完了の取引と比較できます。たとえば、リクエストされた乗車予約の数と、完了した乗車予約またはキャンセルされた乗車予約の数を確認できます。
イベント送信のロジック
このイベントは、乗客が乗車予約リクエストを作成した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 22.4 | 乗車料金の見積もり |
af_currency | string | SGD | 通貨 |
af_destination_a | string | プラザ・シンガプーラ | 出発地 |
af_destination_b | string | マリーナベイ・サンズ | 到着地 |
距離 | float | 5.2 | 出発地から到着地までの距離 |
af_content_type | string | タクシー | 交通機関の種類 |
payment_method_type | string | クレジットカード、E-Wallet | 支払い方法の種類 |
af_city | string | シンガポール | 乗車を予約した都市 |
af_region | string | SFA | 乗車を予約した地域 |
af_country | string | シンガポール | 乗車を予約した国 |
order_id | string | 135790 | 注文ID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_requested", eventValue);
[[AppsFlyerLib shared] logEvent:@"ride_booking_requested"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790"
}];
AppsFlyerLib.shared().logEvent("ride_booking_requested",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
"distance": 5.2,
AFEventParamContentType: "Taxi",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790"
]);
Dictionary<string, string> RideBookingRequestedEvent = new Dictionary<string, string>();
RideBookingRequestedEvent.Add("af_price", "22.4");
RideBookingRequestedEvent.Add("af_currency", "SGD");
RideBookingRequestedEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingRequestedEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingRequestedEvent.Add("distance", "5.2");
RideBookingRequestedEvent.Add("af_content_type", "Taxi");
RideBookingRequestedEvent.Add("payment_method_type", "credit card");
RideBookingRequestedEvent.Add("notes", "Taxi stand");
RideBookingRequestedEvent.Add("af_city", "Singapore");
RideBookingRequestedEvent.Add("af_region", "SFA");
RideBookingRequestedEvent.Add("af_country", "Singapore");
RideBookingRequestedEvent.Add("af_order_id", "135790");
AppsFlyer.sendEvent("ride_booking_requested", RideBookingRequestedEvent);
乗車予約の確定
イベント名: ride_booking_confirmed
目的
乗車予約の確定イベントは、乗車予約関連の4つのイベントのうちの1つです。招待イベントを計測することで、次のことが可能になります。
- 最も稼働率の高いドライバー。
- ドライバーがよくリクエストされる目的地。
- 各ドライバーの平均や全体の価格。
さらに、このイベントに加えて、他の3つの予約関連イベントを計測すると、ドライバーのアクティビティを詳しく確認するために役立ちます。乗車予約リクエストの大半を確定するドライバー、短距離サービスまたは長距離サービスを選択するドライバーなどを確認できます。
イベント送信のロジック
このイベントはドライバーが予約を承認した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 22.4 | 乗車料金の見積もり |
af_currency | string | SGD | 通貨 |
af_destination_a | string | プラザ・シンガプーラ | 出発地 |
af_destination_b | string | マリーナベイ・サンズ | 到着地 |
距離 | float | 5.2 | 出発地から到着地までの距離 |
af_content_type | string | タクシー | 交通機関の種類 |
driver_id | string | 1706 | 乗車サービスを確定したドライバーのID |
payment_method_type | string | クレジットカード、E-Wallet | 支払い方法の種類 |
af_city | string | シンガポール | 乗車を予約した都市 |
af_region | string | SFA | 乗車を予約した地域 |
af_country | string | シンガポール | 乗車を予約した国 |
af_order_id | string | 135790 | 注文ID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("driver_id", "1706");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_confirmed", eventValue);
[[AppsFlyerLib shared] logEvent:@"ride_booking_confirmed"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"driver_id": @"1706",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790"
}];
AppsFlyerLib.shared().logEvent("ride_booking_confirmed",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
"distance": 5.2,
AFEventParamContentType: "Taxi",
"driver_id": "1706",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790"
]);
Dictionary<string, string> RideBookingConfirmedEvent = new Dictionary<string, string>();
RideBookingConfirmedEvent.Add("af_price", "22.4");
RideBookingConfirmedEvent.Add("af_currency", "SGD");
RideBookingConfirmedEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingConfirmedEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingConfirmedEvent.Add("distance", "5.2");
RideBookingConfirmedEvent.Add("af_content_type", "Taxi");
RideBookingConfirmedEvent.Add("driver_id", "1706");
RideBookingConfirmedEvent.Add("payment_method_type", "credit card");
RideBookingConfirmedEvent.Add("notes", "Taxi stand");
RideBookingConfirmedEvent.Add("af_city", "Singapore");
RideBookingConfirmedEvent.Add("af_region", "SFA");
RideBookingConfirmedEvent.Add("af_country", "Singapore");
RideBookingConfirmedEvent.Add("af_order_id", "135790");
AppsFlyer.sendEvent("ride_booking_confirmed", RideBookingConfirmedEvent);
乗車予約キャンセル
イベント名: ride_booking_canceled
目的
乗車予約キャンセルイベントは、乗車予約関連の4つのイベントのうちの1つです。招待イベントを計測することで、次のことが可能になります。
- キャンセルの多いドライバーや乗客を特定します。
- キャンセルされた回数を把握します。
- キャンセル率を、価格、目的地、距離、都市などのアトリビューションと関連付けます。
- 乗車予約がキャンセルされた理由を把握します。
イベント送信のロジック
このイベントは予約がキャンセルされた時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 22.4 | 乗車料金の見積もり |
af_currency | string | SGD | 通貨 |
af_destination_a | string | プラザ・シンガプーラ | 出発地 |
af_destination_b | string | マリーナベイ・サンズ | 到着地 |
距離 | float | 5.2 | 出発地から到着地までの距離 |
af_content_type | string | タクシー | 交通機関の種類 |
driver_id | string | 1706 | 乗車サービスを確定したドライバーのID |
cancelation_reason | string | 価格が高すぎる、ドライバーが現れなかった、乗客が現れなかった | 乗車予約がキャンセルされた理由 |
payment_method_type | string | クレジットカード、E-Wallet | 支払い方法の種類 |
af_city | string | シンガポール | 乗車を予約した都市 |
af_region | string | SFA | 乗車を予約した地域 |
af_country | string | シンガポール | 乗車を予約した国 |
order_id | string | 135790 | 注文ID |
canceled_by | string | 乗客 | 乗車予約が乗客またはドライバーのどちらによってキャンセルされたか |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("driver_id", "1706");
eventValue.put("cancellation_reason", "driver didn't show up");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
eventValue.put("canceled_by", "passenger");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_canceled", eventValue);
[[AppsFlyerLib shared] logEvent:@"ride_booking_canceled"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"driver_id": @"1706",
@"cancelation_reason": @"driver didn't show up",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790",
@"canceled_by": @"passenger"
}];
AppsFlyerLib.shared().logEvent("ride_booking_canceled",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
"distance": 5.2,
AFEventParamContentType: "Taxi",
"driver_id": "1706",
"cancelation_reason": "driver didn't show up",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790",
"canceled_by": "passenger"
]);
Dictionary<string, string> RideBookingCanceledEvent = new Dictionary<string, string>();
RideBookingCanceledEvent.Add("af_price", "22.4");
RideBookingCanceledEvent.Add("af_currency", "SGD");
RideBookingCanceledEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingCanceledEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingCanceledEvent.Add("distance", "5.2");
RideBookingCanceledEvent.Add("af_content_type", "Taxi");
RideBookingCanceledEvent.Add("driver_id", "1706");
RideBookingCanceledEvent.Add("cancelation_reason", "driver didn't show up");
RideBookingCanceledEvent.Add("payment_method_type", "credit card");
RideBookingCanceledEvent.Add("notes", "Taxi stand");
RideBookingCanceledEvent.Add("af_city", "Singapore");
RideBookingCanceledEvent.Add("af_region", "SFA");
RideBookingCanceledEvent.Add("af_country", "Singapore");
RideBookingCanceledEvent.Add("af_order_id", "135790");
RideBookingCanceledEvent.Add("canceled_by", "passenger");
AppsFlyer.sendEvent("ride_booking_cancelled", RideBookingCanceledEvent);
乗車予約完了
イベント名: ride_booking_completed
目的
乗車予約完了イベントは、乗車予約関連の4つのイベントのうちの1つです。招待イベントを計測することで、次のことが可能になります。
- 乗客の支出とドライバーの収入の詳細を把握します。
- 乗車の完了を、目的地、距離、支払いタイプ、ドライバーIDなどのアトリビューションと関連付けます。
- ドライバーと乗客の平均移動距離と全体的な移動距離を確認します。
- 完了した乗車と、キャンセルされた乗車を比較します。
- ドライバーのスコアを記録し、計測します。
イベント送信のロジック
このイベントは乗車が完了した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 22.4 | 乗車料金の見積もり |
af_currency | string | SGD | 通貨 |
af_destination_a | string | プラザ・シンガプーラ | 出発地 |
af_destination_b | string | マリーナベイ・サンズ | 到着地 |
距離 | float | 5.2 | 出発地から到着地までの距離 |
af_content_type | string | タクシー | 交通機関の種類 |
driver_id | string | 1706 | 乗車サービスを確定したドライバーのID |
payment_method_type | string | クレジットカード、E-Wallet | 支払い方法の種類 |
af_city | string | シンガポール | 乗車を予約した都市 |
af_region | string | SFA | 乗車を予約した地域 |
af_country | string | シンガポール | 乗車を予約した国 |
order_id | string | 135790 | 注文ID |
credits_earned | int | 248 | 乗車を完了したことにより、乗客が獲得したクレジット |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B,"Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("driver_id", "1706");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
eventValue.put("credits_earned", 248);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_completed" , eventValue);
[[AppsFlyerLib shared] logEvent:@"ride_booking_completed"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"driver_id": @"1706",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790",
@"credits_earned": @248
}];
AppsFlyerLib.shared().logEvent("ride_booking_completed",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
distance": 5.2,
AFEventParamContentType: "Taxi",
"driver_id": "1706",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790",
"credits_earned": 248
]);
Dictionary<string, string> RideBookingCompletedEvent = new Dictionary<string, string>();
RideBookingCompletedEvent.Add("af_price", "22.4");
RideBookingCompletedEvent.Add("af_currency", "SGD");
RideBookingCompletedEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingCompletedEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingCompletedEvent.Add("distance", "5.2");
RideBookingCompletedEvent.Add("af_content_type", "Taxi");
RideBookingCompletedEvent.Add("driver_id", "1706");
RideBookingCompletedEvent.Add("payment_method_type", "credit card");
RideBookingCompletedEvent.Add("notes", "Taxi stand");
RideBookingCompletedEvent.Add("af_city", "Singapore");
RideBookingCompletedEvent.Add("af_region", "SFA");
RideBookingCompletedEvent.Add("af_country", "Singapore");
RideBookingCompletedEvent.Add("af_order_id", "135790");
AppsFlyer.sendEvent("ride_booking_completed", RideBookingCompletedEvent);
クレジット利用
イベント名: af_spent_credits
目的
上記の乗車予約完了イベントには、credits_earned
という名前の項目があります。この項目は乗車するたびに乗客が獲得するクレジットが記録します。その後、乗客はこのクレジットを利用してクーポンや割引を獲得できます。これらのイベントを計測することで、次のことが可能になります。
- クレジットを利用してクーポンを獲得した乗客の数。
- 乗客が好むクーポンや割引の種類。
イベント送信のロジック
このイベントは、乗客がクレジットを消費した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_content | string | 映画のチケット1回分 | クーポンや割引の種類 |
credits_used | int | 1000 | 使用されたクレジット数 |
credits_remaining | int | 2090 | アカウントのクレジット残高 |
invoice_id | string | KO215123SD | クレジットを消費する際に作成された請求書のID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT, "Single movie ticket");
eventValue.put("credits_used", 1000);
eventValue.put("invoice_id", "");
eventValue.put("credits_remaining", "KO215123SD");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "spent_credits" , eventValue);
[[AppsFlyerLib shared] logEvent:@"spent_credits"
withValues: @{
AFEventParamContent: @"Single movie ticket",
@"credits_used": @1000,
@"credits_remaining": @2090,
@"invoice_id": @"KO215123SD"
}];
AppsFlyerLib.shared().logEvent("spent_credits",
withValues: [
AFEventParamContent: "Single movie ticket",
"credits_used": 1000,
"credits_remaining": 2090,
"invoice_id": "KO215123SD"
]);
Dictionary<string, string> CreditsSpent = new Dictionary<string, string>();
CreditsSpent.Add("af_content", "Single movie ticket");
CreditsSpent.Add("credits_used", "1000");
CreditsSpent.Add("credits_remaining", "2090");
CreditsSpent.Add("invoice_id", "KO215123SD");
AppsFlyer.sendEvent("af_content_view", CreditsSpent);
旅行:航空券予約
航空券予約アプリを使用すると、簡単に航空券を予約できるだけでなく、最も優れた割引価格を選ぶことができます。計測を推奨するイベントとして、航空券の予約、航空券の検索、割引価格の表示が挙げられます。このようなイベントを計測すると、ユーザーの嗜好や購入について分析するために役立ちます。たとえば、イベントで生成されるデータを分析すると、次のことが確認できるでしょう。
- 人気のある目的地。
- 季節的なトレンドを分析します。
- ユーザーに人気のある航空会社を把握します。
旅行の予約
イベント名: af_travel_booking
目的
航空券予約はアプリの主要機能です。このイベントを全ての項目と共に計測することで、次のようなインサイトが得られます。
- 人気のある目的地。
- 人気のある航空会社。
- 季節的なトレンド。
イベント送信のロジック
このイベントは、ユーザーが航空券を予約した後、予約完了ページが表示された際に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 647 | 予約に関連する収益 |
af_currency | string | SGD | 通貨コード |
af_price | float | 674 | 価格 |
af_content_id | string | ODIRNH | 航空券割引ID |
af_departing_departure_date | string | 2018-06-21 | 出発日 |
af_returning_departure_date | string | 2018-06-26 | 復路出発日 |
af_destination_a | string | BKK | 最初の目的地 |
af_destination_b | string | SYD | 第2の目的地(該当する場合) |
airline_code | string | KLM | 航空会社コード |
af_class | string | エコノミー | 予約した航空券のクラス |
purchase_method | string | クレジットカード | クレジットカード、PayPalなど。 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 647);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DEPARTING_DEPARTURE_DATE, "2018-06-21");
eventValue.put(AFInAppEventParameterName.RETURNING_DEPARTURE_DATE, "2018-06-26");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "BKK");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "SYD");
eventValue.put("airline_code", "KLM");
eventValue.put(AFInAppEventParameterName.CLASS, "economy");
eventValue.put("purchase_method", "credit card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.TRAVEL_BOOKING, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventTravelBooking
withValues: @{
AFEventParamRevenue: @647,
AFEventParamCurrency: @"SGD",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDepartingDepartureDate: @"2018-21-06",
AFEventParamReturningDepartureDate: @"2018-26-06",
AFEventParamDestinationA: @"BKK",
AFEventParamDestinationB: @"SYD",
@"airline_code": @"KLM",
AFEventParamClass: @"economy",
@"purchase_method": @"credit card"
}];
AppsFlyerLib.shared().logEvent(AFEventTravelBooking,
withValues: [
AFEventParamRevenue: 647,
AFEventParamCurrency: "SGD",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDepartingDepartureDate: "2018-21-06",
AFEventParamReturningDepartureDate: "2018-26-06",
AFEventParamDestinationA: "BKK",
AFEventParamDestinationB: "SYD",
"airline_code": "KLM",
AFEventParamClass: "economy",
"purchase_method": "credit card"
]);
Dictionary<string, string> TravelBookingEvent = new Dictionary<string, string>();
TravelBookingEvent.Add("af_revenue", "647");
TravelBookingEvent.Add("af_currency", "SGD");
TravelBookingEvent.Add("af_price", "974");
TravelBookingEvent.Add("af_content_id", "ODIRNH");
TravelBookingEvent.Add("af_departing_departure_date", "2018-06-21");
TravelBookingEvent.Add("af_returning_departure_date", "2018-06-26");
TravelBookingEvent.Add("af_destination_a", "BKK");
TravelBookingEvent.Add("af_destination_b", "SYD");
TravelBookingEvent.Add("airline_code", "KLM");
TravelBookingEvent.Add("af_class", "economy");
TravelBookingEvent.Add("purchase_method", "credit card");
AppsFlyer.sendEvent ("af_travel_booking", TravelBookingEvent);
コンテンツ閲覧
イベント名: af_content_view
目的
ユーザーは、検索を実行した後、関連性の高い検索結果をクリックします。検索結果でユーザーに表示するコンテンツを計測すると、次のことに役立ちます。
- ユーザーに最も人気のある航空券の割引を把握します。
- 検索結果が検索キーワードと関連性があるかを把握します。
イベント送信のロジック
このイベントは、ユーザーが検索結果をクリックした際に発火することを推奨します。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_departing_departure_date | string | 2018-06-21 | 出発日 |
af_returning_departure_date | string | 2018-06-26 | 復路出発日 |
af_destination_a | string | BKK | 最初の目的地 |
af_destination_b | string | SYD | 第2の目的地(該当する場合) |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DEPARTING_DEPARTURE_DATE, "2018-06-21");
eventValue.put(AFInAppEventParameterName.RETURNING_DEPARTURE_DATE, "2018-06-26");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "BKK");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "SYD");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.CONTENT_VIEW, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventContentView
withValues: @{
AFEventParamDepartingDepartureDate: @"2018-21-06",
AFEventParamReturningDepartureDate: @"2018-26-06",
AFEventParamDestinationA: @"BKK",
AFEventParamDestinationB: @"SYD"
}];
AppsFlyerLib.shared().logEvent(AFEventContentView, withValues: [
AFEventParamDepartingDepartureDate: "2018-21-06",
AFEventParamReturningDepartureDate: "2018-26-06",
AFEventParamDestinationA: "BKK",
AFEventParamDestinationA: "SYD"
]);
Dictionary<string, string> ContentViewEvent = new Dictionary<string, string>();
ContentViewEvent.Add("af_departing_departure_date", "2018-06-21");
ContentViewEvent.Add("af_returning_departure_date", "2018-06-26");
ContentViewEvent.Add("af_destination_a", "BKK");
ContentViewEvent.Add("af_destination_b", "SYD");
AppsFlyer.sendEvent ("af_content_view", ContentViewEvent);
検索
イベント名: af_search
目的
航空券予約アプリでは、ユーザーは航空券や割引価格を検索できます。ユーザーの嗜好に関するインサイトを取得する方法の1つは、検索パラメータを計測することです。検索イベントを紐づく項目と共に計測することで、次のことが可能になります。
- ユーザーが最もよく検索している内容。
- 最も人気のある目的地。
- 子供連れユーザーの数。
- ユーザーが旅行する、または旅行を計画する時期。
イベント送信のロジック
このイベントは、ユーザーが検索フォームに入力した後、検索ボタンをクリックした際に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_num_children | int | 0 | 同伴する子供の数 |
af_destination_a | string | BKK | 最初の目的地 |
af_destination_b | string | SYD | 第2の目的地(該当する場合) |
af_departing_departure_date | string | 2018-06-21 | 出発日 |
af_returning_departure_date | string | 2018-06-26 | 復路出発日 |
af_num_infants | int | 0 | 同伴する幼児の数 |
af_num_adults | int | 1 | 同伴する大人の数 |
コードの例
Map<String, Object> eventValue = new HashMap<String,
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "BKK");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "SYD");
eventValue.put(AFInAppEventParameterName.DEPARTING_DEPARTURE_DATE, "2018-06-21");
eventValue.put(AFInAppEventParameterName.RETURNING_DEPARTURE_DATE, "2018-06-26");
eventValue.put(AFInAppEventParameterName.NUM_INFANTS, 0);
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 1);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SEARCH, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventSearch
withValues: @{
AFEventParamNumChildren: @0,
AFEventParamDestinationA: @"BKK",
AFEventParamDestinationB: @"SYD",
AFEventParamDepartingDepartureDate: @"2018-21-06",
AFEventParamReturningDepartureDate: @"2018-26-06",
AFEventParamNumInfants: @0,
AFEventParamNumAdults: @1
}];
AppsFlyerLib.shared().logEvent(AFEventSearch, withValues: [
AFEventParamNumChildren: 0,
AFEventParamDestinationA: "BKK",
AFEventParamDestinationB: "SYD",
AFEventParamDepartingDepartureDate: "2018-21-06",
AFEventParamReturningDepartureDate: "2018-26-06",
AFEventParamNumInfants: 0,
AFEventParamNumAdults: 1
]);
Dictionary<string, string> SearchEvent = new Dictionary<string, string>();
SearchEvent.Add("af_num_children", "0");
SearchEvent.Add("af_destination_a", "BKK");
SearchEvent.Add("af_destination_b", "SYD");
SearchEvent.Add("af_departing_departure_date", "2018-06-21");
SearchEvent.Add("af_returning_departure_date", "2018-06-26");
SearchEvent.Add("af_num_infants", "0");
SearchEvent.Add("af_num_adults", "0");
AppsFlyer.sendEvent ("af_search", SearchEvent);
支払情報の追加
イベント名: af_add_payment_info
目的
このイベントは、航空券を予約する際に支払い情報の追加に成功した場合と、失敗した場合を計測するために役立ちます。
イベント送信のロジック
このイベントは、ユーザーが航空券予約ボタンをクリックした際に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_success | boolean | true | 支払い方法の追加が成功したかどうか |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SUCCESS, true);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_PAYMENT_INFO, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventAddPaymentInfo
withValues: @{
AFEventParamSuccess: @TRUE
}];
AppsFlyerLib.shared().logEvent(AFEventAddPaymentInfo,
withValues: [
AFEventParamSuccess: true
]);
Dictionary<string, string> AddPaymentInfoEvent = new Dictionary<string, string>();
AddPaymentInfoEvent.Add("af_success", "true");
AppsFlyer.sendEvent ("af_add_payment_info", AddPaymentInfoEvent);
初回購入
イベント名: first_purchase
目的
このイベントは、購入イベントと同じです。ただし、購入イベントと違い、初回購入イベントは次のことを計測するために使用されます。
- 新規購入者が、購入にどれくらいの時間がかかるかを確認できます。
- どのフライトが初回購入時に購入されやすいかを知ることができます。
- 初回購入の平均的な価格と収益を把握できます。
イベント送信のロジック
このイベントは、ユーザーが初回購入を完了した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 1200 | 購入からの収益 |
af_price | float | 4000 | 全体の購入金額の合計 |
af_content_id | string | 121, 262 | 商品ID |
af_content_type | string | flight | 商品カテゴリ |
af_currency | string | AUD | 通貨 |
af_quantity | int | 1 | カート内の商品の数 |
af_order_id | string | X123ABC | 購入後に生成されるオーダーID |
af_receipt_id | string | X123ABC | CRITEOとGoogle AdWordsのリターゲティング連携に必要なオーダーID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "flight");
// for multiple product categories set the param value as: new String {"flight", "meal"}
eventValue.put(AFInAppEventParameteName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {1}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "first_purchase", eventValue);
[[AppsFlyerLib shared] logEvent:("first_purchase")
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as: @[@"flight" , @"meal"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as: @[@1]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerLib.shared().logEvent("first_purchase", withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["flight", "meal"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: // [1]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> FirstPurchaseEvent = new Dictionary<string, string>();
FirstPurchaseEvent.Add("af_revenue", "1200");
FirstPurchaseEvent.Add("af_price", "4000");
FirstPurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
FirstPurchaseEvent.Add("af_content_type", "shoes");
// for multiple product categories, set the param value as: ["flight", "meal"]
FirstPurchaseEvent.Add("af_currency", "USD");
FirstPurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [1]
FirstPurchaseEvent.Add("af_order_id", "X123ABC");
FirstPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.sendEvent ("first_purchase", FirstPurchaseEvent);
旅行:ホテル予約
ホテル予約アプリのアプリ内イベントを計測することで、実際に休暇を予約するユーザーが、どのキャンペーンやメディアソースから訪れているかを確認できます。さらに、最も多く予約し、収益性の高いユーザーをもたらすキャンペーンやメディアソースについても確認できます。ホテルの評価、季節、国、子供の数などの設定を、特定のメディアソースから訪れるユーザーにアトリビュートできます。ユーザーの嗜好をメディアソースにアトリビュートすると、ユーザーの嗜好にターゲットを定めることで、メディアソース内でキャンペーンを最適化することができます。
登録完了
イベント名: af_complete_registration
目的
ユーザー登録を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。ユーザー登録を計測することで、次のことが可能になります。
- 何人のユーザーが、アプリをインストールしたのにサインアップしなかったかを確認できます。
- ユーザーがどのような登録方法を好むかがわかります。
- 実際に登録するユーザーをもたらすメディアソースを確認できます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、facebook | サインアップ方法の種類 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompletedRegistrationEvent = new Dictionary<string, string>();
CompletedRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent ("af_complete_registration", CompletedRegistrationEvent);
ログイン
イベント名: af_login
目的
このイベントは、登録したユーザーのリテンションを計測するために役立つでしょう。
イベント送信のロジック
このイベントは、ユーザーがログインする、またはアプリを開くた度に発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),
AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin
withValues: nil
];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
検索
イベント名: af_search
目的
このイベントにより、ユーザーが検索している内容を確認できます。ユーザーが検索している内容が分かれば、より適した割引やプロモーションを提供できます。さらに、特定の地域のユーザーが何を検索しているかを確認し、これに応じて、さまざまなメディアソースでターゲットを定めることができます。
イベント送信のロジック
このイベントは、ユーザーが検索を実行した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_date_a | string | 2018/07/26 | チェックイン日 |
af_date_b | string | 2018/08/01 | チェックアウト日 |
af_destination_a | string | ロンドン | ユーザーのロケーション |
af_destination_b | string | マドリード | ホテルの場所 |
af_num_adults | float | 2 | 宿泊者数 |
af_num_children | float | 0 | 子供の数 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SEARCH, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventSearch
withValues: @{
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0
}];
AppsFlyerLib.shared().logEvent(AFEventSearch, withValues: [
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0
]);
Dictionary<string, string> Search =
new Dictionary<string, string>();
Search.Add("af_date_a", "2018/07/26");
Search.Add("af_date_b", "2018/08/01");
Search.Add("af_destination_a", "London");
Search.Add("af_destination_b", "Madrid");
Search.Add("af_num_adults", "2");
Search.Add("af_num_children", "0");
AppsFlyer.sendEvent("af_add_to_wish_list", Search);
コンテンツ閲覧
イベント名: af_content_view
目的
このイベントを使用すると、ユーザーが閲覧しているホテルを把握できます。ユーザーが検索している宿泊施設のタイプや、季節や場所といったユーザーの嗜好を確認できます。これにより、このようなユーザーを広告やプロモーションでリターゲティングできます。さらに、閲覧した後、実際に予約したユーザーと、単に閲覧しただけのユーザーを比較できます。実際に予約したユーザーについて、このユーザーがどのメディアソースからもたらされたかを確認できます。単に閲覧しただけのユーザーについては、彼らをリターゲティングできます。
イベント送信のロジック
このイベントは、ユーザーがホテルを閲覧している時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 674 | ホテルの定価 |
af_content_id | string | ODIRNH | ホテルのID |
af_date_a | string | 2018/07/26 | チェックイン日 |
af_date_b | string | 2018/08/01 | チェックアウト日 |
af_destination_a | string | ロンドン | ユーザーのロケーション |
af_destination_b | string | マドリード | ホテルの場所 |
af_class | string | デラックス | 客室タイプ |
af_num_adults | float | 2 | 宿泊者数 |
af_num_children | float | 0 | 子供の数 |
af_hotel_score | float | 9.6 | ホテルのレビュー評価 |
af_preferred_star_ratings | float | 5 | 希望するホテルの星評価 |
af_preferred_neighborhoods | string | 中心部 | ホテルのエリア |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.CONTENT_VIEW, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventContentView
withValues: @{
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro"
}];
AppsFlyerLib.shared().logEvent(AFEventContentView, withValues: [
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro"
]);
Dictionary<string, string> ContentView =
new Dictionary<string, string>();
ContentView.Add("af_currency", "GBP");
ContentView.Add("af_price", "674");
ContentView.Add("af_content_id", "ODIRNH");
ContentView.Add("af_date_a", "2018/07/26");
ContentView.Add("af_date_b", "2018/08/01");
ContentView.Add("af_destination_a", "London");
ContentView.Add("af_destination_b", "Madrid");
ContentView.Add("af_class", "Deluxe");
ContentView.Add("af_num_adults", "2");
ContentView.Add("af_num_children", "0");
ContentView.Add("af_hotel_score", "9.6");
ContentView.Add("af_preferred_star_ratings", "5");
ContentView.Add("af_preferred_neighborhoods", "Centro");
AppsFlyer.sendEvent("af_content_view", ContentView);
ウィッシュリストに追加
イベント名: af_add_to_wishlist
目的
ウィッシュリストに追加イベントでは、ユーザーが予約を希望するホテルや目的地を把握できます。このイベントを計測すると、ユーザーの希望に関するインサイトを得ることができます。ユーザーが特定のホテル(特定の地域や評価など)を探していることが分かれば、このようなユーザーにターゲティングおよびリターゲティングを実施できます。
イベント送信のロジック
このイベントは、ユーザーがホテルをウィッシュリストに追加した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 674 | ホテルの定価 |
af_content_id | string | ODIRNH | ホテルのID |
af_date_a | string | 2018/07/26 | チェックイン日 |
af_date_b | string | 2018/08/01 | チェックアウト日 |
af_destination_a | string | ロンドン | ユーザーのロケーション |
af_destination_b | string | マドリード | ホテルの場所 |
af_class | string | デラックス | 客室タイプ |
af_num_adults | float | 2 | 宿泊者数 |
af_num_children | float | 0 | 子供の数 |
af_hotel_score | float | 9.6 | ホテルのレビュー評価 |
af_preferred_star_ratings | float | 5 | 希望するホテルの星評価 |
af_preferred_neighborhoods | string | 中心部 | ホテルのエリア |
purchase_method | string | クレジットカード | 購入方法 |
af_coupon_code | string | SUM2018 | プロモーションコードまたはロイヤルティー報酬ポイント |
property_type | string | ホテル | 宿泊施設のタイプ |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
eventValue.put("purchase_method", "credit card");
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "SUM2018");
eventValue.put("property_type", "hotel");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_TO_WISH_LIST, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventAddToWishlist
withValues: @{
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro",
@"purchase_method": @"credit card",
AFEventParamCouponCode: @"SUM2018",
@"property_type": @"hotel"
}];
AppsFlyerLib.shared().logEvent(AFEventAddToWishlist, withValues: [
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro",
"purchase_method": "credit card",
AFEventParamCouponCode: "SUM2018",
"property_type": "hotel"
]);
Dictionary<string, string> AddToWishList =
new Dictionary<string, string>();
AddToWishList.Add("af_currency", "GBP");
AddToWishList.Add("af_price", "674");
AddToWishList.Add("af_content_id", "ODIRNH");
AddToWishList.Add("af_date_a", "2018/07/26");
AddToWishList.Add("af_date_b", "2018/08/01");
AddToWishList.Add("af_destination_a", "London");
AddToWishList.Add("af_destination_b", "Madrid");
AddToWishList.Add("af_class", "Deluxe");
AddToWishList.Add("af_num_adults", "2");
AddToWishList.Add("af_num_children", "0");
AddToWishList.Add("af_hotel_score", "9.6");
AddToWishList.Add("af_preferred_star_ratings", "5");
AddToWishList.Add("af_preferred_neighborhoods", "Centro");
AddToWishList.Add("purchase_method", "credit card");
AddToWishList.Add("af_coupon_code", "SUM2018");
AddToWishList.Add("af_property_type", "hotel");
AppsFlyer.sendEvent("af_add_to_wish_list", AddToWishList);
チェックアウト開始
イベント名: af_initiated_checkout
目的
このイベントにより、チェックアウトを開始したユーザーの数を計測できます。さらに、チェックアウトに使用された購入方法(クレジットカード、e-Wallet)を確認して、これに応じてターゲットを定めることができます。また、チェックアウトプロセスを完了しないユーザーを確認して、このようなユーザーをリターゲティングできます。
イベント送信のロジック
このイベントは、ユーザーがクレジットカード情報を追加するか、e-Walletにアクセスした時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_price | float | 674 | ホテルの定価 |
af_content_id | string | ODIRNH | ホテルのID |
af_date_a | string | 2018/07/26 | チェックイン日 |
af_date_b | string | 2018/08/01 | チェックアウト日 |
af_destination_a | string | ロンドン | ユーザーのロケーション |
af_destination_b | string | マドリード | ホテルの場所 |
af_class | string | デラックス | 客室タイプ |
af_num_adults | float | 2 | 宿泊者数 |
af_num_children | float | 0 | 子供の数 |
af_hotel_score | float | 9.6 | ホテルのレビュー評価 |
af_preferred_star_ratings | float | 5 | 希望するホテルの星評価 |
af_preferred_neighborhoods | string | 中心部 | ホテルのエリア |
purchase_method | string | クレジットカード | 購入方法 |
af_coupon_code | string | SUM2018 | プロモーションコードまたはロイヤルティー報酬ポイント |
property_type | string | ホテル | 宿泊施設のタイプ |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
eventValue.put("purchase_method", "credit card");
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "SUM2018");
eventValue.put("property_type", "hotel");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.INITIATED_CHECKOUT, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventInitiatedCheckout
withValues: @{
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro",
@"purchase_method": @"credit card",
AFEventParamCouponCode: @"SUM2018",
@"property_type": @"hotel"
}];
AppsFlyerLib.shared().logEvent(AFEventInitiatedCheckout, withValues: [
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro",
"purchase_method": "credit card",
AFEventParamCouponCode: "SUM2018",
"property_type": "hotel"
]);
Dictionary<string, string> InitiatedCheckout =
new Dictionary<string, string>();
InitiatedCheckout.Add("af_currency", "GBP");
InitiatedCheckout.Add("af_price", "674");
InitiatedCheckout.Add("af_content_id", "ODIRNH");
InitiatedCheckout.Add("af_date_a", "2018/07/26");
InitiatedCheckout.Add("af_date_b", "2018/08/01");
InitiatedCheckout.Add("af_destination_a", "London");
InitiatedCheckout.Add("af_destination_b", "Madrid");
InitiatedCheckout.Add("af_class", "Deluxe");
InitiatedCheckout.Add("af_num_adults", "2");
InitiatedCheckout.Add("af_num_children", "0");
InitiatedCheckout.Add("af_hotel_score", "9.6");
InitiatedCheckout.Add("af_preferred_star_ratings", "5");
InitiatedCheckout.Add("af_preferred_neighborhoods", "Centro");
InitiatedCheckout.Add("purchase_method", "credit card");
InitiatedCheckout.Add("af_coupon_code", "SUM2018");
InitiatedCheckout.Add("af_property_type", "hotel");
AppsFlyer.sendEvent("af_initiated_chekcout", InitiatedCheckout);
旅行の予約
イベント名: travel_booking
目的
旅行予約イベントを使用すると、アプリの全体的な予約率を把握できます。さらに、このイベントを計測すると、次のことが可能になります。
- 予約によって発生した収益を計測します。
- ホテルを予約した子供連れユーザーの数。
- 季節的なトレンド。
- ユーザーに人気のあるホテル。
イベント送信のロジック
このイベントは、ユーザーがホテルを予約した後、予約完了ページが表示された際に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 647 | 予約による収益 |
af_currency | string | GBP | Currency code |
af_price | float | 674 | ホテルの定価 |
af_content_id | string | ODIRNH | ホテルのID |
af_date_a | string | 2018/07/26 | チェックイン日 |
af_date_b | string | 2018/08/01 | チェックアウト日 |
af_destination_a | string | ロンドン | ユーザーのロケーション |
af_destination_b | string | マドリード | ホテルの場所 |
af_class | string | デラックス | 客室タイプ |
af_num_adults | float | 2 | 宿泊者数 |
af_num_children | float | 0 | 子供の数 |
af_hotel_score | float | 9.6 | ホテルのレビュー評価 |
af_preferred_star_ratings | float | 5 | 希望するホテルの星評価 |
af_preferred_neighborhoods | string | 中心部 | ホテルのエリア |
purchase_method | string | クレジットカード | 購入方法 |
af_coupon_code | string | SUM2018 | プロモーションコードまたはロイヤルティー報酬ポイント |
property_type | string | ホテル | 宿泊施設のタイプ |
new_booking | boolean | true | ユーザーの初回予約 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 647);
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
eventValue.put("purchase_method", "credit card");
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "SUM2018");
eventValue.put("property_type", "hotel");
eventValue.put("new_booking", true);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "travel_booking", eventValue);
[[AppsFlyerLib shared] logEvent:@"travel_booking"
withValues: @{
AFEventParamRevenue: @647,
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro",
@"purchase_method": @"credit card",
AFEventParamCouponCode: @"SUM2018",
@"property_type": @"hotel",
@"new_booking": @TRUE
}];
AppsFlyerLib.shared().logEvent("travel_booking", withValues: [
AFEventParamRevenue: 647,
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro",
"purchase_method": "credit card",
AFEventParamCouponCode: "SUM2018",
"property_type": "hotel",
"new_booking": true
]);
Dictionary<string, string> TravelBooking =
new Dictionary<string, string>();
TravelBooking.Add("af_revenue", "647");
TravelBooking.Add("af_currency", "GBP");
TravelBooking.Add("af_price", "674");
TravelBooking.Add("af_content_id", "ODIRNH");
TravelBooking.Add("af_date_a", "2018/07/26");
TravelBooking.Add("af_date_b", "2018/08/01");
TravelBooking.Add("af_destination_a", "London");
TravelBooking.Add("af_destination_b", "Madrid");
TravelBooking.Add("af_class", "Deluxe");
TravelBooking.Add("af_num_adults", "2");
TravelBooking.Add("af_num_children", "0");
TravelBooking.Add("af_hotel_score", "9.6");
TravelBooking.Add("af_preferred_star_ratings", "5");
TravelBooking.Add("af_preferred_neighborhoods", "Centro");
TravelBooking.Add("purchase_method", "credit card");
TravelBooking.Add("af_coupon_code", "SUM2018");
TravelBooking.Add("af_property_type", "hotel");
TravelBooking.Add("af_new_booking", "true");
AppsFlyer.sendEvent("travel_booking", TravelBooking);
初回購入
イベント名: first_purchase
目的
このイベントは、購入イベントと同じです。ただし、購入イベントと違い、初回購入イベントは次のことを計測するために使用されます。
- 新規購入者が、購入にどれくらいの時間がかかるかを確認できます。
- どの商品が初回購入時に購入されやすいかを知ることができます。
- 初回購入の平均的な価格と収益を把握できます。
イベント送信のロジック
このイベントは、ユーザーが初回購入を完了した時に発火してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 1200 | 購入からの収益 |
af_price | float | 4000 | 全体の購入金額の合計 |
af_content_id | string | 121, 262 | 商品ID |
af_content_type | string | hotel | 商品カテゴリ |
af_currency | string | AUD | 通貨 |
af_quantity | int | 1 | カート内の商品の数 |
af_order_id | string | X123ABC | 購入後に生成されるオーダーID |
af_receipt_id | string | X123ABC | CRITEOとGoogle AdWordsのリターゲティング連携に必要なオーダーID |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "hotel");
// for multiple product categories set the param value as: new String {"hotel", "meals"}
eventValue.put(AFInAppEventParameteName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {1}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "first_purchase", eventValue);
[[AppsFlyerLib shared] logEvent:("first_purchase")
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"hotel",
// for multiple product categories, set the param value as: @[@"hotel", @"meals"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as: @[@1]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerLib.shared().logEvent("first_purchase", withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "hotel",
// for multiple product categories, set the param value as: ["hotel", "meals"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: // [1]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> FirstPurchaseEvent = new Dictionary<string, string>();
FirstPurchaseEvent.Add("af_revenue", "1200");
FirstPurchaseEvent.Add("af_price", "4000");
FirstPurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
FirstPurchaseEvent.Add("af_content_type", "hotel");
// for multiple product categories, set the param value as: ["hotel", "meals"]
FirstPurchaseEvent.Add("af_currency", "USD");
FirstPurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [1]
FirstPurchaseEvent.Add("af_order_id", "X123ABC");
FirstPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.sendEvent ("first_purchase", FirstPurchaseEvent);
ヘルスケア
ヘルスケアアプリでは、ユーザーが健康保険を購入したり、診察を予約したり、医療的なアドバイスを受けたりすることができます。ヘルスケアアプリで計測すべきアプリ内イベントは、購入と予約です。これらのイベントを計測することがどのように役立つか、いくつかの例を紹介します。
- 購入を計測すると、どの薬が最も必要で需要が高いかを理解するのに役立ちます。
- 保険プランを計測することで、ユーザーが関心のあるパッケージを理解するのに役立ちます。
- 予約の計測は、ユーザーが最も懸念している医療問題を理解するのに役立ちます。
ログイン
イベント名: af_login
目的
このイベントは、登録したユーザーのリテンションを計測するために役立ちます。
イベント送信のロジック
ユーザーがログインする度にこのイベントを発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
登録完了
イベント名: complete_registration
目的
ユーザー登録を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。ユーザー登録を計測することで、次のことが可能になります。
- 何人のユーザーが、アプリをインストールしたのにサインアップしなかったかを確認できます。
- ユーザーがどのような登録方法を好むかがわかります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、facebook | サインアップ方法の種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.REGISTRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent ("af_complete_registration", CompleteRegistrationEvent);
予約の確認
イベント名: confirmed_appointment
目的
ユーザーがどんな種類の予約をしたか計測することができます。これは、たとえば、予定の確認イベントを計測すると、定期健診や今後の予約についてこれらのユーザーにリターゲティング広告やリマインダーを送信できます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが予約を作成したときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
doctor name | string | Robert James | 医師の名前。 |
appointment number | string | 001 | 予約番号。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("doctor name", "Robert James");
eventValue.put("appointment number", "001");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "confirmed_appointment", eventValue);
[[AppsFlyerLib shared] logEvent:@"confirmed_appointment" withValues: @{
@"doctor name": @"Robert James",
@"appointment number": @"001"}];
AppsFlyerLib.shared().logEvent("confirmed_appointment", withValues:
[ "doctor name": "Robert James",
"appointment number": "001"])
Dictionary<string, string> ConfirmedAppointmentEvent= new Dictionary<string, string>();
ConfirmedAppointmentEvent.Add("doctor name", "Robert James");
ConfirmedAppointmentEvent.Add("appointment number", "001");
AppsFlyer.sendEvent ("confirmed_appointment", ConfirmedAppointmentEvent);
キャンセルされた予約
イベント名: canceled_appointment
目的
ユーザーが予約をキャンセルした時に計測できます。これは、例えば、予約キャンセルイベントを計測することで、ユーザーにリスケジュールを促すためのリターゲティング広告を送ることができます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが予約をキャンセルしたときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
doctor name | string | Robert James | 医師の名前。 |
appointment number | string | 001 | 予約番号。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("doctor name", "Robert James");
eventValue.put("appointment number", "001");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "canceled_appointment", eventValue);
[[AppsFlyerLib shared] logEvent:@"canceled_appointment" withValues: @{
@"doctor name": @"Robert James",
@"appointment number": @"001"}];
AppsFlyerLib.shared().logEvent("canceled_appointment", withValues:
[ "doctor name": "Robert James",
"appointment number": "001"])
Dictionary<string, string> CanceledAppointmentEvent= new Dictionary<string, string>();
CanceledAppointmentEvent.Add("doctor name", "Robert James");
CanceledAppointmentEvent.Add("appointment number", "001");
AppsFlyer.sendEvent ("canceled_appointment", CanceledAppointmentEvent);
診療を初回予約
イベント名: doctor_first_booking
目的
ユーザーが初回予約を計測できます。これは、例えば、初回予約を計測すること、プロモコードやリターゲティング広告に役立ちます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが最初の予約を行うときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
doctor name | string | Robert James | 医師の名前。 |
specialty | string | neurology | 医学専門。 |
duration | string | 30 min chat | 予約の時間枠。 |
price | string | 50 | 予約の価格。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("doctor name", "Robert James");
eventValue.put("specialty", "neurology");
eventValue.put("duration", "30 min chat");
eventValue.put("price", "50");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "doctor_first_booking", eventValue);
[[AppsFlyerLib shared] logEvent:@"doctor_first_booking" withValues: @{
@"doctor name": @"Robert James",
@"specialty": @"neurology",
@"duration": @"30 min chat",
@"price": @"50"}];
AppsFlyerLib.shared().logEvent("doctor_first_booking", withValues:
[ "doctor name": "Robert James",
"specialty": "neurology",
"duration": "30 min chat",
"price": "50"])
Dictionary<string, string> DoctorFirstBookingEvent= new Dictionary<string, string>();
DoctorFirstBookingEvent.Add("doctor name", "Robert James");
DoctorFirstBookingEvent.Add("appointment number", "001");
DoctorFirstBookingEvent.Add("duration", "30 min chat");
DoctorFirstBookingEvent.Add("price", "50");
AppsFlyer.sendEvent ("doctor_first_booking", DoctorFirstBookingEvent);
検査の初回予約
イベント名: lab_first_appointment
目的
ユーザーが初回検査の予約をした際に計測できます。これは、たとえべ初回予約イベントを計測することで、ユーザーにプロモーションやリターゲティング広告を送信できます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが最初の予約を行うときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
lab selection | string | full body checkup | 検査の種類名。 |
quantity | string | 2 | 予約された数量。 |
price | string | 500 | 検査費用。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("lab selection", "full body checkup");
eventValue.put("quantity", "2");
eventValue.put("price", "500");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "lab_first_appointment", eventValue);
[[AppsFlyerLib shared] logEvent:@"lab_first_appointment" withValues: @{
@"lab_selection": @"full body checkup",
@"quantity": @"2",
@"price": @"500"}];
AppsFlyerLib.shared().logEvent("lab_first_appointment", withValues:
[ "lab selection": "full body checkup",
"quantity": "2",
"price": "500"])
Dictionary<string, string> LabFirstAppointmentEvent= new Dictionary<string, string>();
LabFirstAppointmentEvent.Add("lab selection", "full body checkup");
LabFirstAppointmentEvent.Add("quantity", "2");
LabFirstAppointmentEvent.Add("price", "500");
AppsFlyer.sendEvent ("lab_first_appointment", LabFirstAppointmentEvent);
薬局の初回購入。
イベント名:pharmacy_first_purchase
目的
ユーザーが最初に医薬品を購入したことを計測できます。これは、たとえば、最初の購入イベントを記録しているため、ユーザーのプロモーション/リターゲティング広告を送信できます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが最初に購入した時点でイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
medicine name | string | rhinos | 薬の名前。 |
quantity | string | 1 | 予約された数量。 |
price | string | 10 | 薬の料金。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("medicine name", "rhinos");
eventValue.put("quantity", "1");
eventValue.put("price", "10");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "pharmacy_first_purchase", eventValue);
[[AppsFlyerLib shared] logEvent:@"pharmacy_first_purchase" withValues: @{
@"medicine name": @"rhinos",
@"quantity": @"1",
@"price": @"10"}];
AppsFlyerLib.shared().logEvent("pharmacy_first_purchase", withValues:
[ "medicine name": "rhinos",
"quantity": "1",
"price": "10"])
Dictionary<string, string> PharmacyFirstPurchaseEvent= new Dictionary<string, string>();
PharmacyFirstPurchaseEvent.Add("medicine name", "rhinos");
PharmacyFirstPurchaseEvent.Add("quantity", "1");
PharmacyFirstPurchaseEvent.Add("price", "10");
AppsFlyer.sendEvent ("pharmacy_first_purchase", PharmacyFirstPurchaseEvent);
診療を予約
イベント名:doctor_booking
目的
ユーザーが医師との対面予約を録画することができます。これは、たとえば、これらの予約イベントを計測する際に、ユーザーのニーズや興味の詳細を伝えるために役立ちます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが対面予約をスケジュールしたときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
doctor name | string | Robert James | 医師の名前。 |
specialty | string | neurology | 医学専門。 |
duration | string | 30 min chat | 予約の時間枠。 |
price | string | 50 | 予約の価格。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("doctor name", "Robert James");
eventValue.put("specialty", "neurology");
eventValue.put("duration", "30 min chat");
eventValue.put("price", "50");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "doctor_booking", eventValue);
[[AppsFlyerLib shared] logEvent:@"doctor_booking" withValues: @{
@"doctor name": @"Robert James",
@"specialty": @"neurology",
@"duration": @"30 min chat",
@"price": @"50"}];
AppsFlyerLib.shared().logEvent("doctor_booking", withValues:
[ "doctor name": "Robert James",
"specialty": "neurology",
"duration": "30 min chat",
"price": "50"])
Dictionary<string, string> DoctorBookingEvent= new Dictionary<string, string>();
DoctorBookingEvent.Add("doctor name", "Robert James");
DoctorBookingEvent.Add("appointment number", "001");
DoctorBookingEvent.Add("duration", "30 min chat");
DoctorBookingEvent.Add("price", "50");
AppsFlyer.sendEvent ("doctor_booking", DoctorBookingEvent);
医師とチャット
イベント名:chat_doctor
目的
アプリで医師とのライブチャットを予約できる場合は、ユーザーがいつ予約したかを計測できます。たとえば、これらの予約イベントを記録することで、ユーザーのニーズや関心を理解するのに役立ちます 。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが予約を作成したときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
doctor name | string | Robert James | 医師の名前。 |
specialty | string | neurology | 医学専門。 |
duration | string | 30 min chat | 予約の時間枠。 |
price | string | 50 | 予約の価格。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("doctor name", "Robert James");
eventValue.put("specialty", "neurology");
eventValue.put("duration", "30 min chat");
eventValue.put("price", "50");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "chat_doctor", eventValue);
[[AppsFlyerLib shared] logEvent:@"chat_doctor" withValues: @{
@"doctor name": @"Robert James",
@"specialty": @"neurology",
@"duration": @"30 min chat",
@"price": @"50"}];
AppsFlyerLib.shared().logEvent("chat_doctor", withValues:
[ "doctor name": "Robert James",
"specialty": "neurology",
"duration": "30 min chat",
"price": "50"])
Dictionary<string, string> ChatDoctorEvent= new Dictionary<string, string>();
ChatDoctorEvent.Add("doctor name", "Robert James");
ChatDoctorEvent.Add("appointment number", "001");
ChatDoctorEvent.Add("duration", "30 min chat");
ChatDoctorEvent.Add("price", "50");
AppsFlyer.sendEvent ("chat_doctor", ChatDoctorEvent);
検査の予約
イベント名:lab_appointment
目的
ユーザーが検査の予約をしたかを計測できます。これは、たとえば、予約を計測することで、これらのユーザーのプロモーションやリターゲティング広告を送信するのに役立ちます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが検査予約を作成したときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
lab selection | string | full body checkup | 検査の種類名。 |
quantity | string | 2 | 予約された数量。 |
price | string | 500 | 検査費用。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("lab selection", "full body checkup");
eventValue.put("quantity", "2");
eventValue.put("price", "500");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "lab_appointment", eventValue);
[[AppsFlyerLib shared] logEvent:@"lab_appointment" withValues: @{
@"lab_selection": @"full body checkup",
@"quantity": @"2",
@"price": @"500"}];
AppsFlyerLib.shared().logEvent("lab_appointment", withValues:
[ "lab selection": "full body checkup",
"quantity": "2",
"price": "500"])
Dictionary<string, string> LabAppointmentEvent= new Dictionary<string, string>();
LabAppointmentEvent.Add("lab selection", "full body checkup");
LabAppointmentEvent.Add("quantity", "2");
LabAppointmentEvent.Add("price", "500");
AppsFlyer.sendEvent ("lab_appointment", LabAppointmentEvent);
薬局購入
イベント名:pharmacy_purchase
目的
ユーザーが最初に医薬品を購入したことを計測できます。これは、たとえば、最初の購入イベントを記録しているため、ユーザーのプロモーション/リターゲティング広告を送信できます。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが薬局で購入した時点でイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
medicine name | string | rhinos | 薬の名前。 |
quantity | string | 1 | 予約された数量。 |
price | string | 10 | 薬の料金。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("medicine name", "rhinos");
eventValue.put("quantity", "1");
eventValue.put("price", "10");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "pharmacy_purchase", eventValue);
[[AppsFlyerLib shared] logEvent:@"pharmacy_purchase" withValues: @{
@"medicine name": @"rhinos",
@"quantity": @"1",
@"price": @"10"}];
AppsFlyerLib.shared().logEvent("pharmacy_purchase", withValues:
[ "medicine name": "rhinos",
"quantity": "1",
"price": "10"])
Dictionary<string, string> PharmacyPurchaseEvent= new Dictionary<string, string>();
PharmacyPurchaseEvent.Add("medicine name", "rhinos");
PharmacyPurchaseEvent.Add("quantity", "1");
PharmacyPurchaseEvent.Add("price", "10");
AppsFlyer.sendEvent ("pharmacy_purchase", PharmacyPurchaseEvent);
カート追加
イベント名:add_to_cart
目的
ユーザーが医薬品をカートに追加したことを計測できます。これは、例えば、カートに追加イベントを計測しているため、プロモーションや決済と購入プロセスの完了をリマインドできます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーがカートに商品を追加した時点でイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
medicine name | string | rhinos | 薬の名前。 |
quantity | string | 1 | 予約された数量。 |
price | string | 10 | 薬の料金。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("medicine name", "rhinos");
eventValue.put("quantity", "1");
eventValue.put("price", "10");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "add_to_cart", eventValue);
[[AppsFlyerLib shared] logEvent:@"add_to_cart" withValues: @{
@"medicine name": @"rhinos",
@"quantity": @"1",
@"price": @"10"}];
AppsFlyerLib.shared().logEvent("add_to_cart", withValues:
[ "medicine name": "rhinos",
"quantity": "1",
"price": "10"])
Dictionary<string, string> AddToCartEvent= new Dictionary<string, string>();
AddToCartEvent.Add("medicine name", "rhinos");
AddToCartEvent.Add("quantity", "1");
AddToCartEvent.Add("price", "10");
AppsFlyer.sendEvent ("add_to_cart", AddToCartEvent);
保険会員
イベント名:insurance_membership
目的
アプリが保険会社と提携して保険オプションを提供する場合は、ユーザーが保険に登録したかを計測できます。これは、たとえば、保険会員登録イベントを記録するときに、ユーザーの詳細を知り、それに応じてリターゲティングするのに役立ちます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが保険に加入したときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
insurance name | string | DavidShield | 保険会社名。 |
insurance type | string | premium | 保険の種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("insurance name", "DavidShield");
eventValue.put("insurance type", "premium");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "insurance_membership", eventValue);
[[AppsFlyerLib shared] logEvent:@"insurance_membership" withValues: @{
@"insurance name": @"DavidShield",
@"insurance type": @"premium"}];
AppsFlyerLib.shared().logEvent("insurance_membership", withValues:
[ "insurance name": "DavidShield",
"insurance type": "premium"])
Dictionary<string, string> InsuranceMembershipEvent= new Dictionary<string, string>();
InsuranceMembershipEvent.Add("insurance name", "DavidShield");
InsuranceMembershipEvent.Add("insurance type", "premium");
AppsFlyer.sendEvent ("insurance_membership", InsuranceMembershipEvent);
領収書発行
イベント名:receipt_issuance
目的
ユーザーが領収書を受け取るタイミングを記録します。領収書を持つユーザーは、潜在的に保険会社からの医師の予約、検査、または薬の費用を請求することができます。また、領収書発行イベントを記録するときに、個人保険の補償範囲に関するリターゲティングキャンペーンにデータを使用するなどが可能になります。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーが領収書を取得したときにイベントをトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
app name | string | Healthcare App | アプリ名。 |
doctor name | string | Robert James | 医師の名前。 |
consultation description | string | fever | 健康状態の設営。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("app name", "Healthcare App");
eventValue.put("doctor name", "Robert James");
eventValue.put("consultation description", "fever");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "receipt_issuance", eventValue);
[[AppsFlyerLib shared] logEvent:@"receipt_issuance" withValues: @{
@"app name": @"Healthcare App",
@"doctor name": @"Robert James",
@"consultation description": @"fever"}];
AppsFlyerLib.shared().logEvent("receipt_issuance", withValues:
[ "app name": "Healthcare App",
"insurance name": "Robert James",
"insurance type": "fever"])
Dictionary<string, string> ReceiptIssuanceEvent= new Dictionary<string, string>();
ReceiptIssuanceEvent.Add("app name", "Healthcare App");
ReceiptIssuanceEvent.Add("doctor name", "Robert James");
ReceiptIssuanceEvent.Add("consultation description", "fever");
AppsFlyer.sendEvent ("receipt_issuance", ReceiptIssuanceEvent);
購入/課金
イベント名: af_purchase
目的
ユーザーが実行したアプリ内購入を記録します。購入イベントを計測することで、次のことが可能になります。
- アドネットワークと広告代理店間のユーザーのLTV(顧客生涯価値)とキャンペーンのROIを判断します。
- どのようなオファーがユーザーに最も人気があるのかを特定します。
- キャンペーンターゲティングを最適化するために、購入されたアイテムとキャンペーンを相互参照します。
イベント送信のロジック
このイベントを正しく計測するには、購入し、ユーザーが購入完了ページを開いた時にイベントを送信する必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 50 | 購入からの収益。 |
af_currency | string | 米ドル | 通貨コード。 |
af_content_type | string | lab | 購入の名前。 |
af_order_id | string | 9277 | オーダーID。 |
payment_method_type | string | credit card, local | お支払い方法。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.REVENUE, 50);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "lab");
eventValue.put("AFInAppEventParameterName.ORDER_ID", "9277");
eventValue.put("payment_method_type", "credit card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @50,
AFEventParamCurrency: @"USD",
AFEventParamContentType: @"lab",
AFEventParamContentTypeOrderId: @"9277",
@"payment_method_type": @"credit card"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase,
withValues: [
AFEventParamRevenue: 50,
AFEventParamCurrency: "USD",
AFEventParamContentType: "lab",
AFEventParamContentTypeOrderId: "9277",
"payment_method_type": "credit card",
]);
Dictionary<string, string> purchaseEvent = new Dictionary<string, string>();
purchaseEvent.Add("af_revenue", "50");
purchaseEvent.Add("af_currency", "USD");
purchaseEvent.Add("af_content_type", "lab");
purchaseEvent.Add("af_order_id", "9277");
purchaseEvent.Add("payment_method_type", "credit card");
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
チャージ成功
イベント名: af_top_up_success
目的
料金チャージは、アプリ内で提供されるパッケージやサービスを購入するために使用することができます。ユーザーの料金チャージを記録し、他のデータと照合することで、ユーザーについてより詳しく理解できます。このイベントを計測することで、次のことが可能になります。
- ユーザーが自分のアカウントに入金する金額を把握しましょう。
- チャージ金額を使用して、予算内でカスタマイズされたキャペーンでユーザーをターゲティングできます。
イベント送信のロジック
このイベントを適切に計測するには、ユーザーがチャージを完了したときにトリガーする必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | string | 2000 | チャージ金額。 |
top_up_id | string | 397 | チャージID。 |
payment_method_type | string | credit card, local payment | 使用された支払い方法。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();eventValue.put(AFInAppEventParameterName.REVENUE, 2000); eventValue.put("TOP_UP_ID", "397"); eventValue.put("PAYMENT_METHOD_TYPE", "creditcard");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.AF_TOP_UP_SUCCESS, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventTopUpSuccess
withValues: @{
AFEventParamRevenue: @2000,
@"top_up_id": @"397",
@"payment_method_type": @"credit card"
}];
AppsFlyerLib.shared().logEvent(AFEventTopUpSuccess,
withValues: [
AFEventParamRevenue: 2000,
"top_up_id": "397",
"payment_method_type": "credit card",
]);
Dictionary<string, string> TopUpSuccessEvent = new Dictionary<string, string>();
TopUpSuccessEvent.Add("af_revenue", "2000");
TopUpSuccessEvent.Add("top_up_id", "397");
TopUpSuccessEvent.Add("payment_method_type", "credit card");
AppsFlyer.sendEvent ("af_top_up_success", TopUpSuccessEvent);
情報通信
通信アプリを使用すると、携帯電話プランやデータプランなどを購入および管理できます。通信アプリでの計測を推奨するアプリ内イベントには、購入、料金チャージ、サブスクリプションが含まれます。これらのイベントを計測することがどのように役立つか、いくつかの例を紹介します。
- 購入を計測することで、どのゲートウェイプランが最も人気があるかを把握できます。
- 料金チャージを計測することで、どの商品やパッケージプランがユーザーに人気かを把握できます。
- サブスクリプションを計測することで、顧客の長期契約を促すのはどのプランかを理解することができます。
ログイン
イベント名: af_login
目的
このイベントは、登録したユーザーのリテンションを計測するために役立ちます。
イベント送信のロジック
ユーザーがログインする度にこのイベントを発火してください。
推奨項目
このイベントは、追加項目なしで送信できます。
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
購入/課金
イベント名: af_purchase
目的
通信アプリの多くでは、ユーザーがアイテム(例:追加データプラン等)を購入できるようになっています。購入イベントは、ユーザーが行ったアプリ内購入の計測に役立ちます。購入イベントを計測することで、次のことが可能になります。
- アドネットワークと広告代理店間のユーザーのLTV(顧客生涯価値)とキャンペーンのROIを判断します。
- どのようなオファーがユーザーに最も人気があるのかを特定します。
- キャンペーンターゲティングを最適化するために、購入されたアイテムとキャンペーンを相互参照します。
イベント送信のロジック
このイベントを正しく計測するには、購入し、ユーザーが購入完了ページを開いた時にイベントを送信する必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | float | 2000 | 購入による予想収益 |
af_currency | string | THB | 通貨コード |
af_content_type | string | 5G | 購入されたパッケージプラン名。 |
af_order_id | string | 9277 | オーダーID |
payment_method_type | string | credit card, local payment | 決済方法の種類 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.REVENUE, 2000);
eventValue.put(AFInAppEventParameterName.CURRENCY, "THB");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "5G");
eventValue.put("AFInAppEventParameterName.ORDER_ID", "9277");
eventValue.put("payment_method_type", "credit_card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @2000,
AFEventParamCurrency: @"THB",
AFEventParamContentType: @"5G",
AFEventParamContentTypeOrderId: @"9277",
@"payment_method_type": @"credit_card"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase,
withValues: [
AFEventParamRevenue: 2000,
AFEventParamCurrency: "THB",
AFEventParamContentType: "5G",
AFEventParamContentTypeOrderId: "9277",
"payment_method_type": "credit_card",
]);
Dictionary<string, string> purchaseEvent = new Dictionary<string, string>();
purchaseEvent.Add("af_revenue", "2000");
purchaseEvent.Add("af_currency", "THB");
purchaseEvent.Add("af_content_type", "5G");
purchaseEvent.Add("af_order_id", "9277");
purchaseEvent.Add("payment_method_type", "credit_card");
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
登録完了
イベント名: complete_registration
目的
ユーザー登録を計測することで、それを他のデータと比較して、ユーザーのについてもっと知ることができます。ユーザー登録を計測することで、次のことが可能になります。
- 何人のユーザーが、アプリをインストールしたのにサインアップしなかったかを確認できます。
- ユーザーがどのような登録方法を好むかがわかります。
イベント送信のロジック
このイベントを正しく計測するには、ユーザーが登録プロセスを完了した時にイベントを送信してください。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_registration_method | string | メール、facebook | サインアップ方法の種類。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.REGISTRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent ("af_complete_registration", CompleteRegistrationEvent);
チャージ成功
イベント名: af_top_up_success
目的
料金チャージは、パッケージやアプリ内で提供されているその他のサービスを購入するために使用されます。ユーザーの料金チャージを記録し、他のデータと照合することで、ユーザーについてより詳しく理解できます。このイベントを計測することで、次のことが可能になります。
- ユーザーが自分のアカウントに入金する金額を把握しましょう。
- チャージ金額を使用して、予算内でカスタマイズされたキャペーンでユーザーをターゲティングできます。
イベント送信のロジック
このイベントを適切に計測するには、ユーザーがチャージを完了したときにトリガーする必要があります。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_revenue | string | 2000 | チャージ金額。 |
top_up_id | string | 397 | チャージID。 |
payment_method_type | string | credit card, local payment | 使用された支払い方法。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();eventValue.put(AFInAppEventParameterName.REVENUE, 2000); eventValue.put("TOP_UP_ID", "397"); eventValue.put("PAYMENT_METHOD_TYPE", "credit_card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.AF_TOP_UP_SUCCESS, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventTopUpSuccess
withValues: @{
AFEventParamRevenue: @2000,
@"top_up_id": @"397",
@"payment_method_type": @"credit_card"
}];
AppsFlyerLib.shared().logEvent(AFEventTopUpSuccess, tele
withValues: [
AFEventParamRevenue: 2000,
"top_up_id": "397",
"payment_method_type": "credit_card",
]);
Dictionary<string, string> TopUpSuccessEvent = new Dictionary<string, string>();
TopUpSuccessEvent.Add("af_revenue", "2000");
TopUpSuccessEvent.Add("top_up_id", "397");
TopUpSuccessEvent.Add("payment_method_type", "credit_card");
AppsFlyer.sendEvent ("af_top_up_success", TopUpSuccessEvent);
チャージ失敗
イベント名: af_top_up_unsuccessful
目的
ユーザーの料金チャージの失敗イベントを記録し、他のデータと照合することで、ユーザーについてより詳しく理解できます。例えば、チャージ失敗を計測することで、失敗率を把握できます。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーがチャージしようとしたが、アクションが失敗したときにトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
error_reason | string | exceeded_daily_limit | チャージ失敗の理由。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("error_reason", "exceeded_daily_limit");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_top_up_unsuccessful", eventValue);
[[AppsFlyerLib shared] logEvent:@"af_top_up_unsuccessful" withValues: @{
@"error_reason": @"exceeded_daily_limit"}];
AppsFlyerLib.shared().logEvent("af_top_up_unsuccessful",withValues:
["error_reason": "exceeded_daily_limit" ])
Dictionary<string, string> TopUpUnsuccessfulEvent = new Dictionary<string, string>();
ErrorReasonEvent.Add("error_reason", "exceeded_daily_limit");
AppsFlyer.sendEvent ("af_top_up_unsuccessful
", TopUpUnsuccessfulEvent);
サブスクリプション完了
イベント名: af_subscription_complete
目的
ユーザーサブスクリプションを計測することで、次のことが可能になります。
- どのキャンペーンがユーザーのサブスクリプションに結び付いたかを確認できます。
- サブスクライブしたユーザーの数を、サブスクリプションを停止したユーザー数と比較します。
- サブスクリプションから発生した収益を計測し、キャンペーンやメディアソースに関連付けます。
イベント送信のロジック
このイベントは、次のいずれかの場合に発火してください。
- ユーザーが正常にサブスクライブした時。
- サブスクリプションが更新された時。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
af_subscription_type | string | Monthly 30 GB | サブスクリプションの種類。 |
af_revenue | string | 555 | サブスクリプションの金額。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("af_subscription_type", "Monthly 30 GB");
eventValue.put("af_revenue", "555");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_subscription_complete", eventValue);
[AppsFlyerLib shared] logEvent:@"af_subscription_complete" withValues:@{
@"af_subscription_type": @"Monthly 30 GB",
@"af_revenue": @"555"}];
ApAppsFlyerLib.shared().logEvent("af_subscription_complete", withValues:
[ "af_subscription_type": "Monthly 30 GB",
"af_revenue": "555"])
Dictionary<string, string> SubscriptionCompleteEvent = new Dictionary<string, string>();
SubscriptionCompleteEvent.Add("af_subscription_type", "Monthly 30 GB");
SubscriptionCompleteEvent.Add("af_revenue", "555");
AppsFlyer.sendEvent ("af_subscription_complete", SubscriptionCompleteEvent);
パッケージの選択
イベント名: select_package
目的
ユーザーがパッケージを購入することを決定したが、まだ支払いを行っていないことを計測することができます。例えば、パッケージ選択イベントを計測するときに、これらのユーザーにリターゲティング広告やリマインダーを送信してサブスクリプションの完了を促すためです 。
イベント送信のロジック
このイベントを計測する最良の方法は、ユーザーがパッケージを選択したが、まだ支払いを完了していないときにトリガーすることです。
推奨項目
カラム名 | タイプ | 値の例 | 説明 |
---|---|---|---|
price | string | 50000 | サブスクリプションの価格。 |
af_content_type | string | Data 5 GB | 証明書が発行されたかどうか。 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("price", "50000");
eventValue.put("af_content_type ", "Data 5 GB ");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "select_package", eventValue);
[[AppsFlyerLib shared] logEvent:@"select_package" withValues: @{
@"price": @"50000",
@"af_content_type ": @"Data 5 GB "}];
AppsFlyerLib.shared().logEvent("select_package", withValues:
[ "price": "50000",
"af_content_type ": "Data 5 GB "])
Dictionary<string, string> SelectPackageEvent= new Dictionary<string, string>();
SelectPackageEvent.Add("price", "50000");
SelectPackageEvent.Add("af_content_type ", "Data 5 GB ");
AppsFlyer.sendEvent ("select_package", SelectPackageEvent);