Используя насыщенные внутренние события приложения, рекламодатели могут отслеживать события после установки и атрибутировать их соответствующим медиаисточникам.
Когда пользователи выполняют регистрацию, проходят тьюториал, добавляют товары в корзину или делают покупки, подробные данные об этих действиях можно регистрировать как внутренние события приложения.
Насыщенные внутренние события приложения — это отличный инструмент для определения ценности пользователей приложения и качества трафика, поступающего из различных медиа-источников. Мы рекомендуем использовать насыщенные внутренние события приложений, хотя это и необязательно. Мы также рекомендуем использовать одинаковые имена и структуры для событий на всех платформах, чтобы лучше соотносить необработанные данные.
Соблюдение конфиденциальности ваших пользователей
- AppsFlyer уважает конфиденциальность ваших данных и данных пользователей вашего приложения.
- Мы не собираем и не принимаем персональные данные.
- To ensure the privacy of your users, don't populate in-app event values with information that can directly identify them. For example, email address, name, identity number, and in some loctations postal code.
The logEvent API
Внутреннее событие приложения содержит имя и параметры события.
В качестве имени события можно использовать любую строку символов. Однако в SDK AppsFlyer есть перечень рекомендуемых имен событий с описаниями и определениями (список рекомендуемых имен для событий и параметров см. на вкладке Типы событий).
В именах событий AppsFlyer учитывается регистр. Например, af_purchase и af_PURCHASE — это два разных события в необработанных данных. Однако в отчетах по сводным данным (например, Обзор, События) они могут отображаться как одно событие. Поэтому мы рекомендуем использовать только строчные буквы в именах событий и названиях параметров.
Длина значения для каждого события составляет 1000 символов. Не превышайте этот предел. Иначе мы можем сократить его.
Синтаксис:
public static void logEvent(Context context, String eventName, Map eventValues)
-
Context - Используйте
getApplicationContext()
- eventName
- Любая строка, определяющая имя события.
- eventValues
- Перечень параметров, составляющих насыщенное событие.
- (void) logEvent:(NSString *)eventName withValues:(NSDictionary*)values
-
eventName - Любая строка, определяющая имя события.
- значения
- Словарь параметров событий, составляющих насыщенное событие.
Внутренние события гибридных приложений
Гибридные приложения, которые сочетают в себе собственные представления и HTML-контент, также могут регистрировать внутренние события. Однако, поскольку SDK может отправлять события только с нативной стороны, разработчики должны переводить все данные события в нативный код. См. инструкции в нашем руководстве по внутренним событиям гибридных приложений.
Внимание
В каждой сети есть свои ограничения относительно разрешенных символов в названиях событий. Во избежание проблем AppsFlyer рекомендует использовать в именах внутренних событий приложений только строчные буквы и цифры (a-z и 0-9).
Типы событий
В этом разделе описана рекомендованная структура для каждого типа событий, а также приведены таблицы сопоставления параметров с параметрами Facebook, Twitter, Criteo, Google Ads и Snapchat.
- Следующие параметры, которые входят в значения насыщенных внутренних событий приложения, доступны только в отчетах по необработанным данным. Необработанные данные — функция "Премиум".
- Если вы включаете URL-адрес как значение события, нужно применить URL-кодировку.
Примечание
На вкладке Вертикали вы найдете фрагменты кода для различных отраслей, для Android (Java), iOS (Obj-C и Swift) и Unity.
Рекомендованная структура внутренних событий приложения
Следующие внутренние события приложения определены в составе интерфейса AFInAppEventType и рекомендуются к использованию:
Достигнутый уровень
Имя события: af_level_achieved
Описание: используется для записи событий на игровых уровнях
Event name constant (Android): AFInAppEventType.LEVEL_ACHIEVED
Event name constant (iOS): AFEventLevelAchieved
Сопоставленное событие Facebook: fb_mobile_level_achieved
Сопоставленное событие Twitter: LEVEL_ACHIEVED
Сопоставленное событие Criteo: userLevel
Google Ads: level_up
Snapchat: LEVEL_COMPLETE
Recommended fields: af_level, af_score
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_level | fb_level | level | ui_level | level_up | level |
af_score | - | - | - | score | - |
Добавление платежной информации
Имя события: af_add_payment_info
Описание: используется для записи статуса настройки информации о платеже
Event name constant (Android): AFInAppEventType.ADD_PAYMENT_INFO
Event name constant (iOS): AFEventAddPaymentInfo
Сопоставленное событие Facebook: fb_mobile_add_payment_info
Сопоставленное событие Twitter: ADDED_PAYMENT_INFO
Сопоставленное событие Criteo: нет
Google Ads: add_payment_info
Snapchat: ADD_BILLING
Recommended fields: af_success
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_success | fb_success | user_payment_info | - | add_payment_info | success |
Добавление в корзину
Имя события: af_add_to_cart
Описание: используется для записи событий добавления в корзину конкретных товаров
Event name constant (Android): AFInAppEventType.ADD_TO_CART
Event name constant (iOS): AFEventAddToCart
Сопоставленное событие Facebook: fb_mobile_add_to_cart
Сопоставленное событие Twitter: ADD_TO_CART
Сопоставленное событие Criteo: viewBasket
Google Ads: add_to_cart
Snapchat: ADD_CART
Recommended fields: af_price, af_content_type, af_content_id, af_content, af_currency, af_quantity
Field mapping:
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
Описание: используется для записи событий добавления в список желаний конкретных товаров.
Event name constant (Android): AFInAppEventType.ADD_TO_WISH_LIST
Event name constant (iOS): AFEventAddToWishlist
Сопоставленное событие Facebook: fb_mobile_add_to_wishlist
Сопоставленное событие Twitter: ADD_TO_WISHLIST
Сопоставленное событие Criteo: нет
Google Ads: add_to_wishlist
Snapchat: ADD_TO_WISHLIST
Recommended fields: af_price, af_content_type, af_content_id, af_content, af_currency, af_quantity
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | - | Цена | price |
af_content_type | fb_content_type | content_type | - | категория элемента | 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
Описание: используется для записи методов регистрации пользователей
Event name constant (Android): AFInAppEventType.COMPLETE_REGISTRATION
Event name constant (iOS): AFEventCompleteRegistration
Сопоставленное событие Facebook: fb_mobile_complete_registration
Сопоставленное событие Twitter: SIGN_UP
Сопоставленное событие Criteo: нет
Google Ads: sign_up
Snapchat: SIGN_UP
Recommended fields: af_registration_method
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_registration_ method |
fb_registration_ method |
registration_method | - | registration_method | sign_up_method |
Прохождение тьюториал
Имя события: af_tutorial_completion
Описание: используется для записи статуса прохождения обучения
Event name constant (Android): AFInAppEventType.TUTORIAL_COMPLETION
Event name constant (iOS): AFEventTutorial_completion
Сопоставленное событие Facebook: fb_mobile_tutorial_completion
Сопоставленное событие Twitter: TUTORIAL_COMPLETE
Сопоставленное событие Criteo: нет
Google Ads: tutorial_complete
Snapchat: COMPLETE_TUTORIAL
Recommended fields: af_success, af_content_id, af_content
Field mapping:
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
Описание: используется для записи событий оформления заказа
Event name constant (Android): AFInAppEventType.INITIATED_CHECKOUT
Event name constant (iOS): AFEventInitiatedCheckout
Сопоставленное событие Facebook: fb_mobile_initiated_checkout
Сопоставленное событие Twitter: CHECKOUT_INITIATED
Сопоставленное событие Criteo: viewBasket
Google Ads: begin_checkout
Snapchat: START_CHECKOUT
Recommended fields: af_price, af_content_type, af_content_id, af_content, af_quantity, af_payment_info_available, af_currency
Field mapping:
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
Описание: используется для записи событий покупки (и связывания с ними доходов)
Event name constant (Android): AFInAppEventType.PURCHASE
Event name constant (iOS): AFEventPurchase
Сопоставленное событие Facebook: fb_mobile_purchase
Сопоставленное событие Twitter: PURCHASE
Сопоставленное событие Criteo: transactionConfirmation
Google Реклама: in_app_purchase
Snapchat: PURCHASE
Recommended fields: af_revenue, af_content_type, af_content_id, af_content, af_price, af_quantity, af_currency, af_order_id
Field mapping:
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 |
- |
- |
- |
- |
Пользовательские метаданные конверсий |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
Валюта |
af_quantity |
fb_num_items |
number_items |
quantity |
quantity |
number_items |
количество |
af_validated |
- |
- |
- |
VALIDATED |
success |
Ваучер |
af_receipt_id |
- |
- |
transaction_id |
transaction_id |
- |
Ссылка на конверсию |
af_order_id |
fb_order_id |
- |
- |
order_id |
transaction_id |
Clickref |
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_ |
- | - | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - | - |
af_price |
fb_purchase_value |
- | price** | price | - | значение |
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_ |
- | - | - | - | - |
* На платформе AppsFlyer af_revenue учитывается как доход.
**af_price — можно использовать af_price как денежный параметр, который не считается доходом (как, например, в событии "Добавить в корзину"). Этот параметр относится к цене отдельного товара. Общая сумма всех покупок отображается параметром af_revenue parameter.
Список символов денежных единиц, поддерживаемых AppsFlyer, см. здесь.
*Чтобы сообщить о событии, содержащем несколько элементов, нажмите здесь.
Подписка
Имя события: af_subscribe
Описание: используется для записи событий покупки платной подписки
Event name constant (Android): AFInAppEventType.SUBSCRIBE
Event name constant (iOS): AFEventSubscribe
Сопоставленное событие Facebook: Subscribe
Сопоставленное событие Twitter: нет
Сопоставленное событие Criteo: нет
Google Ads: Нет
Snapchat: SUBSCRIBE
Recommended fields: af_revenue, af_currency
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_revenue |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
Начать пробный период
Имя события: af_start_trial
Описание: используется для записи начала бесплатного пробного периода использования продукта
Event name constant (Android): AFInAppEventType.START_TRIAL
Event name constant (iOS): AFEventStartTrial
Сопоставленное событие Facebook: StartTrial
Сопоставленное событие Twitter: нет
Сопоставленное событие Criteo: нет
Google Ads: Нет
Snapchat: START_TRIAL
Recommended fields: af_price, af_currency
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
Rate
Имя события: af_rate
Описание: используется для записи событий оценивания приложений/элементов.
Event name constant (Android): AFInAppEventType.RATE
Event name constant (iOS): AFEventRate
Сопоставленное событие Facebook: fb_mobile_rate
Сопоставленное событие Twitter: RATED
Сопоставленное событие Criteo: нет
Google Реклама: submit_rating
Snapchat: RATE
Recommended fields: af_rating_value, af_content_type, af_content_id, af_content, af_max_rating_value
Field mapping:
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
Описание: используется для записи событий поиска
Event name constant (Android): AFInAppEventType.SEARCH
Event name constant (iOS): AFEventSearch
Сопоставленное событие Facebook: fb_mobile_search
Сопоставленное событие Twitter: SEARCH
Сопоставленное событие Criteo: viewSearch
Google Ads: view_search_results
Google Ads: SEARCH
Recommended fields: af_content_type, af_search_string, af_success
Field mapping:
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
Описание: используется для записи событий использования бонусов
Event name constant (Android): AFInAppEventType.SPENT_CREDIT
Event name constant (iOS): AFEventSpentCredits
Сопоставленное событие Facebook: fb_mobile_spent_credits
Сопоставленное событие Twitter: SPENT_CREDITS
Сопоставленное событие Criteo: transactionConfirmation
Google Ads: spend_virtual_currency
Snapchat: SPENT_CREDITS
Recommended fields: af_price, af_content_type, af_content_id, af_content
Field mapping:
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
Описание: используется для записи событий разблокировки достижений
Event name constant (Android): AFInAppEventType.ACHIEVEMENT_UNLOCKED
Event name constant (iOS): AFEventAchievementUnlocked
Сопоставленное событие Facebook: fb_mobile_achievement_unlocked
Сопоставленное событие Twitter: ACHIEVEMENT_UNLOCKED
Сопоставленное событие Criteo: userLevel
Google Реклама: unlock_achievement
Snapchat: ACHIEVEMENT_UNLOCKED
Recommended fields: af_description
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
fb_description |
description |
ui_achievement |
description |
description |
Просмотр контента
Событие: af_content_view
Описание: используется для записи событий просмотра контента
Event name constant (Android): AFInAppEventType.CONTENT_VIEW
Event name constant (iOS): AFEventContentView
Сопоставленное событие Facebook: fb_mobile_content_view
Сопоставленное событие Twitter: CONTENT_VIEW
Сопоставленное событие Criteo: viewProduct
Google Реклама: view_item
Snapchat: VIEW_CONTENT
Recommended fields: af_price, af_content_type, af_content_id, af_content, af_currency
Field mapping:
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
Описание: используется для записи событий просмотра объявлений
Event name constant (Android): use the string "af_list_view" instead:
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
Event name constant (iOS): AFEventListView
Сопоставленное событие Facebook:
Сопоставленное событие Twitter:
Сопоставленное событие Criteo: viewListing
Google Реклама: view_item_list
Snapchat: LIST_VIEW
Recommended fields: af_content_type, af_content_list
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_content_type |
- |
- |
- |
item_Category |
item_category |
af_content_list |
- |
- |
- |
item_id |
- |
Нажатие на рекламное объявление
Имя события: af_ad_click
Описание: используется для записи нажатий на рекламные объявления, которые отображаются в приложении
Event name constant (Android): AFInAppEventType.AD_CLICK
Event name constant (iOS): AFEventAdClick
Сопоставленное событие Facebook: AdClick
Сопоставленное событие Twitter: нет
Сопоставленное событие Criteo: нет
Google Ads: Нет
Snapchat: AD_CLICK
Recommended fields: af_adrev_ad_type
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
Просмотр рекламы
Имя события: af_ad_view
Описание: используется для записи просмотров рекламных объявлений, которые отображаются в приложении
Event name constant (Android): AFInAppEventType.AD_VIEW
Event name constant (iOS): AFEventAdView
Отображенное событие Facebook: AdImpression
Сопоставленное событие Twitter: нет
Сопоставленное событие Criteo: нет
Google Ads: Нет
Snapchat: AD_VIEW
Recommended fields: af_adrev_ad_type
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
Бронирование поездки
Имя события: af_travel_booking
Описание: используется для записи событий бронирования путешествий (и связывания с ними доходов)
Event name constant (Android): AFInAppEventType.TRAVEL_BOOKING
Event name constant (iOS): AFEventTravelBooking
Сопоставленное событие Facebook: fb_mobile_purchase
Сопоставленное событие Twitter: PURCHASE
Сопоставленное событие Criteo: transactionConfirmation
Google Ads: ecommerce_purchase
Snapchat: RESERVE
Recommended fields: 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
Field mapping:
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
Описание: используется для записи событий репостов
Event name constant (Android): AFInAppEventType.SHARE
Event name constant (iOS): AFEventShare
Сопоставленное событие Facebook: нет
Сопоставленное событие Twitter: SHARE
Сопоставленное событие Criteo: нет
Google Ads: share
Snapchat: SHARE
Recommended fields: af_description
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
Приглашение
Имя события: af_invite
Описание: используется для записи событий приглашения (в социальных сетях)
Event name constant (Android): AFInAppEventType.INVITE
Event name constant (iOS): AFEventInvite
Сопоставленное событие Facebook: Нет
Сопоставленное событие Twitter: INVITE
Сопоставленное событие Criteo: нет
Google Ads: invite
Snapchat: INVITE
Recommended fields: None
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
Вход в систему
Имя события: af_login
Описание: используется для отслеживания событий входа пользователя в систему
Event name constant (Android): AFInAppEventType.LOGIN
Event name constant (iOS): AFEventLogin
Сопоставленное событие Facebook: Нет
Сопоставленное событие Twitter: LOGIN
Сопоставленное событие Criteo: нет
Google Ads: login
Recommended fields: None
Повторное вовлечение
Имя события: af_re_engage
Описание: используется для записи событий повторного вовлечения пользователя
Event name constant (Android): AFInAppEventType.RE_ENGAGE
Event name constant (iOS): AFEventReEngage
Сопоставленное событие Facebook: нет
Сопоставленное событие Twitter: RE_ENGAGE
Сопоставленное событие Criteo: нет
Google Ads: custom_event
Recommended fields: None
Field mapping:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_description |
- |
description |
- |
description |
Открытие из push-уведомления
Имя события: af_opened_from_push_notification
Описание: используется для записи событий открытия приложений из push-уведомлений
Event name constant (Android): AFInAppEventType.OPENED_FROM_PUSH_NOTIFICATION
Event name constant (iOS): AFEventOpenedFromPushNotification
Сопоставленное событие Facebook: Нет
Сопоставленное событие Twitter: нет
Сопоставленное событие Criteo: нет
Google Реклама: notification_open
Recommended fields: None
Обновление
Имя события: af_update
Описание: используется для записи событий обновления
Event name constant (Android): AFInAppEventType.UPDATE
Event name constant (iOS): AFEventUpdate
Сопоставленное событие Facebook: Нет
Сопоставленное событие Twitter: UPDATE
Сопоставленное событие Criteo: нет
Google Ads: app_update
Recommended fields: af_content_id
Field mapping:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_content_id |
- |
content_id |
- |
item_id |
*Чтобы сообщить о событии, содержащем несколько элементов, нажмите здесь.
Вдобавок к событиям, описанным выше и доступным для отображения на предопределенные события разных сетей, Facebook предлагает дополнительные события, которые посылаются без атрибутов.
Дополнительные параметры
Помимо рекомендованных параметров, которые могут передаваться с каждым событием, в составе интерфейса AFInAppEventParameterName
определены указанные ниже параметры, которые могут передаваться в качестве значений из словаря события:
Parameter string Constant | Имя строки параметра | Рекомендованный тип значения |
---|---|---|
REVENUE (подробные сведения) |
af_revenue |
Float |
PRICE (подробные сведения) |
af_price |
Float |
LEVEL |
af_level |
Int |
SUCCESS |
af_success |
Boolean |
CONTENT_TYPE |
af_content_type |
Строка |
CONTENT_LIST |
af_content_list |
Массив строк |
CONTENT_ID |
af_content_id |
Строка |
CURRENCY |
af_currency |
Строка |
REGISTRATION_METHOD |
af_registration_method |
Строка |
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 |
Строка |
DESCRIPTION |
af_description |
Строка |
SCORE |
af_score |
Int |
DESTINATION_A |
af_destination_a |
Строка |
DESTINATION_B |
af_destination_b |
Строка |
CLASS |
af_class |
Строка |
DATE_A |
af_date_a |
Строка |
DATE_B |
af_date_b |
Строка |
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 |
Строка |
CUSTOMER_SEGMENT |
af_customer_segment |
Строка |
VALIDATED |
af_validated |
Строка |
RECEIPT_ID |
af_receipt_id |
Строка |
ORDER_ID |
af_order_id |
Строка |
TUTORIAL_ID |
af_tutorial_id |
Строка |
ACHIEVEMENT_ID |
af_achievement_id |
Строка |
VIRTUAL_CURRENCY_NAME |
af_virtual_currency_name |
Строка |
DEEP_LINK |
af_deep_link |
Строка |
OLD_VERSION |
af_old_version |
Строка |
NEW_VERSION |
af_new_version |
Строка |
REVIEW_TEXT |
af_review_text |
Строка |
COUPON_CODE |
af_coupon_code |
Строка |
DEPARTING_DEPARTURE_DATE |
af_departing_departure_date |
Строка |
RETURNING_DEPARTURE_DATE |
af_returning_departure_date |
Строка |
DESTINATION_LIST |
af_destination_list |
String[] |
CITY |
af_city |
Строка |
REGION |
af_region |
Строка |
COUNTRY |
af_county |
Строка |
DEPARTING_ARRIVAL_DATE |
af_departing_arrival_date |
Строка |
RETURNING_ARRIVAL_DATE |
af_returning_arrival_date |
Строка |
SUGGESTED_DESTINATIONS |
af_suggested_destinations |
String[] |
TRAVEL_START |
af_travel_start |
Строка |
TRAVEL_END |
af_travel_end |
Строка |
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 |
Строка |
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 |
Строка |
PARAM_1 |
af_param_1 |
Строка |
PARAM_2 |
af_param_2 |
Строка |
PARAM_3 |
af_param_3 |
Строка |
PARAM_4 |
af_param_4 |
Строка |
PARAM_5 |
af_param_5 |
Строка |
PARAM_6 |
af_param_6 |
Строка |
PARAM_7 |
af_param_7 |
Строка |
PARAM_8 |
af_param_8 |
Строка |
PARAM_9 |
af_param_9 |
Строка |
PARAM_10 |
af_param_10 |
Строка |
Просмотр данных по насыщенным внутренним событиям
- Название вашего события внутри приложения, а также доход отображаются на дэшборде (обзорный дэшборд и вкладка Events (События).
- Значения дополнительных параметров отображаются в отчете по сырым данным о внутренних событиях приложения. Сырые данные — это функция категории "Премиум".
Параметр выручки
Значения выручки можно отправлять с любым событием и именем параметра. Но чтобы зарегистрировать выручку в необработанных и сводных данных AppsFlyer, ОБЯЗАТЕЛЬНО используйте параметр af_revenue. Всегда используйте его для внутренних событий приложения, которые отображают фактическое получение дохода в вашей бизнес-системе.
Подробные сведения о параметре af_revenue см. в руководстве по атрибуции выручки.
Персональные данные
Персональные данные (персональная информация) — это информация, которая может использоваться для идентификации или отслеживания человека (имя, национальный идентификационный номер, номер социального страхования) отдельно или в сочетании с другой идентифицирующей информацией, связанной с датой и местом рождения человека.
AppsFlyer соблюдает политику конфиденциальности и не собирает персональные данные пользователей.
Не указывайте персональные данные в значениях событий.
Примечание
Во время взаимодействий с пользователем AppsFlyer собирает IP-адреса устройств. В некоторых юрисдикциях или сценариях использования IP-адрес может считаться персональными данными. Мы используем IP-адрес для определения географического местоположения устройства (город, район), но не конкретного адреса. При необходимости вы можете маскировать IP-адреса, чтобы они не отображались в отчетах по необработанным данным.
Несколько элементов
В одну транзакцию можно добавлять несколько элементов. Вместо отдельных значений для каждого параметра события для описания транзакции можно использовать несколько элементов, разделенных запятыми.
Пример
В рамках одной транзакции г-н А. Флаер приобретает две одинаковых футболки, пару ботинок и шапку в онлайн-магазине в США. Последовательность перечисления товаров в каждом параметре должна быть одинаковой.
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
Сложные внутренние события приложения
Используя сложные внутренние события приложения, можно отправлять несколько событий в одном вызове API.
They are useful when you want to see several closely related user actions grouped together, e.g. adding several products to the basket in a single session.
Example:
{
"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», игнорируется.
Время события, которое появляется в необработанных данных — это время события, которое отправляется в AppsFlyer после того, как устройство снова выходит в сеть. Это время не равнозначно времени, когда событие происходит.
Устранение дубликатов событий
В AppsFlyer предусмотрен механизм дедупликации внутренних событий приложения. Он проверяет все внутренние события приложения, чтобы выявить идентичные события, поступившие с одним и тем же идентификатором appsflyer_id с интервалом менее 10 секунд. При обнаружении таких событий дубликаты удаляются.
Два события считаются идентичными, если в них совпадают следующие поля:
- Имя события
- Значение события
- Идентификатор приложения
- Идентификатор AppsFlyer ID
Примечание
Устранение дубликатов применимо только для тех внутренних событий приложения, которые отправлены из SDK.
Для межсерверных внутренних событий устранение дубликатов не применяется.
В этом разделе приведены полные наборы внутренних событий приложения для нескольких отраслей. Описание каждой отрасли в этом разделе содержит перечень тщательно отобранных внутренних событий приложения, которые рекомендуется отслеживать.
Чтобы начать регистрацию внутренних событий приложения:
- Выберите свою отрасль.
- Выберите внутренние события приложения, которые необходимо регистрировать. Рекомендуется регистрировать все события, перечисленные для данной отрасли.
- Скопируйте фрагменты кода для каждого внутреннего события приложения и вставьте их в соответствующие места своего приложения.
Если вы хотите узнать, какие внутренние события наиболее популярны в зависимости от размера события и вертикали, щелкните здесь.
Игры
К игровым приложениям относятся такие виды игр, как аркады, стратегии, обучающие игры и даже азартные игры. События, которые рекомендуется регистрировать в игровых приложениях, — это покупки в приложении, события "Поделиться" в социальных сетях и приглашение друзей. Дополнительные события — это достижение какого-либо уровня и прохождение тьюториал в игре.
Вот несколько примеров того, какую пользу может принести регистрация этих событий:
- Регистрация покупок в приложении позволяет понять, что именно пользователи покупают больше всего.
- Регистрация достижения уровней позволяет понять степень вовлечения ваших пользователей.
- Регистрация событий "Поделиться" и приглашений позволяет понять, сколько пользователей делятся в социальных сетях и приглашают других игроков и какие социальные платформы они для этого используют.
Совет
Рассматриваемые здесь события применимы и для игровых приложений, работающих на следующих платформах:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
- Xbox
Вход в систему
Имя события: af_login
Цель
Это событие позволяет проанализировать метрику удержания зарегистрированных пользователей.
Правила инициирования
Это событие инициируется при каждом входе пользователя в систему.
Recommended fields
This event can be sent without any additional fields.
Примеры кода
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
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Запись событий регистрации пользователей позволяет получить следующие данные:
- Сколько пользователей установили приложение, однако не регистрировались в нем.
- Какие способы регистрации предпочитают ваши пользователи.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Цель
Во многих игровых приложениях пользователи могут совершать покупки, например покупать монеты, драгоценные камни, оружие и т. п. С помощью события Покупка можно регистрировать события покупок, сделанных пользователями в приложении. Регистрация событий покупки позволяет:
- Определить LTV своих пользователей и ROI своих кампаний во всех рекламных сетях и рекламных агентствах.
- Определить, какие предложения больше всего популярны среди пользователей.
- Настроить перекрестные ссылки между кампаниями и приобретенными товарами, что позволит оптимизировать нацеливание кампании.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу благодарности после успешной покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 2000 | Ожидаемый доход от покупки |
af_currency | строка | THB / USD | Код валюты |
af_quantity | int | 2 | Количество купленных товаров |
af_content_id | строка | 001, 092 | Идентификатор товара |
af_order_id | строка | 9277 | Идентификатор заказа |
af_receipt_id | строка | 9277 | Идентификатор чека |
Примеры кода
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
Цель
Одна из основных целей пользователей в играх — это переход на следующий уровень. При переходе на более высокий уровень часто открываются новые возможности и этапы игры, что стимулирует пользователей продолжать игру. Событие Достижение уровня позволяет определить вовлеченность пользователя в ваше приложение. Регистрация событий достижения уровней пользователями дает такие возможности:
- Определить, какие кампании дают больше всего активных пользователей.
- Узнать, пользователи какого типа самые активные и вовлеченные.
- Связать общую активность пользователя с такими показателями, как доход и т. д.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу завершения уровня.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
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
Цель
Тьюториал помогает пользователям узнать, как лучше использовать ваше приложение. Регистрация событий прохождения обучения дает такие возможности:
- Узнать, какие темы могут быть трудны для пользователей.
- Узнать, какие курсы обучения плохо работают, и улучшить их.
Правила инициирования
Есть два сценария, в которых должно инициироваться это событие:
- When a user completes the tutorial. An event will be sent with a field indicating successful tutorial completion.
- When a user starts the tutorial but quits without completing it. When the user quits, an event is sent with a field indicating that the user didn't complete the tutorial.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_success | булевое значение | true | Прошел ли пользователь тьюториал или нет |
af_tutorial_id | строка | 3 | Идентификатор курса обучения |
af_content | строка | Getting Started (Начало обучения) | Идентификатор курса обучения |
Примеры кода
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
Цель
Пользователи любят делиться в социальных сетях своими достижениями в играх. Это повышает узнаваемость бренда и позволяет привлекать больше пользователей, которые загрузят и установят ваше приложение. Регистрация событий Поделиться позволит понять, в какой момент пользователи с большей вероятностью поделятся этим приложением со своими друзьями.
Совет
В SDK AppsFlyer есть специальные методы для регистрации событий Репосты и Приглашения.
Правила инициирования
Для правильной регистрации это событие должно инициироваться в тот момент, когда пользователь публикует сообщение в социальной сети.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_description | строка | Новый рекорд / Переход на новый уровень / Выигрыш | Повод для публикации сообщения в социальной сети. Это может быть новый рекорд, переход на следующий уровень и т. п. |
platform | строка | Facebook, Whatsapp, Email | Платформа, на которой пользователь размещает сообщения |
Примеры кода
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
Цель
Пользователи часто приглашают своих друзей загрузить и установить приложение. Часто пользователи хотят поделиться этим приложением, а в других случаях они получают вознаграждение за приглашение других пользователей. Для регистрации приглашений можно использовать событие Приглашение. Регистрация этого события дает такие возможности:
- Узнать, на каких сайтах социальных сетей пользователи обычно отправляют приглашения друзьям.
- Узнать, сколько пользователей предложили своим друзьям загрузить и установить приложение.
Правила инициирования
Для правильной регистрации это событие должно инициироваться в тот момент, когда пользователь успешно отправил другу приглашение загрузить и установить приложение.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_description | строка | Попробуй это приложение! | Текст приглашения |
Примеры кода
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
Цель
Регистрация событий Заявка на бонус позволяет:
- Узнать, сколько пользователей подали заявки на предложенные им бонусы.
- Связать заявки на бонусы с активностью пользователей и степенью их вовлечения.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при подаче пользователем заявки на бонус и добавлении бонуса в учетную запись.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
bonus_type | строка | coins | Тип бонуса, который запрашивает пользователь |
Примеры кода
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);
Электронная коммерция
Приложения электронной коммерции позволяют покупателям легко находить и покупать товары в Интернете. Одна из основных особенностей приложений электронной коммерции —это возможность сравнивать цены и выбирать самые лучшие предложения. В приложениях электронной коммерции рекомендуется реализовать регистрацию событий. Регистрация событий позволяет получать ценную информацию о том, что именно люди ищут и что они покупают.
События, которые рекомендуется регистрировать, — это Поиск, Покупка, Добавление в корзину и Добавление в список пожеланий. Регистрация этого события позволяет:
- Выделить самые популярные категории.
- Узнать, что ищут покупатели.
- Отслеживание количества покупателей, оформивших заказы.
- Узнать, сколько у вас постоянных покупателей я и сколько разовых.
Выполнение регистрации
Имя события: af_complete_registration
Цель
Назначение события Выполнение регистрации — это возможность определить количество пользователей, зарегистрировавшихся после загрузки и установки приложения. Кроме того, можно записать способ регистрации (Facebook, электронная почта и т. д.).
Правила инициирования
Это событие должно инициироваться после успешной регистрации пользователя.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | Facebook, Google, email | Способ регистрации, избранный пользователем |
Примеры кода
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
Цель
Событие Вход в систему позволяет определить количество пользователей, входящих в свои учетные записи. Событие "Вход в систему" позволяет регистрировать следующие сведения:
- Количество активных пользователей.
- Периоды наибольшей активности пользователей.
Правила инициирования
Это событие инициируется при входе пользователя в приложение.
Recommended fields
This event can be sent with no additional fields.
Примеры кода
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
Цель
Регистрация событий Поиск позволяет узнать, что ищут пользователи. Кроме того, можно выяснить, какие результаты поиска наиболее значимы для них. Также можно записать, какие результаты поиска приводят к покупке.
Правила инициирования
Это событие должно инициироваться в одном из двух сценариев:
- Когда пользователь нажимает кнопку поиска.
- Когда пользователь переходит на страницу результатов поиска.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_search_string | строка | красное платье, беговые кроссовки | Поисковый запрос |
af_content_list | массив строк | 001, 092 | Список идентификаторов контента |
Примеры кода
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
Цель
Событие Просмотр контента позволяет определить частоту просмотра определенных товаров. Регистрация этого события позволяет следующее:
- Установить соотношение между просмотрами товаров и их продажами.
- Выяснить, какие категории товаров просматривают больше всего.
- Установить взаимосвязь между валютой покупателей и товарами, которые они просматривают.
Правила инициирования
Это событие должно инициироваться, когда пользователь просматривает страницу сведений о конкретном товаре.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 2000 | Цена товара |
af_content_id | строка | 102 | Идентификатор товара |
af_content_type | строка | туфли | Категория товара |
af_currency | строка | 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
Цель
Как правило, на платформах электронной коммерции можно просматривать списки товаров по категориям, например: новые товары, сопутствующие товары, рекомендованные товары и т. д. Событие Просмотр списка позволяет определить, какие списки покупатели просматривают больше всего.
Правила инициирования
Это событие должно инициироваться, когда покупатель просматривает определенный список.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_content_type | строка | сопутствующие, рекомендуемые, новые поступления | Тип списка |
af_content_list | массив строк | 001, 092 | Список идентификаторов контента в конкретной категории |
Примеры кода
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
Цель
Регистрация событий Добавить в список пожеланий позволяет узнать, какие товары и из каких категорий покупатели добавляют в свои списки пожеланий. Зная, какие товары часто добавляют в списки пожеланий, можно выставлять эти товары на распродажу или продавать со скидкой, чтобы стимулировать покупателей к покупке. Кроме того, можно выполнять повторно нацеливаться на этих пользователей в соответствии с тем, какие товары они добавили в свой список пожеланий.
Правила инициирования
Это событие должно инициироваться в тот момент, когда покупатели добавляют товары в свой список пожеланий.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 600 | Цена товара |
af_content_id | строка | 300 | Идентификатор товара |
af_content_type | строка | обувь, электроника | Категория товара |
af_currency | строка | 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
Цель
Назначение событий Добавление в корзину — регистрировать добавление товаров в корзину. Регистрация этого события дает такие возможности:
- Узнать, сколько товаров в среднем покупатели добавляют в процессе одной покупки.
- Узнать, сколько времени проходит между добавлением двух различных товаров.
- Узнать, сколько покупателей отказываются от покупки товаров, добавленных в корзину.
Правила инициирования
Это событие должно инициироваться, когда покупатель добавляет товар в корзину.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 350, 1000 | Цена товара |
af_content_id | строка | 001, 092 | Идентификатор товара |
af_content_type | строка | рубашка, туфли | Тип товара |
af_currency | строка | 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
Цель
Регистрация событий Переход к оформлению заказа позволяет понять, как ведут себя покупатели, когда переходят к оформлению заказа. Например, у вас есть такие возможности:
- Сравнить среднюю стоимость корзины при оформлении заказа со средней стоимостью корзины во время покупки.
- Узнать, добавляли ли или удаляли пользователи товары при переходе к оформлению заказа.
Правила инициирования
Это событие должно инициироваться, когда покупатель переходит к оформлению заказа, но оно еще не завершено.
Recommended fields
Совет
При наличии нескольких товаров из разных категорий отправляйте данные в виде массивов.
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 4000 | Общая стоимость товаров в корзине |
af_content_id | строка или массив строк | 221, 124 | Идентификаторы товаров в корзине |
af_content_type | строка или массив строк | рубашка, брюки | Список категорий товаров |
af_currency | строка | THB | Валюта при оформлении заказа |
af_quantity | целое число или массив целых чисел | 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
Цель
Событие Покупка — это одно из важнейших событий в электронной коммерции. Регистрация событий Покупка позволяет узнать многое о тенденциях покупок в вашем приложении для электронной коммерции. Регистрация событий Покупка дает такие возможности:
- Узнать, сколько всего пользователей являются покупателями.
- Определять самых самых активных покупателей и проводить ретаргетинг, предоставляя специальные предложения в соответствии с их историей покупок.
- Выявлять товары и категории , которые продаются лучше всего.
- Регистрировать доходы от покупок для различных товаров и категорий.
- Регистрировать доходы, полученные от различных кампаний и исходных точек взаимодействия.
Правила инициирования
Это событие должно инициироваться, когда покупатель завершает процесс покупки, но она еще не оплачена.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 1200 | Доход от покупки |
af_price | float | 4000 | Общая сумма покупки |
af_content_id | строка | 121, 262 | Идентификатор товара |
af_content_type | строка | туфли, брюки | Категория товара |
af_currency | строка | AUD | Валюта |
af_quantity | int | 2, 5 | Количество товаров в корзине |
af_order_id | строка | X123ABC | Код заказа, сформированный после покупки. |
af_receipt_id | строка | X123ABC | Код заказа, который необходим для интеграции с провайдерами ретаргетинга CRITEO и Google AdWords |
Примеры кода
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
Цель
Регистрация событий Завершенная покупка позволяет проанализировать, как на самом деле происходит полная оплата покупок.
Правила инициирования
Событие, которое инициируется в момент оплаты покупки пользователем, можно оправлять в виде S2D-сообщения, поскольку это событие происходит на стороне сервера.
Важно!
Это событие нужно отправить, если оплата производится без подключения к Интернету, то есть банковским переводом или наложенным платежом. При отправке этого события убедитесь, что событие "Покупка" (af_purchase
) не содержит параметр af_revenue
. Если отправить оба события с параметром af_revenue
, доход отображается в двойном размере.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 4000 | Доход от покупки |
af_order_id | строка | X123ABC | Код заказа, сгенерированный при покупке |
af_receipt_id | строка | X123ABC | Код чека, сгенерированный для покупателя |
Примеры кода
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
Цель
Регистрация событий Удаление из корзины позволяет:
- Узнать, какие товары покупатели удаляют из своей корзины.
- Узнать, какие категории товаров покупатели удаляют из своей корзины.
- Сравнить полученные данные с данными из события Добавление в корзину, чтобы узнать, какие товары не попадут в заказ.
Правила инициирования
Это событие должно инициироваться, когда покупатель удаляет товар из корзины.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_content_id | строка | 521 | Идентификатор товара |
af_content_type | строка | туфли | Категория товара |
Примеры кода
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
Цель
Это точно такое же событие, как и событие Покупка. Однако, в отличие от события Покупка, событие Первая покупка можно использовать для получения таких данных:
- Сколько времени нужно новому покупателю для совершения покупки.
- Какие товары предпочитают покупать новые покупатели.
- Средняя стоимость покупок и средний доход от покупок, которые совершают новые покупатели.
Правила инициирования
Это событие инициируется при совершении пользователем своей первой покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 1200 | Доход от покупки |
af_price | float | 4000 | Общая сумма покупки |
af_content_id | строка | 121, 262 | Идентификатор товара |
af_content_type | строка | туфли, брюки | Категория товара |
af_currency | строка | AUD | Валюта |
af_quantity | int | 2, 5 | Количество товаров в корзине |
af_order_id | строка | X123ABC | Код заказа, сформированный после покупки. |
af_receipt_id | строка | X123ABC | Код заказа, который необходим для интеграции с провайдерами ретаргетинга CRITEO и Google AdWords |
Примеры кода
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);
Entertainment: streaming
С ростом спроса пользователей на контент по запросу рынок потоковых приложений стал очень конкурентным. Если вы занимаетесь управлением и запуском приложений для потоковой передачи контента по запросу, рекомендуется регистрировать события в приложении.
Совет
Рассматриваемые здесь события применимы и для потоковых приложений, работающих на устройствах с поддержкой технологии Smart TV, таких как:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
Регистрация событий в потоковом приложении позволяет:
- Узнать, какой контент пользуется спросом у пользователей.
- Анализировать и оптимизировать кампании в соответствии со спросом на контент.
- Измерять вовлечение пользователей и использование контента.
Выполнение регистрации
Имя события: af_complete_registration
Цель
С помощью события Выполнение регистрации можно определить количество пользователей, зарегистрировавшихся после загрузки и установки приложения. Кроме того, можно записать способ регистрации (Facebook, эл. почта и т. д.), чтобы понять, каким способам регистрации пользователи отдают предпочтение.
Правила инициирования
Это событие должно инициироваться после успешной регистрации пользователя.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | Facebook, Google, email | Способ регистрации, избранный пользователем |
Примеры кода
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
Цель
Событие Вход в систему позволяет определить количество пользователей, входящих в свои учетные записи. Событие "Вход в систему" позволяет регистрировать следующие сведения:
- Количество активных пользователей.
- Периоды наибольшей активности пользователей.
Правила инициирования
Это событие инициируется при входе пользователя в приложение.
Recommended fields
This event can be sent with no additional fields.
Примеры кода
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
Цель
Многие потоковые службы предлагают пользователям пробный период для ознакомления с платными функциями. Регистрация событий Пробный период позволяет:
- Узнать, сколько пользователей зарегистрировались для пробного использования приложения.
- Если пробный период предоставляется в рамках рекламной акции или сотрудничества с партнером, то можно записать, какая рекламная акция побудила пользователя активировать пробный период.
Правила инициирования
Это событие должно инициироваться, когда пользователь выбирает и активирует пробный период.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
trial_method | строка | бесплатно с нового телефона, бесплатно через оператора, рекламная акция, скидочный код | Способ активации пробного периода |
trial_method_identifier | строка |
название оператора, например Vodafone, название партнера, например Facebook, скидочный код, например TRA123 |
Идентификатор способа активации пробного периода |
Примеры кода
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
Цель
Подписка — один из важнейших элементов потоковых служб. Регистрация событий подписки пользователей позволяет:
- Узнать, какие кампании позволяют привлечь подписчиков.
- Сравнить количество пользователей, использующих пробный период, с количеством подписчиков.
- Записывать доход от подписки и атрибутировать его кампаниям и исходным точкам взаимодействия.
Правила инициирования
Это событие инициируется в одном из двух сценариев:
- когда пользователь оформил подписку;
- когда подписка продлена.
Совет
Дополнительную информацию см. в нашем Руководстве по регистрации подписок.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
new_subscription | булевое значение | true / false | Оформлена ли новая подписка или продлена существующая |
af_coupon_code | строка | 3MonthsSubscription | Скидочный код, если он использовался при подписке |
coupon_code_value | строка | 10% | Насколько снижена начальная цена по скидочному купону |
af_revenue | float | 5 | Доход от подписки |
af_currency | строка | USD | Валюта оплаты подписки |
subscription_method | строка | credit card, e-wallet, PayPal | Способ оплаты подписки |
expiration_date | строка | 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 минуты).
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_content_type | строка | телешоу, музыка | Тип потокового контента |
af_content_id | строка | 092, E34 | Идентификатор потокового контента |
af_content | строка | Название контента | Название контента, например название песни или название телешоу и серии |
media_duration | float | 5 | Продолжительность передачи |
language | строка | 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) you can:
- Узнать, какие пользователи активно используют вашу службу, а какие нет.
- Определить, какие виды мультимедиа и контента наиболее популярны.
Правила инициирования
Это событие инициируется в одном из двух сценариев:
- Когда закачивается передача мультимедийного контента, который принимает пользователь.
- Когда пользователь прекращает прием потокового мультимедийного контента.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
minutes_consumed | float | 3 | Истинное время проигрывания медиа пользователем |
af_content_type | строка | телешоу, музыка | Тип потокового контента |
af_content_id | строка | 092, E34 | Идентификатор потокового контента |
af_content | строка | Название контента | Название контента, например название песни или название телешоу и серии |
media_duration | float | 5 | Продолжительность передачи |
language | строка | 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
Цель
Регистрация загруженного медиаконтента позволяет определить предпочтения пользователей. Можно отдельно записывать данные о воспроизведении мультимедиа и загрузке мультимедиа и сравнивать результаты. Таким образом, можно выяснить, какой мультимедийный контент пользователи предпочитают принимать в потоковом режиме, а какой — загружать.
Правила инициирования
Это событие инициируется в тот момент, когда пользователь начинает загрузку медиаконтента.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_content_type | строка | телешоу, музыка | Вид контента |
af_content_id | строка | 092, E34 | Идентификатор контента |
af_content | строка | Название контента | Название контента, например название песни или название телешоу и серии |
media_duration | float | 5 | Продолжительность передачи |
language | строка | 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
Цель
Регистрация сохраненного медиаконтента позволяет определить предпочтения пользователей.
Правила инициирования
Это событие инициируется каждый раз, когда выполняется сохранение медиаконтента на устройстве пользователя.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_content_type | строка | телешоу, музыка | Вид контента |
af_content_id | строка | 092, E34 | Идентификатор контента |
af_content | строка | Название контента | Название контента, например название песни или название телешоу и серии |
media_duration | float | 5 | Продолжительность передачи |
language | строка | 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);
Finance: banking
Финансовые и банковские приложения предоставляют пользователям возможность выполнять широкий спектр финансовых задач, включая регистрацию новых кредитных карт или подачу заявок на получение кредита. События в приложении, которые мы рекомендуем записывать в финансовых / банковских приложениях, включают открытие счетов, заявки на кредитные карты и заявки на получение кредита. Вот несколько примеров того, какую пользу может принести регистрация этих событий:
- Регистрация заявок на открытие счетов помогает понять, какие счета нужны пользователям больше всего, и дает вам идеи для ретаргетинга.
- Регистрация заявок на получение кредитной карты помогает понять, какие преимущества пользователи ищут в кредитной карте.
- Регистрация заявок на получение кредита помогает понять, для чего пользователям нужна финансовая помощь и в какой степени они этого хотят.
Вход в систему
Имя события: af_login
Цель
Это событие позволяет проанализировать метрику удержания зарегистрированных пользователей.
Правила инициирования
Это событие инициируется при каждом входе пользователя в систему.
Recommended fields
This event can be sent without any additional fields.
Примеры кода
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
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Запись событий регистрации пользователей позволяет получить следующие данные:
- Сколько пользователей установили приложение, однако не регистрировались в нем.
- Какие способы регистрации предпочитают ваши пользователи.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Например, записывая подтвержденные события регистрации, вы можете узнать количество пользователей, которые регистрируются, но безуспешно.
Правила инициирования
Лучший способ записать такое событие — инициировать его после подтверждения регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
submit_registration | строка | email, 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
Цель
Можно зарегистрировать событие заявки на открытие счета и сравнить его с другими данными, чтобы больше узнать о своих пользователях. Например, записывая подтвержденные события регистрации, вы можете узнать количество пользователей, которые регистрируются, но не подают заявку на открытие счета.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры подачи заявки на открытие счета.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
account_type | строка | накопительный | Тип счета, на который подается заявка. |
application_method | строка | приложение | Где была сделана заявка. |
PII_type | строка | паспорт | Тип удостоверения личности, использованного при подаче заявки. |
Примеры кода
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
Цель
Можно записать событие успешной заявки на открытие счета и сравнить его с другими данными, чтобы больше узнать о своих пользователях. Например, записывая успешные заявки на открытие счета, вы можете узнать, как много пользователей подают заявки на открытие счета, но получают отказ, и попытаться улучшить воронку или ретаргетнуть этих пользователей позже.
Правила инициирования
Наилучший способ записать это событие — инициировать его, когда заявление пользователя принято и счет открыт.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
account_type | строка | накопительный | Тип открытого счета |
application_method | строка | приложение | Где была сделана заявка. |
PII_type | строка | Карточка идентификации | Тип удостоверения личности, использованного при подаче заявки. |
Примеры кода
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
Цель
Можно записать событие отказа в заявке на открытие счета и сравнить его с другими данными, чтобы больше узнать о своих пользователях. Например, записывая неуспешные заявки на открытие счета, вы можете узнать, как много пользователей подают заявки на открытие счета, но получают отказ, и попытаться улучшить воронку или ретаргетнуть этих пользователей позже.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
account_type | строка | накопительный | Тип счета, на который подается заявка. |
Примеры кода
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
Цель
Можно записать событие заявления на открытие кредитной карты и сравнить его с другими данными, чтобы больше узнать о своих пользователях. Например, записывая заявки на открытие кредитной карты, вы можете узнать, как много пользователей подают такие заявки, но получают отказ, и попытаться улучшить воронку или ретаргетнуть этих пользователей позже.
Правила инициирования
Для правильной регистрации это событие должно инициироваться, когда пользователь подает заявление на новую кредитную карту.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
credit_card_type | строка | золотая карта | Тип кредитной карты, на которую подается заявка. |
application_method | строка | приложение | Где была сделана заявка. |
PII_type | строка | паспорт | Тип удостоверения личности, использованного при подаче заявки. |
Примеры кода
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
Цель
Можно записать принятое заявление на открытие кредитной карты и сравнить его с другими данными, чтобы больше узнать о своих пользователях. Например, записывая успешные заявки на открытие кредитных карт, вы можете узнать, как много пользователей подают такие заявки, но получают отказ, и попытаться улучшить воронку или ретаргетнуть этих пользователей позже.
Правила инициирования
Для правильной регистрации это событие должно инициироваться, когда заявка пользователя на выдачу кредитной карты принята.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
credit_card_type | строка | золотая карта | Тип кредитной карты, на которую подается заявка. |
application_method | строка | приложение | Где была сделана заявка. |
PII_type | строка | Карточка идентификации | Тип удостоверения личности, использованного при подаче заявки. |
Примеры кода
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
Цель
Можно записать принятое заявление на открытие кредитной карты и сравнить его с другими данными, чтобы больше узнать о своих пользователях. Например, записывая безуспешные заявки на открытие кредитных карт, вы можете узнать, как много пользователей подают такие заявки, но получают отказ, и попытаться улучшить воронку или посоветовать этим пользователям другие кредитные карты.
Правила инициирования
Для правильной регистрации это событие должно инициироваться, когда заявление пользователя на выдачу кредитной карты отклонено.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
credit_card_type | строка | золотая карта | Тип кредитной карты, на которую подается заявка. |
Примеры кода
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
Цель
Вы можете записать, когда пользователь активирует свою новую кредитную карту, и сравнить это с другими данными, чтобы узнать больше о ваших пользователях. Например, записывая данные об активации кредитных карт, вы можете узнать, как много ваших пользователей получают кредитную карту, но не активируют ее, и использовать эту информацию, чтобы улучшить вашу воронку или ретаргетнуть пользователей.
Правила инициирования
Для правильной регистрации события оно должно инициироваться в момент, когда пользователь активирует новую кредитную карту.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
credit_card_type | строка | золотая карта | Тип кредитной карты, на которую подается заявка. |
application_method | строка | приложение | Где была сделана заявка. |
PII_type | строка | Карточка идентификации | Тип удостоверения личности, использованного при подаче заявки. |
Примеры кода
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
Цель
Назначение этого события — помощь в регистрации заявок на получение кредита. Регистрация событий Подача заявки на кредит позволяет:
- Записывать общее количество заявок на получение кредита в своем приложении.
- Узнать минимальную, максимальную и среднюю сумму запрашиваемых кредитов.
- Узнать, на какие виды кредитов подаются заявки.
Правила инициирования
Это событие инициируется, когда пользователь подает заявку на получение кредита.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
loan_type | строка | жилищный | Цель кредита |
loan_amount | float | 1000 | Запрошенная сумма |
loan_period | строка | 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
Цель
Регистрация событий Кредит предоставлен позволяет определить тенденции кредитования и получить следующие данные:
- Виды предоставленных кредитов.
- Запрошенные суммы, по которым предоставлены кредиты.
- Кредиторы, предоставляющие наибольшее количество кредитов, виды и суммы этих кредитов.
Правила инициирования
Это событие инициируется при предоставлении кредита.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
loan_type | строка | жилищный | Цель кредита |
loan_amount | float | 1000 | Запрошенная сумма |
loan_period | строка | 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
Цель
Регистрация событий Кредит отклонен позволяет понять причины отказов в предоставлении кредитов. Выявить взаимосвязь между суммой и сроком кредита и частотой отказов. Помимо этого, на пользователей, которым отказано в предоставлении кредита, можно повторно нацелиться и предложить им взять кредит на меньшую сумму.
Правила инициирования
Это событие инициируется при отказе кредитора предоставить кредит.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
Примеры кода
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);
Fintech: P2P lending
Кредитование Р2Р (peer-to-peer) — это новый способ кредитования для физических и юридических лиц, который позволяет давать и брать деньги взаймы друг у друга.
Рекомендуется регистрировать события в приложениях P2P-кредитования, потому что это позволяет:
- Регистрировать действия отдельных кредиторов и заемщиков.
- Узнать, какие виды кредитов люди предлагают, и сравнить с тем, какие кредиты интересуют заемщиков.
- Получить такие показатели, как средняя, минимальная и максимальная сумма кредита.
- Регистрировать кредитные ставки, при которых кредиты предоставляются и отклоняются.
Имея такие данные, полученные благодаря регистрации событий, можно определить надежных заемщиков и предложить им более выгодные процентные ставки. Точно так же можно выявить наиболее активных кредиторов и предложить им более низкие тарифы. Кроме того, зная, какие кредиты пользуются наибольшей популярностью среди ваших пользователей, можно проводить маркетинговые кампании, адресованные такой аудитории.
Запрос на регистрацию
Имя события: registration_submitted
Цель
Поскольку при взаимном кредитовании возможны злоупотребления, пользователи должны сначала подтвердить свою личность. Для этого они подают запрос на регистрацию. Регистрация событий Запрос на регистрацию дает такие возможности:
- Фиксировать количество зарегистрированных пользователей, которые не подтвердили свою учетную запись.
- Найти взаимосвязь между способом регистрации (электронная почта, Facebook, Google) и долей подтвержденных аккаунтов.
Правила инициирования
Это событие инициируется при подаче пользователем запроса на регистрацию в службе Р2Р.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Цель
Записывая события Выполнение регистрации, можно узнать фактическое количество пользователей, которые подтвердили свою личность после регистрации. Этих пользователей можно соотнести с кампаниями и выяснить, какие именно кампании дают активных пользователей.
Правила инициирования
Это событие инициируется при подтверждении регистрации пользователя.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | Способ регистрации или социальная сеть, выбранные пользователем |
Примеры кода
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>
Цель
При подаче заявки на получение кредита заемщикам необходимо заполнить несколько бланков. Регистрируя бланки, заполняемые потенциальными заемщиками, можно наблюдать процент неподанных заявок. Помимо этого, можно повторно нацеливаться на заемщиков, которые закрывают формы, не заполнив заявку на получение кредита. При отправке события указывайте в имени события название формы.
Правила инициирования
Это событие инициируется каждый раз, когда пользователь отправляет заполненный бланк.
Recommended fields
You can send this event without additional fields.
Примечание
Настоятельно рекомендуется привязывать кредиты к кредиторам. Для этого нужно обязательно установить идентификатор клиента (Customer User ID). Идентификатор клиента дает возможность соотнести кредиторов с пользователями вашего приложения на основании их учетных данных в AppsFlyer. Когда идентификатор клиента установлен, можно быть уверенным, что каждое отправленное событие будет содержать этот идентификатор.
Примеры кода
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
Цель
Назначение этого события — помощь в регистрации заявок на получение кредита. Регистрация событий Подача заявки на кредит позволяет:
- Записывать общее количество заявок на получение кредита в своем приложении.
- Узнать минимальную, максимальную и среднюю сумму запрашиваемых кредитов.
- Узнать, на какие виды кредитов подаются заявки.
Правила инициирования
Это событие инициируется, когда пользователь подает заявку на получение кредита.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
loan_amount | float | 1000 | Запрошенная сумма |
loan_type | строка | 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
Цель
Регистрация событий Кредит предоставлен позволяет определить тенденции кредитования и получить следующие данные:
- Виды предоставленных кредитов.
- Запрошенные суммы, по которым предоставлены кредиты.
- Кредиторы, предоставляющие наибольшее количество кредитов, виды и суммы этих кредитов.
Правила инициирования
Это событие инициируется при предоставлении кредита.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
loan_amount | float | 1000 | Запрошенная сумма |
loan_type | строка | 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
Цель
Регистрация событий Кредит отклонен позволяет понять причины отказов в предоставлении кредитов. Выявить взаимосвязь между суммой и сроком кредита и частотой отказов. Помимо этого, на пользователей, которым отказано в предоставлении кредита, можно повторно нацелиться и предложить им взять кредит на меньшую сумму.
Правила инициирования
Это событие инициируется при отказе кредитора предоставить кредит.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
load_id | строка | 1735102 | Идентификатор кредита |
Примеры кода
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
Цель
Регистрация событий Оплата позволяет отмечать заемщиков как надежных. Надежными заемщиками считаются те, которые выполняют свои обязательства по погашению кредита. Заемщиков можно атрибутировать кампаниям и выяснить, какие именно кампании дают надежных заемщиков. Кроме того, регистрация этого события позволяет получить данные о минимальной, максимальной и средней сумме платежа.
Правила инициирования
Это событие инициируется каждый раз, когда пользователь совершает оплату в счет погашения кредита.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
payment_amount | float | 100 | Сумма оплаты |
payment_id | строка | AE12SF | Идентификатор платежа |
Примеры кода
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
Цель
Регистрация событий Кредит погашен позволяет определить заемщиков, которые выполняют свои обязательства по погашению кредита. Кроме того, таких на заемщиков можно повторно нацелиться и предложить им более низкую процентную ставку или другие формы поощрения.
Правила инициирования
Это событие инициируется при полном погашении кредита.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
loan_id | строка | 1735102 | Идентификатор кредита |
Примеры кода
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
Цель
Это событие позволяет проанализировать метрику удержания зарегистрированных пользователей.
Правила инициирования
Это событие инициируется при каждом входе пользователя в систему.
Recommended fields
This event can be sent without any additional fields.
Примеры кода
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
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Запись событий регистрации пользователей позволяет получить следующие данные:
- Сколько пользователей установили приложение, однако не регистрировались в нем.
- Какие способы регистрации предпочитают ваши пользователи.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Цель
Тьюториал помогает пользователям узнать, как лучше использовать ваше приложение. Регистрация событий прохождения обучения дает такие возможности:
- Узнать, какие темы могут быть трудны для пользователей.
- Узнать, какие курсы обучения плохо работают, и улучшить их.
Правила инициирования
Есть два сценария, в которых должно инициироваться это событие:
- When a user completes the tutorial. An event will be sent with a field indicating successful tutorial completion.
- When a user starts the tutorial but quits without completing it. When the user quits, an event is sent with a field indicating that the user didn't complete the tutorial.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_success | булевое значение | Да | Прошел ли пользователь тьюториал или нет |
af_tutorial_id | строка | 3 | Идентификатор курса обучения |
af_content | строка | алгебра | Идентификатор курса обучения |
Примеры кода
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
Цель
Вы можете записывать завершенные упражнения и сравнивать их с другими данными, чтобы узнать больше о ваших пользователях. Например, записывая события завершения упражнений, вы можете узнать, как много пользователей принимаются за упражнение, но не завершают его.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем упражнения.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
course_name | строка | алгебра | Название курса. |
exercise_name | строка | 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
Цель
Вы можете записывать завершенные курсы и сравнивать их с другими данными, чтобы узнать больше о ваших пользователях. Например, записывая события завершения курса, вы можете узнать, как много пользователей принимаются за курс, но не завершают его.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем курса.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
course_name | строка | алгебра | Название курса. |
course_completed | строка | Да | Был ли завершен курс. |
Примеры кода
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
Цель
Вы можете регистрировать выданные сертификаты и сравнивать их с другими данными, чтобы узнать больше о ваших пользователях. Например, регистрируя события выдачи сертификатов, вы можете узнать, сколько пользователей закончили курс, и ретаргетнуть их на новый курс.
Правила инициирования
Наилучший способ записать это событие — инициировать его при получении пользователем сертификата.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
course_name | строка | алгебра | Название курса. |
certificate_received | строка | Да | Был ли выдан сертификат. |
Примеры кода
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
Цель
Во многих приложениях для онлайн-образования пользователи могут совершать покупки, например, курсы, программное обеспечение или школьные принадлежности Событие Purchase (Покупка) поможет вам регистрировать покупки внутри приложения, сделанные пользователями. Регистрация событий покупки позволяет:
- Определить LTV своих пользователей и ROI своих кампаний во всех рекламных сетях и рекламных агентствах.
- Определить, какие предложения больше всего популярны среди пользователей.
- Настроить перекрестные ссылки между кампаниями и приобретенными товарами, что позволит оптимизировать нацеливание кампании.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу благодарности после успешной покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 200 | Ожидаемый доход от покупки |
af_currency | строка | USD | Код валюты |
af_content_id | строка | 001, 092 | Идентификатор товара |
order_id | строка | 9277 | Идентификатор заказа |
af_receipt_id | строка | 9277 | Идентификатор чека |
Примеры кода
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);
Navigation: ride hailing
Сервис вызова частных автомобилей и такси в последнее время стал очень популярен, особенно в районах, где большинство жителей не имеют автомобилей. Регистрируя и анализируя внутренние события приложения, можно получить разнообразную информацию:
- Как взаимодействуют пассажиры и водители.
- В каких странах вашу услугу вызова автомобиля использует больше всего людей.
- Данные о ценах, поездках и расстояниях поездок.
Выполнение регистрации
Имя события: af_complete_registration
Цель
Регистрация событий Выполнение регистрации позволяет получить ценную информацию о своих пользователях. Регистрация событий Выполнение регистрации позволяет:
- Какой способ регистрации предпочитают ваши пользователи (Google, Facebook, Email).
- Сколько пользователей фактически регистрируется после загрузки и установки приложения.
- Увидеть тенденции регистрации в разных странах и определить страны, где пользователи вероятнее всего готовы использовать ваше приложение.
Правила инициирования
Это событие инициируется при успешной регистрации пользователя.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | Платформа или способ, используемый для регистрации | |
country_code | строка | 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
Цель
Регистрация событий Добавление платежной информации позволяет классифицировать пользователей. Это позволяет получить следующие данные:
- Узнать, сколько времени требуется пользователям для ввода платежной информации.
- Выяснить, какие способы оплаты используются чаще всего (кредитная карта, электронный кошелек).
- Сотрудничать и создавать совместные кампании с поставщиками популярных платежных услуг.
Правила инициирования
Это событие инициируется в случае успешного добавления пользователями своих платежных данных в аккаунты.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_success | булевое значение | true | Добавлен ли способ оплаты или нет |
credit_card_type | строка | Visa, Mastercard | Тип кредитной карты (необязательный) |
payment_method_type | строка | кредитная карта, электронный кошелек | Тип способа оплаты |
Примеры кода
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
Цель
Событие Заказ поездки — это одно из четырех событий, связанных с заказом поездки. Они описаны ниже. Регистрация этого события дает такие возможности:
- Определить популярные направления.
- Увидеть тенденции и узнать, куда и откуда ездят люди.
- Узнать среднее расстояние поездок.
- Определить города, регионы и страны, где больше всего пользователей.
Кроме того, регистрация этого события и трех других событий, связанных с заказом поездки, позволяет регистрировать успешные сделки. Можно регистрировать успешные сделки и сравнивать их с неудачными сделками. Например, можно узнать, сколько заказов поездок отправлено, сколько из них закрыто и сколько отменено.
Правила инициирования
Это событие инициируется, когда пассажир заказывает поездку.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 22.4 | Цена, назначенная за поездку |
af_currency | строка | SGD | Валюта |
af_destination_a | строка | Plaza Singapura | Пункт отправления |
af_destination_b | строка | Marina Bay Sands | Пункт прибытия |
distance | float | 5.2 | Расстояние между двумя пунктами |
af_content_type | строка | Taxi | Вид транспорта |
payment_method_type | строка | кредитная карта, электронный кошелек | Тип способа оплаты |
af_city | строка | Singapore | Город, в котором сделан заказ |
af_region | строка | SFA | Регион, в котором сделан заказ |
af_country | строка | Singapore | Страна, в которой сделан заказ |
order_id | строка | 135790 | Код заказа |
Примеры кода
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
Цель
Событие Заказ принят — это одно из четырех событий, связанных с заказом автомобиля. Регистрация этого события дает такие возможности:
- Выявить наиболее активных водителей.
- Узнать, какие направления популярны среди водителей.
- Узнать среднюю и предельную цены за поездку по каждому водителю.
Кроме того, регистрация этого события и трех других событий, связанных с заказом поездки, позволяет лучше понять активность водителя. Например, можно узнать, какие водители принимают большинство заказов на поездки, какие водители выбирают только короткие поездки, игнорируя длинные, и т. д.
Правила инициирования
Это событие инициируется, когда водитель принимает заказ.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 22.4 | Цена, назначенная за поездку |
af_currency | строка | SGD | Валюта |
af_destination_a | строка | Plaza Singapura | Пункт отправления |
af_destination_b | строка | Marina Bay Sands | Пункт прибытия |
distance | float | 5.2 | Расстояние между двумя пунктами |
af_content_type | строка | Taxi | Вид транспорта |
driver_id | строка | 1706 | Идентификатор водителя, который принял заказ |
payment_method_type | строка | кредитная карта, электронный кошелек | Тип способа оплаты |
af_city | строка | Singapore | Город, в котором сделан заказ |
af_region | строка | SFA | Регион, в котором сделан заказ |
af_country | строка | Singapore | Страна, в которой сделан заказ |
af_order_id | строка | 135790 | Код заказа |
Примеры кода
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_cancelled
Цель
Событие Отмена поездки — это одно из четырех событий, связанных с заказом поездок. Регистрация этого события дает такие возможности:
- Записывать водителей и пассажиров, которые постоянно отменяют поездки.
- Узнать, сколько поездок отменяется.
- Соотнести частоту отмен с такими показателями, как цена, пункт назначения, расстояние, города и т. п.
- Выяснить причины отмены поездок.
Правила инициирования
Это событие инициируется при отмене заказа на поездку.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 22.4 | Цена, назначенная за поездку |
af_currency | строка | SGD | Валюта |
af_destination_a | строка | Plaza Singapura | Пункт отправления |
af_destination_b | строка | Marina Bay Sands | Пункт прибытия |
distance | float | 5.2 | Расстояние между двумя пунктами |
af_content_type | строка | Taxi | Вид транспорта |
driver_id | строка | 1706 | Идентификатор водителя, который принял заказ |
cancelation_reason | строка | цена слишком высокая, водитель не приехал, пассажир не явился | Причина отмены поездки |
payment_method_type | строка | кредитная карта, электронный кошелек | Тип способа оплаты |
af_city | строка | Singapore | Город, в котором сделан заказ |
af_region | строка | SFA | Регион, в котором сделан заказ |
af_country | строка | Singapore | Страна, в которой сделан заказ |
order_id | строка | 135790 | Код заказа |
canceled_by | строка | Пассажир | Отменил ли поездку пассажир или водитель |
Примеры кода
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
Цель
Событие Заказ завершен — это одно из четырех событий, связанных с заказом автомобиля. Регистрация этого события дает такие возможности:
- Узнать, сколько потратил пассажир и сколько заработал водитель.
- Соотнести количество завершенных заказов с такими показателями, как пункт назначения, расстояние, способ оплаты, идентификатор водителя и т. п.
- Определить среднее и предельное расстояние поездок для водителей и пассажиров.
- Сравнить количество завершенных заказов с количеством отмен.
- Записывать и регистрировать оценки водителя.
Правила инициирования
Это событие инициируется при завершении поездки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 22.4 | Цена, назначенная за поездку |
af_currency | строка | SGD | Валюта |
af_destination_a | строка | Plaza Singapura | Пункт отправления |
af_destination_b | строка | Marina Bay Sands | Пункт прибытия |
distance | float | 5.2 | Расстояние между двумя пунктами |
af_content_type | строка | Taxi | Вид транспорта |
driver_id | строка | 1706 | Идентификатор водителя, который принял заказ |
payment_method_type | строка | кредитная карта, электронный кошелек | Тип способа оплаты |
af_city | строка | Singapore | Город, в котором сделан заказ |
af_region | строка | SFA | Регион, в котором сделан заказ |
af_country | строка | Singapore | Страна, в которой сделан заказ |
order_id | строка | 135790 | Код заказа |
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);
Использование бонусов
Имя события: spent_credits
Цель
The Ride booking completed event discussed above has a field called credits_earned
. This field logs the credits that the passenger earns for each ride. The passenger can then trade these credits for vouchers and discounts. By recording these events you can:
- Узнать, сколько баллов пассажир обменял на купоны.
- Узнать, какие купоны и скидки предпочитают пассажиры.
Правила инициирования
Это событие инициируется, когда пассажир использует свои баллы.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_content | строка | Билет на один киносеанс | Вид купона или скидки |
credits_used | int | 1000 | Сколько баллов использовано |
credits_remaining | int | 2090 | Сколько баллов осталось в аккаунте |
invoice_id | строка | KO215123SD | Идентификатор счета-фактуры на использование баллов |
Примеры кода
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);
Travel: flight booking
С помощью приложений для бронирования авиабилетов путешественники могут выбрать самые лучшие предложения и легко забронировать авиабилеты. События, которые рекомендуется регистрировать, — это бронирование авиабилетов, поиск авиарейсов и просмотр предложений. Регистрация этих событий позволяет анализировать пользовательские предпочтения и покупки. Например, анализ данных, полученных из событий, дает такие возможности:
- Определить популярные направления.
- Анализировать сезонные изменения.
- Узнать, какие авиакомпании пользуются самой большой популярностью среди пользователей.
Бронирование поездки
Имя события: af_travel_booking
Цель
The ability to book flights is the core function of the app. By recording this event with all its fields, you can gain insights into:
- Популярные направления.
- Популярные авиакомпании.
- Сезонные тенденции.
Правила инициирования
Это событие следует отправлять при переходе пользователя на страницу благодарности после успешного бронирования рейса.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 647 | Доход, связанный с бронированием |
af_currency | строка | SGD | Код валюты |
af_price | float | 674 | Цена |
af_content_id | строка | ODIRNH | Идентификатор предложения на авиабилеты |
af_departing_departure_date | строка | 2018-06-21 | Дата отправления |
af_returning_departure_date | строка | 2018-06-26 | Дата возвращения |
af_destination_a | строка | BKK | Первый пункт назначения |
af_destination_b | строка | SYD | Второй пункт назначения (если есть) |
airline_code | строка | KLM | Код авиакомпании |
af_class | строка | эконом | Класс бронируемого авиабилета |
purchase_method | строка | credit card | Кредитная карта, 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
Цель
После выполнения поиска пользователи нажимают на результаты поиска, которые они считают подходящими. Запись контента, которое просматривают пользователи, дает такие возможности:
- Узнать, какие предложения авиабилетов наиболее привлекательны для пользователей.
- Увидеть, соответствуют ли результаты поиска поисковым запросам.
Правила инициирования
Это событие лучше всего инициировать, когда пользователь нажимает на результат поиска.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_departing_departure_date | строка | 2018-06-21 | Дата отправления |
af_returning_departure_date | строка | 2018-06-26 | Дата возвращения |
af_destination_a | строка | BKK | Первый пункт назначения |
af_destination_b | строка | SYD | Второй пункт назначения (если есть) |
Примеры кода
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
Цель
flight booking apps let users search for flights and deals. One way of gaining insights into user preferences is to record the search parameters. By recording the search event and its fields, you can:
- Узнать, что чаще всего ищут пользователи.
- Определить наиболее популярные направления.
- Узнать, сколько пользователей путешествует с детьми.
- Узнать, в какое время года предпочитают путешествовать пользователи.
Правила инициирования
Это событие инициируется, когда пользователь нажимает кнопку поиска после заполнения формы поиска.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_num_children | int | 0 | Количество пассажиров-детей |
af_destination_a | строка | BKK | Первый пункт назначения |
af_destination_b | строка | SYD | Второй пункт назначения (если есть) |
af_departing_departure_date | строка | 2018-06-21 | Дата отправления |
af_returning_departure_date | строка | 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
Цель
Это событие позволяет регистрировать успешные и неудачные попытки добавления платежной информации при бронировании рейса.
Правила инициирования
Это событие инициируется, когда пользователь нажимает на кнопку "Забронировать".
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_success | булевое значение | 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
Цель
Это точно такое же событие, как и событие Покупка. Однако, в отличие от события Покупка, событие Первая покупка можно использовать для получения таких данных:
- Сколько времени нужно новому покупателю для совершения покупки.
- Какие рейсы предпочитают заказывать новые покупатели.
- Средняя стоимость покупок и средний доход от покупок, которые совершают новые покупатели.
Правила инициирования
Это событие инициируется при совершении пользователем своей первой покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 1200 | Доход от покупки |
af_price | float | 4000 | Общая сумма покупки |
af_content_id | строка | 121, 262 | Идентификатор товара |
af_content_type | строка | рейс | Категория товара |
af_currency | строка | AUD | Валюта |
af_quantity | int | 1 | Количество товаров в корзине |
af_order_id | строка | X123ABC | Код заказа, сформированный после покупки. |
af_receipt_id | строка | X123ABC | Код заказа, который необходим для интеграции с провайдерами ретаргетинга CRITEO и Google AdWords |
Примеры кода
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);
Travel: hotel booking
Регистрируя внутренние события в приложении бронирования отелей, можно узнать, какие кампании и исходные точки взаимодействия привлекают пользователей, действительно бронирующих отели на время отпуска. Кроме того, можно узнать, какие кампании и исходные точки взаимодействия привлекают больше всего реальных заказчиков, которые приносят больше всего дохода. Предпочтения, такие как оценка отеля, сезон, страна и количество детей, можно атрибутировать пользователям, пришедшим из определенных исходных точек взаимодействия. Атрибуция предпочтений пользователей исходным точкам взаимодействия дает возможность оптимизировать кампании в исходных точках взаимодействия путем адресования предпочтений пользователей.
Выполнение регистрации
Имя события: af_complete_registration
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Запись событий регистрации пользователей позволяет получить следующие данные:
- Сколько пользователей установили приложение, однако не регистрировались в нем.
- Какие способы регистрации предпочитают ваши пользователи.
- Узнать, какие медиа-источники привлекают пользователей, которые действительно регистрируются.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Цель
Это событие позволяет регистрировать удержание зарегистрированных пользователей.
Правила инициирования
Это событие инициируется каждый раз при входе пользователя в приложение или при его открытии.
Recommended fields
This event can be sent without any additional fields.
Примеры кода
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
Цель
Назначение этого события — показать, что ищут пользователи. А зная, что ищут пользователи, можно сообщить им о лучших предложениях и рекламных акциях. Кроме того, можно узнать, что ищут пользователи из определенных стран и городов и нацелить их на соответствующие медиа-источники.
Правила инициирования
Это событие инициируется, когда пользователь выполняет поиск.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_date_a | строка | 2018/07/26 | Дата приезда |
af_date_b | строка | 2018/08/01 | Дата отъезда |
af_destination_a | строка | London | Местонахождение пользователя |
af_destination_b | строка | Мадрид | Местонахождение отеля |
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
Цель
Назначение этого события — показать, какие отели просматривают пользователи. Можно увидеть, какие типы объектов ищут пользователи, и каковы их предпочтения в зависимости от сезона и местонахождения. Это дает возможность перенацеливать этих пользователей на объявления и рекламные акции. Кроме того, можно увидеть, кто из пользователей не только просматривает, но и бронирует отель, а кто — просто просматривает. О тех, кто действительно бронирует отель, можно узнать, через какие медиа-источники они приходят. А на тех, кто просто смотрит, можно позже нацелить ретаргетинговую кампанию.
Правила инициирования
Это событие инициируется при просмотре объекта пользователем.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 674 | Цена номера в отеле |
af_content_id | строка | ODIRNH | Идентификатор отеля |
af_date_a | строка | 2018/07/26 | Дата приезда |
af_date_b | строка | 2018/08/01 | Дата отъезда |
af_destination_a | строка | London | Местонахождение пользователя |
af_destination_b | строка | Мадрид | Местонахождение отеля |
af_class | строка | Люкс | Тип номера |
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 | строка | Центр | Район расположения отеля |
Примеры кода
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
Цель
Событие Добавление в список пожеланий показывает отели и направления, которые пользователи хотели бы забронировать. Регистрация этого события позволяет получить представление о том, чего хотят пользователи. Зная, что некоторые пользователи ищут конкретные отели в определенных регионах и с определенными оценками и рейтингами, можно нацеливаться на таких пользователей.
Правила инициирования
Это событие инициируется в тот момент, когда покупатели добавляют объявления в свой список пожеланий.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 674 | Цена номера в отеле |
af_content_id | строка | ODIRNH | Идентификатор отеля |
af_date_a | строка | 2018/07/26 | Дата приезда |
af_date_b | строка | 2018/08/01 | Дата отъезда |
af_destination_a | строка | London | Местонахождение пользователя |
af_destination_b | строка | Мадрид | Местонахождение отеля |
af_class | строка | Люкс | Тип номера |
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 | строка | Центр | Район расположения отеля |
purchase_method | строка | Кредитная карта | Способ оплаты |
af_coupon_code | строка | SUM2018 | Промокод или бонусные баллы за лояльность |
property_type | строка | Отель | Тип объекта |
Примеры кода
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
Цель
Это событие предназначено для того, чтобы вы могли записать количество пользователей, приступивших к оформлению заказа. Кроме того, можно узнать способы оплаты бронирования (кредитная карта, электронный кошелек) и выполнить соответствующее нацеливание. Можно также узнать, какие пользователи не завершают оформление бронирования, и повторно нацеливаться на них.
Правила инициирования
Это событие инициируется в тот момент, когда пользователи вводят сведения о своей кредитной карте или подключают электронный кошелек.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_price | float | 674 | Цена номера в отеле |
af_content_id | строка | ODIRNH | Идентификатор отеля |
af_date_a | строка | 2018/07/26 | Дата приезда |
af_date_b | строка | 2018/08/01 | Дата отъезда |
af_destination_a | строка | London | Местонахождение пользователя |
af_destination_b | строка | Мадрид | Местонахождение отеля |
af_class | строка | Люкс | Тип номера |
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 | строка | Центр | Район расположения отеля |
purchase_method | строка | Кредитная карта | Способ оплаты |
af_coupon_code | строка | SUM2018 | Промокод или бонусные баллы за лояльность |
property_type | строка | Отель | Тип объекта |
Примеры кода
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
Цель
Назначение события Бронирование путешествий — отслеживать общее количество бронирований, выполненное с помощью вашего приложения. Кроме того, регистрация этого дает события такие возможности:
- Регистрировать выручку от бронирования.
- Узнать, сколько пользователей с детьми бронируют отели.
- Получить представление о сезонных тенденциях.
- Определить отели, которые пользуются популярностью среди пользователей.
Правила инициирования
Это событие инициируется при переходе пользователя на страницу благодарности после успешного бронирования отеля.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 647 | Доход от бронирования |
af_currency | строка | GBP | Код валюты |
af_price | float | 674 | Цена номера в отеле |
af_content_id | строка | ODIRNH | Идентификатор отеля |
af_date_a | строка | 2018/07/26 | Дата приезда |
af_date_b | строка | 2018/08/01 | Дата отъезда |
af_destination_a | строка | London | Местонахождение пользователя |
af_destination_b | строка | Мадрид | Местонахождение отеля |
af_class | строка | Люкс | Тип номера |
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 | строка | Центр | Район расположения отеля |
purchase_method | строка | Кредитная карта | Способ оплаты |
af_coupon_code | строка | SUM2018 | Промокод или бонусные баллы за лояльность |
property_type | строка | Отель | Тип объекта |
new_booking | булевое значение | 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
Цель
Это точно такое же событие, как и событие Покупка. Однако, в отличие от события Покупка, событие Первая покупка можно использовать для получения таких данных:
- Сколько времени нужно новому покупателю для совершения покупки.
- Какие товары предпочитают покупать новые покупатели.
- Средняя стоимость покупок и средний доход от покупок, которые совершают новые покупатели.
Правила инициирования
Это событие инициируется при совершении пользователем своей первой покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 1200 | Доход от покупки |
af_price | float | 4000 | Общая сумма покупки |
af_content_id | строка | 121, 262 | Идентификатор товара |
af_content_type | строка | отель | Категория товара |
af_currency | строка | AUD | Валюта |
af_quantity | int | 1 | Количество товаров в корзине |
af_order_id | строка | X123ABC | Код заказа, сформированный после покупки. |
af_receipt_id | строка | X123ABC | Код заказа, который необходим для интеграции с провайдерами ретаргетинга CRITEO и Google AdWords |
Примеры кода
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);
Healthcare
Healthcare apps enable users to purchase health insurance, make appointments, receive medical advice, etc. The in-app events that we recommend recording in healthcare apps include purchases and bookings. Here are some examples of how recording these events can benefit you:
- Recording purchases helps you understand which medications are the most necessary and in-demand.
- Recording insurance plans helps you understand what packages users are interested in.
- Recording bookings helps you understand which medical issues users are most concerned about.
Вход в систему
Имя события: af_login
Цель
Это событие позволяет проанализировать метрику удержания зарегистрированных пользователей.
Правила инициирования
Это событие инициируется при каждом входе пользователя в систему.
Recommended fields
This event can be sent without any additional fields.
Примеры кода
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
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Запись событий регистрации пользователей позволяет получить следующие данные:
- Сколько пользователей установили приложение, однако не регистрировались в нем.
- Какие способы регистрации предпочитают ваши пользователи.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Event Name: confirmed_appointment
Цель
You can record when a user makes any sort of appointment. This can help you, for example, since when you record appointment confirmation events, you can send these users retargeting ads and reminders for regular checkups and future appointments.
Правила инициирования
The best way to record this event is to trigger it when the user makes an appointment.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
doctor name | строка | Robert James | Name of the doctor. |
appointment number | строка | 001 | Number of the appointment. |
Примеры кода
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
Event Name: canceled_appointment
Цель
You can record when a user cancels an appointment. This can help you, for example, since when you record appointment cancellation events, you can send these users retargeting ads to reschedule their appointments.
Правила инициирования
The best way to record this event is to trigger it when the user cancels an appointment.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
doctor name | строка | Robert James | Name of the doctor. |
appointment number | строка | 001 | Number of the appointment. |
Примеры кода
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
Event Name: doctor_first_booking
Цель
You can record when a user booked their first appointment. This can help you, for example, since when you record first appointment events, you can send these users promos/retargeting ads.
Правила инициирования
The best way to record this event is to trigger it when the user makes their first appointment.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
doctor name | строка | Robert James | Name of the doctor. |
specialty | строка | neurology | Medical specialty. |
duration | строка | 30 min chat | Amount of time of the appointment. |
price | строка | 50 | Price of the appointment. |
Примеры кода
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
Event Name: lab_first_appointment
Цель
You can record when a user booked their first lab appointment. This can help you, for example, since when you record first appointment events, you can send these users promos/retargeting ads.
Правила инициирования
The best way to record this event is to trigger it when the user makes their first appointment.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
lab selection | строка | full body checkup | Name of the lab type. |
quantity | строка | 2 | Amount ordered. |
price | строка | 500 | Price of the lab. |
Примеры кода
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
Event Name: pharmacy_first_purchase
Цель
You can record when a user makes their first pharmaceutical purchase. This can help you, for example, since when you record first purchase events, you can send these users promos/retargeting ads.
Правила инициирования
The best way to record this event is to trigger it when the user makes their first purchase.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
medicine name | строка | rhinos | Name of the medicine. |
quantity | строка | 1 | Amount ordered. |
price | строка | 10 | Price of the medicine. |
Примеры кода
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
Event Name: doctor_booking
Цель
You can record when a user books an in-person appointment with a doctor. This can help you, for example, since when you record these appointment events, it tells you more about your user needs and interests.
Правила инициирования
The best way to record this event is to trigger it when the user schedules an in-person appointment.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
doctor name | строка | Robert James | Name of the doctor. |
specialty | строка | neurology | Medical specialty. |
duration | строка | 30 min chat | Amount of time of the appointment. |
price | строка | 50 | Price of the appointment. |
Примеры кода
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
Event Name: chat_doctor
Цель
If your app lets users schedule live chats with a doctor, you can record when a user booked such a chat. This can help you, for example, since when you record these booking events, it tells you more about your user needs and interests.
Правила инициирования
The best way to record this event is to trigger it when the user makes a booking.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
doctor name | строка | Robert James | Name of the doctor. |
specialty | строка | neurology | Medical specialty. |
duration | строка | 30 min chat | Amount of time of the appointment. |
price | строка | 50 | Price of the appointment. |
Примеры кода
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
Event Name: lab_appointment
Цель
You can record when a user booked a lab appointment. This can help you, for example, since when you record appointment events, you can send these users promos/retargeting ads.
Правила инициирования
The best way to record this event is to trigger it when the user makes a lab appointment.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
lab selection | строка | full body checkup | Name of the lab type. |
quantity | строка | 2 | Amount ordered. |
price | строка | 500 | Price of the lab. |
Примеры кода
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
Event Name: pharmacy_purchase
Цель
You can record when a user makes a pharmaceutical purchase. This can help you, for example, since when you record purchase events, you can send these users promos/retargeting ads.
Правила инициирования
The best way to record this event is to trigger it when the user makes a pharmaceutical purchase.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
medicine name | строка | rhinos | Name of the medicine. |
quantity | строка | 1 | Amount ordered. |
price | строка | 10 | Price of the medicine. |
Примеры кода
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);
Добавление в корзину
Event Name: add_to_cart
Цель
You can record when a user adds a medication to their shopping cart. This can help you, for example, since when you record add-to-cart events, you can send these users promos/reminders to checkout and complete the purchase.
Правила инициирования
The best way to record this event is to trigger it when the user adds a product to their shopping cart.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
medicine name | строка | rhinos | Name of the medicine. |
quantity | строка | 1 | Amount ordered. |
price | строка | 10 | Price of the medicine. |
Примеры кода
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
Event Name: insurance_membership
Цель
If your app partners with an insurer to provide insurance options, you can record when a user registers for insurance. This can help you, for example, since when you record insurance membership registration events, you learn more about your users and can retarget them accordingly.
Правила инициирования
The best way to record this event is to trigger it when the user gets insurance membership.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
insurance name | строка | DavidShield | Name of the insurance company. |
insurance type | строка | premium | Type of insurance plan. |
Примеры кода
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
Event Name: receipt_issuance
Цель
Record when your users receive receipts. Users with a receipt can potentially claim the cost of the doctor appointment, lab, or medicine from an insurer. And this can help you, for example, since when you record receipt issuance events, you use the data for retargeting campaigns about personal insurance coverage.
Правила инициирования
The best way to record this event is to trigger it when the user gets a receipt.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
app name | строка | Healthcare App | Name of your app |
doctor name | строка | Robert James | Name of the doctor. |
consultation description | строка | fever | Description of the health condition. |
Примеры кода
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
Цель
Record in-app purchases made by users. By recording purchases you can:
- Определить LTV своих пользователей и ROI своих кампаний во всех рекламных сетях и рекламных агентствах.
- Определить, какие предложения больше всего популярны среди пользователей.
- Настроить перекрестные ссылки между кампаниями и приобретенными товарами, что позволит оптимизировать нацеливание кампании.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу благодарности после успешной покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 50 | The revenue from the purchase. |
af_currency | строка | USD | The currency code. |
af_content_type | строка | lab | The name of the purchase. |
af_order_id | строка | 9277 | The order ID. |
payment_method_type | строка | credit card, local | Payment method. |
Примеры кода
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
Цель
Top-up funds can be used to buy any package or service offered inside the app. You can record user top-ups and compare it with other data to learn more about your users. By recording user top-up events you can:
- Узнать, на какие суммы люди пополняют свои счета.
- Используйте суммы пополнения, чтобы настроить таргетинг на пользователей с настраиваемыми кампаниями в пределах их бюджетов пополнения.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу завершения пополнения.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | строка | 2000 | Сумма пополнения. |
top_up_id | строка | 397 | Идентификатор пополнения |
payment_method_type | строка | кредитная карта, местный платеж | Способ оплаты. |
Примеры кода
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
Цель
Это событие позволяет проанализировать метрику удержания зарегистрированных пользователей.
Правила инициирования
Это событие инициируется при каждом входе пользователя в систему.
Recommended fields
This event can be sent without any additional fields.
Примеры кода
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 своих кампаний во всех рекламных сетях и рекламных агентствах.
- Определить, какие предложения больше всего популярны среди пользователей.
- Настроить перекрестные ссылки между кампаниями и приобретенными товарами, что позволит оптимизировать нацеливание кампании.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу благодарности после успешной покупки.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | float | 2000 | Ожидаемый доход от покупки |
af_currency | строка | THB | Код валюты |
af_content_type | строка | 5G | Название приобретенного пакета. |
af_order_id | строка | 9277 | Идентификатор заказа |
payment_method_type | строка | кредитная карта, местный платеж | Тип способа оплаты |
Примеры кода
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
Цель
Можно записывать события регистрации пользователей и сравнивать результаты с другими данными — это позволяет вам узнать больше о своих пользователях. Запись событий регистрации пользователей позволяет получить следующие данные:
- Сколько пользователей установили приложение, однако не регистрировались в нем.
- Какие способы регистрации предпочитают ваши пользователи.
Правила инициирования
Наилучший способ записать это событие — инициировать его при завершении пользователем процедуры регистрации.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_registration_method | строка | email, 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
Цель
Баланс счета может использоваться для приобретения любого пакета или иного сервиса, предлагаемого в приложении. Вы можете записывать пополнения баланса пользователями и сравнивать их с другими данными, чтобы узнать больше о своих пользователях. Записывая события пополнения баланса, вы можете:
- Узнать, на какие суммы люди пополняют свои счета.
- Используйте суммы пополнения, чтобы настроить таргетинг на пользователей с настраиваемыми кампаниями в пределах их бюджетов пополнения.
Правила инициирования
Для правильной регистрации это событие должно инициироваться при переходе пользователя на страницу завершения пополнения.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_revenue | строка | 2000 | Сумма пополнения. |
top_up_id | строка | 397 | Идентификатор пополнения |
payment_method_type | строка | кредитная карта, местный платеж | Способ оплаты. |
Примеры кода
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
Цель
Вы можете записывать невыполненные пополнения баланса пользователями и сравнивать их с другими данными, чтобы узнать больше о своих пользователях. Например, записывая данные о невыполненных пополнениях, вы можете узнать, как много пользователей пытается пополнить баланс, но терпит неудачу.
Правила инициирования
Наилучший способ записать это событие — инициировать его, когда пользователь пытается пополнить счет, но терпит неудачу.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
error_reason | строка | 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
Цель
Регистрация событий подписки пользователей позволяет:
- Узнать, какие кампании привлекают подписчиков.
- Сравните число пользователей-подписчиков с неподписчиками.
- Записывать доход от подписки и атрибутировать его кампаниям и медиа-источникам.
Правила инициирования
Это событие инициируется в одном из двух сценариев:
- Когда пользователь оформил подписку.
- Когда подписка продлена.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
af_subscription_type | строка | Ежемесячно 30 ГБ | Тип подписки. |
af_revenue | строка | 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
Цель
Вы можете зарегистрировать, когда пользователь решил купить пакет, но еще не оплатил его. Это может помочь вам, например, когда вы записываете события выбора пакетов — вы можете посылать таким пользователям рекламу ретаргетинга и напоминания о завершении подписки.
Правила инициирования
Наилучший способ записать это событие — инициировать его, когда пользователь выбрал пакет, но не завершил оплату.
Recommended fields
Field name | Тип | Пример значения | Описание |
---|---|---|---|
price | строка | 50000 | Цена подписки |
af_content_type | строка | Данные 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);