Los eventos in-app enriquecidos les brindan a los anunciantes la posibilidad de registrar eventos posteriores a la instalación y atribuirlos a la fuente de medios originadora.
Cuando los usuarios efectúan registros, finalizan tutoriales, agregan artículos al carrito de compras o hacen compras, los datos de los eventos in-app pueden registrar los eventos junto con los detalles.
Los eventos in-app enriquecidos son la herramienta ideal para determinar el valor de los usuarios de la aplicación y la calidad del tráfico que se origina desde diferentes fuentes de medios. La implementación de eventos in-app enriquecidos es opcional, pero es recomendable que lo hagas. También recomendamos definir y usar los mismos nombres y estructuras de eventos in-app en todas las plataformas, para una mejor alineación del raw data.
Respetar la privacidad de tus usuarios
- AppsFlyer valora y respeta tu privacidad y la de los usuarios de tu aplicación.
- No recopilamos ni aceptamos información de identificación personal (PII).
- 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
Un evento in-app se compone de un nombre de evento y de los parámetros del evento.
Puedes utilizar cualquier cadena para el nombre del evento. Sin embargo, el SDK de AppsFlyer contiene nombres de eventos recomendados mediante enumeraciones y definiciones (consulta la pestaña Tipos de eventos para ver la lista de nombres de eventos y parámetros recomendados).
Los nombres de eventos distinguen entre mayúsculas y minúsculas. Esto significa que af_purchase y af_PURCHASE son dos eventos diferentes en el raw data. Sin embargo, en los reportes agregados (p. ej. Descripción general, Eventos) pueden mostrarse como un evento único. Por lo tanto, recomendamos usar solo nombres de eventos y parámetros en minúsculas.
La longitud de los valores de eventos está limitada a 1000 caracteres. No excedas este límite. Podemos truncarlo si lo haces.
Sintaxis:
public static void logEvent(Context context, String eventName, Map eventValues)
-
Contexto - Usa
getApplicationContext()
- eventName
- Cualquier cadena para definir el nombre del evento.
- eventValues
- Un mapa de los parámetros del evento que componen un evento enriquecido.
- (void) logEvent:(NSString *)eventName withValues:(NSDictionary*)values
-
eventName - Cualquier cadena para definir el nombre del evento.
- Valores
- Un diccionario de los parámetros del evento que componen un evento enriquecido.
Eventos in-app para aplicaciones híbridas
Las aplicaciones híbridas, que combinan vistas nativas y contenido HTML, también pueden atribuir eventos in-app. Sin embargo, como el SDK solo puede enviar eventos desde el lado nativo, los desarrolladores tienen que enviar todos los datos de los eventos a código nativo. Consulta nuestra guía sobre eventos in-app para aplicaciones híbridas para obtener instrucciones.
Precaución
Cada red tiene sus propias limitaciones con respecto a los caracteres permitidos en los nombres de eventos. Para evitar problemas, usa solo caracteres alfanuméricos en minúscula (a-z y 0-9) para los nombres de tus eventos in-app.
Tipos de Eventos In-App
La siguiente sección describe la estructura recomendada de cada tipo de evento junto con las asignaciones de parámetros a Facebook, Twitter, Criteo, Google Ads y Snapchat.
- Los siguientes parámetros, como parte de los valores de eventos in-app enriquecidos, están disponibles únicamente en los reportes de raw data. El raw data es una característica premium.
- Si incluyes la URL de referencia como un valor de evento, debe estar codificada como URL.
Nota
Consulta la pestaña Verticales de este artículo para obtener fragmentos de código por cada vertical, para Android (Java), iOS (Obj-C y Swift) y Unity.
Estructuras Recomendadas para Eventos In-App
Los siguientes eventos in-app se definen como parte de la interfaz AFInAppEventType y están recomendados:
Nivel Alcanzado
Nombre del evento: af_level_achieved
Descripción: se usa para registrar eventos de nivel de juegos.
Event name constant (Android): AFInAppEventType.LEVEL_ACHIEVED
Event name constant (iOS): AFEventLevelAchieved
Evento asignado a Facebook: fb_mobile_level_achieved
Evento asignado a Twitter: LEVEL_ACHIEVED
Evento asignado a 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 | - |
Agregar Información de Pago
Nombre de evento: af_add_payment_info
Descripción: se usa para registrar el estado de configuración de la información de pago.
Event name constant (Android): AFInAppEventType.ADD_PAYMENT_INFO
Event name constant (iOS): AFEventAddPaymentInfo
Evento asignado a Facebook: fb_mobile_add_payment_info
Evento asignado a Twitter: ADDED_PAYMENT_INFO
Evento asignado a Criteo: Ninguno
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 |
Agregar al Carrito
Nombre de evento: af_add_to_cart
Descripción: se usa para registrar los eventos de agregar artículos específicos al carrito.
Event name constant (Android): AFInAppEventType.ADD_TO_CART
Event name constant (iOS): AFEventAddToCart
Evento asignado a Facebook: fb_mobile_add_to_cart
Evento asignado a Twitter: ADD_TO_CART
Evento asignado a 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 |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Agregar a Lista de Deseos
Nombre de evento: af_add_to_wishlist
Descripción: se usa para registrar los eventos de agregar artículos específicos a lista de deseos.
Event name constant (Android): AFInAppEventType.ADD_TO_WISH_LIST
Event name constant (iOS): AFEventAddToWishlist
Evento asignado a Facebook: fb_mobile_add_to_wishlist
Evento asignado a Twitter: ADD_TO_WISHLIST
Evento asignado a Criteo: Ninguno
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* | - | Precio | price |
af_content_type | fb_content_type | content_type | - | item category | item_category |
af_content_id | fb_content_id | content_id | - | item_id | item_ids |
af_content | fb_content | - | - | - | - |
af_currency | fb_currency | price_currency | - | currency_code | currency |
af_quantity | - | number_items | - | quantity | number_items |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Registro Completado
Nombre de evento:af_complete_registration
Descripción: se usa para registrar los métodos de registro de los usuarios.
Event name constant (Android): AFInAppEventType.COMPLETE_REGISTRATION
Event name constant (iOS): AFEventCompleteRegistration
Evento asignado a Facebook: fb_mobile_complete_registration
Evento asignado a Twitter: SIGN_UP
Evento asignado a Criteo: Ninguno
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 |
Finalización del tutorial
Nombre de evento: af_tutorial_completion
Descripción: se usa para registrar la finalización de tutoriales.
Event name constant (Android): AFInAppEventType.TUTORIAL_COMPLETION
Event name constant (iOS): AFEventTutorial_completion
Evento asignado a Facebook: fb_mobile_tutorial_completion
Evento asignado a Twitter: TUTORIAL_COMPLETE
Evento asignado a Criteo: Ninguno
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 | - | - | - | - |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Proceso de pago iniciado
Nombre de evento: af_initiated_checkout
Descripción: se usa para registrar eventos de checkout (pago).
Event name constant (Android): AFInAppEventType.INITIATED_CHECKOUT
Event name constant (iOS): AFEventInitiatedCheckout
Evento asignado a Facebook: fb_mobile_initiated_checkout
Evento asignado a Twitter: CHECKOUT_INITIATED
Evento asignado a 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 |
- | - | - | - |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Compra
Nombre de evento: af_purchase
Descripción: se usa para registrar eventos de compra (y asociarles ingresos).
Event name constant (Android): AFInAppEventType.PURCHASE
Event name constant (iOS): AFEventPurchase
Evento asignado a Facebook: fb_mobile_purchase
Evento asignado a Twitter: PURCHASE
Evento asignado a Criteo: transactionConfirmation
Google Ads: 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 |
Categoría |
af_content_id |
fb_content_id |
content_id |
id |
item_id |
item_ids |
- |
af_content |
fb_content |
- |
- |
- |
- |
Meta de conversión personalizada |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
Moneda |
af_quantity |
fb_num_items |
number_items |
quantity |
quantity |
number_items |
quantity |
af_validated |
- |
- |
- |
VALIDATED |
success |
Cupón |
af_receipt_id |
- |
- |
transaction_id |
transaction_id |
- |
Referencia de conversión |
af_order_id |
fb_order_id |
- |
- |
order_id |
transaction_id |
Clickref |
af_content_list |
fb_content_id |
- |
- |
item_id |
- |
Meta de elemento personalizado |
af_date_a |
fb_checkin_date |
- | din | start_date | - | - |
af_date_b |
fb_checkout_date |
- | dout | end_date | - | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | - | - |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - | - |
af_destination_a |
fb_origin_airport |
- | - | origin | - | - |
af_destination_b |
fb_destination_ |
- | - | destination | - | - |
af_destination_list |
fb_destination_ids |
- | - | - | - | - |
af_city |
fb_city |
- | - | - | - | - |
af_region |
fb_region |
-- | -- | -- | -- | - |
af_country |
fb_country |
- | - | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - | - |
af_suggested_ hotels |
fb_suggested_ |
- | - | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - | - |
af_price |
fb_purchase_value |
- | price** | price | - | value |
af_purchase_ currency |
fb_purchase_ |
- | - | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - | - |
* af_revenue se cuenta como ingresos en la plataforma AppsFlyer.
**af_price: Puedes usar af_price como un parámetro monetario que no se cuenta como ingresos (por ejemplo, en un evento de "Agregar al carrito"). Este parámetro se refiere al precio unitario de un artículo. El importe total de todas las compras aparece bajo el parámetro af_revenue.
Para ver una lista de los símbolos de divisas compatibles con AppsFlyer, haz clic aquí.
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Suscripción
Nombre de evento: af_subscribe
Descripción: se usa para registrar compras de suscripciones pagadas.
Event name constant (Android): AFInAppEventType.SUBSCRIBE
Event name constant (iOS): AFEventSubscribe
Evento asignado a Facebook: Subscribe
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
Snapchat: SUBSCRIBE
Recommended fields: af_revenue, af_currency
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_revenue |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
Comenzar prueba
Nombre de evento: af_start_trial
Descripción: se usa para registrar el inicio de una prueba gratis de un producto.
Event name constant (Android): AFInAppEventType.START_TRIAL
Event name constant (iOS): AFEventStartTrial
Evento asignado a Facebook: StartTrial
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
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
Nombre de evento: af_rate
Descripción: se usa para registrar eventos de calificación de aplicaciones/artículos.
Event name constant (Android): AFInAppEventType.RATE
Event name constant (iOS): AFEventRate
Evento asignado a Facebook: fb_mobile_rate
Evento asignado a Twitter: RATED
Evento asignado a Criteo: Ninguno
Google Ads: 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 |
- |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Búsqueda
Nombre de evento: af_search
Descripción: se usa para registrar eventos de búsqueda.
Event name constant (Android): AFInAppEventType.SEARCH
Event name constant (iOS): AFEventSearch
Evento asignado a Facebook: fb_mobile_search
Evento asignado a Twitter: SEARCH
Evento asignado a 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_ |
- | - | - | - |
Créditos Gastados
Nombre de evento: af_spent_credits
Descripción: se usa para registrar eventos de gasto de créditos.
Event name constant (Android): AFInAppEventType.SPENT_CREDIT
Event name constant (iOS): AFEventSpentCredits
Evento asignado a Facebook: fb_mobile_spent_credits
Evento asignado a Twitter: SPENT_CREDITS
Evento asignado a 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 |
- |
- |
|
- |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Logro desbloqueado
Nombre de evento: af_achievement_unlocked
Descripción: se usa para registrar eventos de desbloqueo de logros.
Event name constant (Android): AFInAppEventType.ACHIEVEMENT_UNLOCKED
Event name constant (iOS): AFEventAchievementUnlocked
Evento asignado a Facebook: fb_mobile_achievement_unlocked
Evento asignado a Twitter: ACHIEVEMENT_UNLOCKED
Evento asignado a Criteo: achievement
Google Ads: 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 |
Vista de Contenido
Evento: af_content_view
Descripción: se usa para registrar eventos de vista de contenido.
Event name constant (Android): AFInAppEventType.CONTENT_VIEW
Event name constant (iOS): AFEventContentView
Evento asignado a Facebook: fb_mobile_content_view
Evento asignado a Twitter: CONTENT_VIEW
Evento asignado a Criteo: viewProduct
Google Ads: 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_ |
- | - | - | - |
Vista de Lista
Nombre de evento: af_list_view
Descripción: se usa para registrar eventos de vista de listas.
Event name constant (Android): use the string "af_list_view" instead:
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
Event name constant (iOS): AFEventListView
Evento asignado a Facebook:
Evento asignado a Twitter:
Evento asignado a Criteo: viewListing
Google Ads: 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 |
- |
Clic en anuncio
Nombre de evento: af_ad_click
Descripción: se usa para registrar clics en anuncios que se muestran en la aplicación.
Event name constant (Android): AFInAppEventType.AD_CLICK
Event name constant (iOS): AFEventAdClick
Evento asignado a Facebook: AdClick
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
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 |
Visualización de anuncio
Nombre de evento: af_ad_view
Descripción: se usa para registrar visualizaciones de anuncios que se muestran en la aplicación.
Event name constant (Android): AFInAppEventType.AD_VIEW
Event name constant (iOS): AFEventAdView
Evento asignado a Facebook: AdImpression
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
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 |
Reserva de Viaje
Nombre de evento: af_travel_booking
Descripción: se usa para registrar eventos de reserva de viajes (y asociarles ingresos).
Event name constant (Android): AFInAppEventType.TRAVEL_BOOKING
Event name constant (iOS): AFEventTravelBooking
Evento asignado a Facebook: fb_mobile_purchase
Evento asignado a Twitter: PURCHASE
Evento asignado a 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 |
Compartir
Nombre de evento: af_share
Descripción: se usa para registrar eventos en que se comparte contenido.
Event name constant (Android): AFInAppEventType.SHARE
Event name constant (iOS): AFEventShare
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: SHARE
Evento asignado a Criteo: Ninguno
Google Ads: share
Snapchat: SHARE
Recommended fields: af_description
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
Invitación
Nombre de evento: af_invite
Descripción: se usa para registrar eventos de invitaciones (redes sociales).
Event name constant (Android): AFInAppEventType.INVITE
Event name constant (iOS): AFEventInvite
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: INVITE
Evento asignado a Criteo: Ninguno
Google Ads: invite
Snapchat: INVITE
Recommended fields: None
Field mapping:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
Acceso
Nombre de evento: af_login
Descripción: se usa para registrar eventos de acceso por parte de usuarios.
Event name constant (Android): AFInAppEventType.LOGIN
Event name constant (iOS): AFEventLogin
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: LOGIN
Evento asignado a Criteo: Ninguno
Google Ads: login
Recommended fields: None
Re-Engagement
Nombre de Evento: af_re_engage
Descripción: se usa para registrar eventos de recaptación de usuarios.
Event name constant (Android): AFInAppEventType.RE_ENGAGE
Event name constant (iOS): AFEventReEngage
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: RE_ENGAGE
Evento asignado a Criteo: Ninguno
Google Ads: custom_event
Recommended fields: None
Field mapping:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_description |
- |
description |
- |
description |
Inicio desde Notificación Push
Nombre de evento: af_opened_from_push_notification
Descripción: se usa para registrar eventos de inicio de aplicación desde notificaciones push.
Event name constant (Android): AFInAppEventType.OPENED_FROM_PUSH_NOTIFICATION
Event name constant (iOS): AFEventOpenedFromPushNotification
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: notification_open
Recommended fields: None
Actualización
Nombre de evento: af_update
Descripción: se usa para registrar eventos de actualización.
Event name constant (Android): AFInAppEventType.UPDATE
Event name constant (iOS): AFEventUpdate
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: UPDATE
Evento asignado a Criteo: Ninguno
Google Ads: app_update
Recommended fields: af_content_id
Field mapping:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_content_id |
- |
content_id |
- |
item_id |
*Para reportar un evento que contiene múltiples elementos, haz clic aquí.
Además de los eventos descritos anteriormente, que pueden asignarse a eventos predefinidos de varias redes, Facebook ofrece eventos adicionales que se envían sin atributos.
Parámetros Opcionales
Además de los parámetros recomendados que se pueden pasar con cada evento, los siguientes parámetros se definen como parte de la interfaz AFInAppEventParameterName
y se pueden enviar como parte del valor de diccionario de eventos:
Parameter string Constant | Nombre de cadena del parámetro | Tipo de valor recomendado |
---|---|---|
REVENUE (detalles) |
af_revenue |
Float |
`PRICE (detalles) |
af_price |
Float |
LEVEL |
af_level |
Int |
SUCCESS |
af_success |
Boolean |
CONTENT_TYPE |
af_content_type |
String |
CONTENT_LIST |
af_content_list |
Matriz de cadenas |
CONTENT_ID |
af_content_id |
String |
CURRENCY |
af_currency |
String |
REGISTRATION_METHOD |
af_registration_method |
String |
QUANTITY |
af_quantity |
Int |
PAYMENT_INFO_AVAILABLE |
af_payment_info_available |
Boolean |
RATING_VALUE |
af_rating_value |
Float |
MAX_RATING_VALUE |
af_max_rating_value |
Float |
SEARCH_STRING |
af_search_string |
String |
DESCRIPTION |
af_description |
String |
SCORE |
af_score |
Int |
DESTINATION_A |
af_destination_a |
String |
DESTINATION_B |
af_destination_b |
String |
CLASS |
af_class |
String |
DATE_A |
af_date_a |
String |
DATE_B |
af_date_b |
String |
EVENT_START |
af_event_start |
Unixtime (00:00:00) |
EVENT_END |
af_event_end |
Unixtime (00:00:00) |
LATITUDE |
af_lat |
Int |
LONGITUDE |
af_long |
Int |
CUSTOMER_USER_ID |
af_customer_user_id |
String |
CUSTOMER_SEGMENT |
af_customer_segment |
String |
VALIDATED |
af_validated |
String |
RECEIPT_ID |
af_receipt_id |
String |
ORDER_ID |
af_order_id |
String |
TUTORIAL_ID |
af_tutorial_id |
String |
ACHIEVEMENT_ID |
af_achievement_id |
String |
VIRTUAL_CURRENCY_NAME |
af_virtual_currency_name |
String |
DEEP_LINK |
af_deep_link |
String |
OLD_VERSION |
af_old_version |
String |
NEW_VERSION |
af_new_version |
String |
REVIEW_TEXT |
af_review_text |
String |
COUPON_CODE |
af_coupon_code |
String |
DEPARTING_DEPARTURE_DATE |
af_departing_departure_date |
String |
RETURNING_DEPARTURE_DATE |
af_returning_departure_date |
String |
DESTINATION_LIST |
af_destination_list |
String[] |
CITY |
af_city |
String |
REGION |
af_region |
String |
COUNTRY |
af_county |
String |
DEPARTING_ARRIVAL_DATE |
af_departing_arrival_date |
String |
RETURNING_ARRIVAL_DATE |
af_returning_arrival_date |
String |
SUGGESTED_DESTINATIONS |
af_suggested_destinations |
String[] |
TRAVEL_START |
af_travel_start |
String |
TRAVEL_END |
af_travel_end |
String |
NUM_ADULTS |
af_num_adults |
Int |
NUM_CHILDREN |
af_num_children |
Int |
NUM_INFANTS |
af_num_infants |
Int |
SUGGESTED_HOTELS |
af_suggested_hotels |
String[] |
USER_SCORE |
af_user_score |
Float |
HOTEL_SCORE |
af_hotel_score |
Float |
PURCHASE_CURRENCY |
af_purchase_currency |
String |
PREFERRED_STAR_RATINGS |
af_preferred_star_ratings |
Int[2] |
PREFERRED_PRICE_RANGE |
af_preferred_price_range |
Int[2] |
PREFERRED_NEIGHBORHOODS |
af_preferred_neighborhoods |
String[] |
PREFERRED_NUM_STOPS |
af_preferred_num_stops |
Int |
CONTENT |
af_content |
String |
PARAM_1 |
af_param_1 |
String |
PARAM_2 |
af_param_2 |
String |
PARAM_3 |
af_param_3 |
String |
PARAM_4 |
af_param_4 |
String |
PARAM_5 |
af_param_5 |
String |
PARAM_6 |
af_param_6 |
String |
PARAM_7 |
af_param_7 |
String |
PARAM_8 |
af_param_8 |
String |
PARAM_9 |
af_param_9 |
String |
PARAM_10 |
af_param_10 |
String |
Visualización de los datos de eventos in-app enriquecidos
- El nombre de tu evento in-app, así como los ingresos, aparecen en la página de información general del panel de controly en la página de eventos.
- Los valores de parámetros adicionales aparecen en el reporte de eventos in-app de raw data. El raw data es una característica premium.
Parámetro de ingresos
Puede enviar valores de ingresos con cualquier nombre de parámetro y evento. Sin embargo, para registrar los ingresos en los datos agregados y raw data de AppsFlyer, debe utilizar el parámetro af_revenue. Utilícelo siempre con los eventos in-app que representan una generación real de ingresos en su lógica de negocios.
Para más información acerca del parámetro af_revenue, consulte la guía de atribución de ingresos.
Información de identificación personal
La información de identificación personal (PII) es información que se puede utilizar para identificar o rastrear la identidad de un individuo (nombre, número nacional de identidad, número de seguridad social) solo, o cuando se combina con otra información de identificación que está vinculada a la fecha y lugar de nacimiento del individuo.
AppsFlyer respeta las normas de privacidad del usuario y no recopila PII del usuario.
No envíes PII en valores de eventos.
Nota
AppsFlyer recopila la dirección IP de los dispositivos durante los engagements. En algunas jurisdicciones o situaciones de uso, la dirección IP puede considerarse como PII. Usamos la dirección IP para derivar la ubicación geográfica general (ciudad, nivel de distrito) del dispositivo, pero no la dirección específica. Si es necesario, puedes seleccionar enmascarar las direcciones IP para que no aparezcan en los reportes de raw data.
Múltiples Artículos
Puedes agregar múltiples artículos a una sola transacción. En lugar de utilizar valores únicos por parámetro de evento, puedes usar múltiples artículos para describir la transacción, separados por comas.
Ejemplo
En una misma transacción, el Sr. A. Flyer compra dos camisas idénticas, un par de zapatos y un sombrero en una tienda en línea de los EE. UU. La secuencia en la que se enumera cada artículo debe ser idéntica para cada parámetro.
af_content_id: ["123","988","399"]
af_quantity: [2,1,1]
af_price: [25,50,10]
af_revenue: [110]
af_currency: USD
Para múltiples artículos, el código aparece de la siguiente manera:
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);
Se envían múltiples elementos como una matriz en postbacks. Actualmente, Facebook y Twitter no pueden analizar correctamente los parámetros de matrices. Para ayudar a que AppsFlyer sume la cantidad de elementos (af_quantity) en lugar de enviársela como una matriz (p. ej., en el ejemplo anterior, Facebook obtendría af_quantity=4).
Nota
Se pueden usar múltiples artículos con los siguientes eventos in-app:
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
Eventos In-app Complejos
Los eventos in-app complejos permiten enviar múltiples eventos en una misma llamada a la 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"
}
]
}
Precaución
Los eventos in-app complejos generan problemas de postback con Facebook y Criteo. Si necesitas que el evento se asigne completamente con Facebook y Criteo, debes enviar eventos separados por cada acción de usuario, p. ej. enviar un evento de Agregar al carrito por cada artículo agregado. Puedes agrupar estos eventos utilizando los raw data de los eventos in-app.
Registro de eventos sin conexión
- El SDK envía los eventos a los servidores de AppsFlyer y espera una respuesta.
- Si el SDK no recibe una respuesta 200, el evento se almacena en el caché.
- Una vez recibida la respuesta 200, el evento almacenado se vuelve a enviar al servidor.
- Si hay múltiples eventos en el caché, se envían al servidor uno tras otro.
Nota
El caché del SDK puede almacenar hasta 40 eventos, lo que significa que solo se guardarán los primeros 40 eventos que se den sin conexión. Todo lo que suceda después se descartará, hasta la próxima respuesta 200.
La hora del evento que aparece en el raw data es la hora en que se envía el evento a AppsFlyer después de que el dispositivo vuelve a tener conexión. No es la hora en que ocurrió el evento.
Desduplicación de eventos
AppsFlyer cuenta con un mecanismo de desduplicación de eventos in-app. El mismo controla todos los eventos in-app para verificar si en los 10 segundos previos se ha registrado algún otro evento in-app idéntico proveniente del mismo appsflyer_id. De ser así, el mecanismo directamente elimina el duplicado.
Dos eventos se consideran idénticos si los campos que se detallan a continuación coinciden en ambos:
- Nombre del evento
- Valor del evento
- ID de aplicación
- ID de AppsFlyer
Nota
La desduplicación solo funciona para los eventos in-app enviados desde el SDK.
Los eventos in-app S2S no se desduplican.
En esta sección, enumeramos conjuntos integrales de eventos in-app para varios segmentos verticales. Cada segmento vertical en esta sección contiene eventos in-app cuidadosamente seleccionados que recomendamos registrar.
Para comenzar a registrar eventos in-app:
- Selecciona tu segmento vertical.
- Selecciona los eventos in-app que deseas registrar. Te recomendamos registrar todos los eventos que figuran en tu segmento vertical.
- Copia los fragmentos de código para cada evento in-app e impleméntalos en tu aplicación según corresponda.
Si deseas averiguar cuáles son los eventos in-app más populares asignados por tamaño de aplicación y por vertical, haz clic aquí.
Gaming
Las aplicaciones de gaming incluyen juegos de tipo arcade, estrategia, educativos y hasta juegos de azar. Los eventos que recomendamos registrar en las aplicaciones de gaming son las compras in-app, las instancias en que los usuarios comparten en redes sociales y las invitaciones a amigos. Algunos eventos adicionales pueden ser subir de nivel en un juego y finalizar el tutorial de un juego. A continuación, verás algunos ejemplos de cómo podrás beneficiarte con el registro de estos eventos:
- El registro de las compras in-app puede ayudarte a determinar cuáles son las ofertas que más compran los usuarios.
- El registro de instancias en que los usuarios suben de nivel te ayuda a determinar cuán involucrados están tus usuarios.
- el registro de los eventos en que los usuarios comparten contenido y envían invitaciones te ayuda a determinar cuántos usuarios comparten contenido e invitan a otros jugadores, y en cuáles plataformas de redes sociales lo hacen.
Consejo
Los eventos que aquí se detallan también son relevantes para aplicaciones de juegos compatibles con las siguientes plataformas:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
- Xbox
Acceso
Nombre de evento: af_login
Finalidad
Este evento puede ayudarte a registrar la retención de tus usuarios registrados.
Lógica de activación
Activa este evento cada vez que el usuario inicia sesión.
Recommended fields
This event can be sent without any additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
Podrás registrar el registro de usuarios y compararlo con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de registro de usuarios, podrás hacer lo siguiente:
- Saber cuántos usuarios instalaron la aplicación, pero nunca se registraron.
- Saber cuáles métodos de registro prefieren tus usuarios.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | correo electrónico, facebook | El tipo de método de registro |
Ejemplos de código
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);
Compra
Nombre de evento: af_purchase
Finalidad
Muchas aplicaciones de gaming (juegos) permiten que los usuarios compren artículos, p. ej., monedas, gemas, armas, etc. El evento Comprar te ayuda a registrar las compras in-app hechas por los usuarios. Al registrar las compras, podrás hacer lo siguiente:
- Determinar el valor de vida útil (LTV) de tus usuarios y el ROI de tus campañas en todas las agencias y redes de publicidad.
- Determinar cuáles ofertas son las más populares entre tus usuarios.
- Establecer referencias cruzadas entre las campañas y los artículos comprados a fin de optimizar el targeting de las campañas.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario llega a la página de agradecimiento tras una compra exitosa.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 2000 | Los ingresos estimados de la compra |
af_currency | Cadena | THB / USD | El código de moneda |
af_quantity | int | 2 | La cantidad de artículos comprados |
af_content_id | Cadena | 001, 092 | El ID del artículo |
af_order_id | Cadena | 9277 | El ID del pedido |
af_receipt_id | Cadena | 9277 | El ID del recibo |
Ejemplos de código
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);
Nivel Alcanzado
Nombre del evento: af_level_achieved
Finalidad
Una de las principales metas de los usuarios es subir de nivel en los juegos. Con frecuencia, cuando se sube de nivel, se obtiene acceso a características y fases nuevas del juego, y esto alienta a los usuarios a seguir jugando. El evento Nivel alcanzado te ayuda a registrar el nivel de engagement de los usuarios con tu aplicación. Al registrar los niveles alcanzados por los usuarios, podrás:
- Determinar cuáles campañas generan mayor actividad por parte de los usuarios.
- Ver qué tipos de usuarios son los más activos e involucrados.
- Asociar la actividad general de los usuarios con dimensiones como ingresos, etc.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario llega a la página de finalización de nivel.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_level | int | 3 | El nivel alcanzado por el usuario |
af_score | int | 500 | La puntuación asociada con el logro del usuario |
Ejemplos de código
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);
Finalización de Tutorial
Nombre de evento: af_tutorial_completion
Finalidad
Los tutoriales ayudan a los usuarios a saber cómo usar mejor tu aplicación. Al registrar la finalización del tutorial, podrás:
- Saber con qué temas los usuarios podrían tener problemas.
- Saber cuáles tutoriales no dan buenos resultados y mejorarlos.
Lógica de activación
Existen dos situaciones en las que debe activarse este evento:
- 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 | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_success | Booleano | Verdadero | Si el usuario finalizó el tutorial o no |
af_tutorial_id | Cadena | 3 | El ID del tutorial |
af_content | Cadena | Comenzar | El nombre del tutorial |
Ejemplos de código
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);
Compartir
Nombre de evento: af_share
Finalidad
A los usuarios les gusta compartir sus logros en juegos en los sitios de redes sociales. Compartir este contenido genera conocimiento de marca y puede impulsar a que más usuarios descarguen e instalen tu aplicación. Al registrar el evento Compartir contenido , podrás saber cuándo es más probable que los usuarios compartan la aplicación con sus amigos.
Consejo
El SDK de AppsFlyer tiene métodos exclusivos para registrar contenido compartido e invitaciones.
Lógica de activación
Para registrar correctamente este evento, debes activarlo cuando un usuario publica satisfactoriamente un contenido compartido en las redes sociales:
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_description | Cadena | Nueva puntuación alta/Suba de nivel/Juego ganado | La razón para compartir en redes sociales. Podría ser una nueva puntuación alta, subir de nivel, etc. |
platform | Cadena | Facebook, Whatsapp, correo electrónico | La plataforma en la cual el usuario comparte contenido |
Ejemplos de código
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);
Invitación
Nombre de evento: af_invite
Finalidad
Los usuarios a menudo invitan a sus amigos a descargar e instalar una aplicación. Muchas veces, los usuarios desean compartir la aplicación y otras veces, se les recompensa por invitar a otros. Podrás registrar las invitaciones a través del evento Invitaciones. Al registrar este evento, podrás:
- Saber en cuáles sitios de redes sociales los usuarios por lo general envían invitaciones a sus amigos.
- Saber cuántos usuarios invitaron a sus amigos a descargar e instalar la aplicación.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario invita con éxito a un amigo a descargar e instalar la aplicación.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_description | Cadena | Prueba esta aplicación | El contexto de la invitación |
Ejemplos de código
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);
Reclamar una bonificación.
Nombre de evento: bonus_claimed
Finalidad
Al registrar el evento Bonificación aceptada, podrás hacer lo siguiente:
- Ver cuántos usuarios aceptaron las bonificaciones que se les ofrecieron.
- Asociar las bonificaciones aceptadas con la actividad y el nivel de engagement de los usuarios.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario acepte una bonificación y esta se actualice en su cuenta.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
bonus_type | Cadena | Monedas | El tipo de bonificación que acepta el usuario |
Ejemplos de código
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);
Comercio Electrónico
Las aplicaciones de comercio electrónico permiten que los compradores busquen y compren productos en línea con facilidad. Una de las principales características de las aplicaciones de comercio electrónico es que les permiten a los compradores comparar precios a fin de obtener las mejores ofertas. Te recomendamos que implementes el registro de eventos en tu aplicación de comercio electrónico. el registro de eventos puede ayudarte a obtener información valiosa sobre lo que buscan y compran las personas.
Los eventos que te recomendamos registrar son: buscar, comprar, agregar al carrito y agregar a la lista de deseos. Al registrar estos eventos, podrás hacer lo siguiente:
- Destacar las categorías más populares.
- Ver lo que buscan los compradores.
- Registrar cuántos compradores finalizaron el proceso de checkout (pago).
- Saber cuántos de los compradores son recurrentes y cuántos son compradores de una sola vez.
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
La finalidad del evento Registro completado es permitirte registrar cuántos usuarios se registraron después de descargar e instalar la aplicación. Podrás registrar el método de registro, por ej., Facebook, correo electrónico, etc.
Lógica de activación
Activa este evento después de que un usuario se haya registrado correctamente.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | Facebook, Google, correo electrónico | El método que elige el usuario para registrarse |
Ejemplos de código
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);
Acceso
Nombre de evento: af_login
Finalidad
El evento Acceso te permite registrar cuántos usuarios inician sesión en su cuenta. Con este evento de acceso, podrás registrar lo siguiente:
- Cuántos usuarios están activos.
- Cuándo los usuarios están más activos.
Lógica de activación
Activa este evento cuando el usuario inicie sesión correctamente.
Recommended fields
This event can be sent with no additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent("af_login", null);
Búsqueda
Nombre de evento: af_search
Finalidad
Al registrar eventos de Búsqueda, podrás saber lo que buscan los usuarios. También podrás averiguar cuáles son los resultados de búsqueda más interesantes para los usuarios. Además, podrás registrar qué resultados de búsqueda conducen a compras.
Lógica de activación
Debes activar este evento en una de dos situaciones:
- Cuando el usuario hace clic en el botón de búsqueda.
- Cuando el usuario llega a la página de resultados de búsqueda.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_search_string | Cadena | Vestido rojo, zapatillas para correr | El término de búsqueda |
af_content_list | Matriz de cadenas | 001, 092 | La lista de ID de contenido |
Ejemplos de código
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);
Vista de Contenido
Nombre de evento: af_content_view
Finalidad
El evento Vista de contenido puede ayudarte a registrar la tasa de visualizaciones de productos específicos. Al registrar este evento, podrás hacer lo siguiente:
- Correlacionar visualizaciones de productos con ventas de productos.
- Determinar cuáles categorías son las más populares según las visualizaciones de productos.
- Ver la correlación entre la moneda de los compradores y los productos que visualizan.
Lógica de activación
Debes activar este evento cuando el usuario visualice la página de detalles de un producto específico.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 2000 | El precio del producto |
af_content_id | Cadena | 102 | ID del producto |
af_content_type | Cadena | Calzado | Categoría de producto |
af_currency | Cadena | THB, USD | La moneda que figura en la página de detalles del producto |
Ejemplos de código
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);
Vista de Lista
Nombre de evento: af_list_view
Finalidad
Con frecuencia, las plataformas de comercio electrónico incluyen listas que muestran los productos por categoría, como productos recientemente agregados, productos relacionados, productos recomendados, etc. El evento Vista de lista puede ayudarte a registrar cuáles son las listas que más visualizan los compradores.
Lógica de activación
Activa este evento cuando el comprador visualice una lista específica.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_content_type | Cadena | Productos relacionados, recomendados, novedades | El tipo de lista |
af_content_list | Matriz de cadenas | 001, 092 | Lista de ID de contenido de la categoría |
Ejemplos de código
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);
Agregar a la lista de deseos
Nombre de evento: af_add_to_wishlist
Finalidad
Al registrar el evento Agregar a la lista de deseos, podrás registrar cuáles son los productos y las categorías que los compradores agregan a sus listas de deseos. Cuando sepas cuáles productos se agregan con frecuencia a las listas de deseos, podrás ofrecerlos en ofertas especiales o con descuentos y así alentar a los compradores a comprarlos. También podrás usar la función de retargeting con estos usuarios según los productos que agregan a su lista de deseos.
Lógica de activación
Activa este evento cuando los compradores agreguen artículos a la lista de deseos.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 600 | El precio del producto |
af_content_id | Cadena | 300 | ID del producto |
af_content_type | Cadena | Calzado, productos electrónicos | Categoría de producto |
af_currency | Cadena | GBP | La moneda que figura en la página de detalles del producto |
Ejemplos de código
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);
Agregar al Carrito
Nombre de evento: af_add_to_cart
Finalidad
La finalidad del evento Agregar al carrito es registrar las instancias en que se agregan productos al carrito. Al registrar este evento, podrás:
- Ver cuántos productos en promedio agregan los compradores en una sola compra.
- Ver cuánto tiempo transcurre desde que se agrega un producto hasta que se agrega otro.
- Ver cuántos compradores abandonan el carrito.
Lógica de activación
Activa este evento cuando el comprador agregue un producto al carrito.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 350, 1000 | Precio del producto |
af_content_id | Cadena | 001, 092 | ID del producto |
af_content_type | Cadena | Camisa, calzado | Tipo de producto |
af_currency | Cadena | THB, USD | Moneda del producto |
af_quantity | float | 2, 5 | Cuántos artículos del mismo producto se agregaron al carrito |
Ejemplos de código
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);
Proceso de pago iniciado
Nombre de evento: af_initiated_checkout
Finalidad
Rastrear el evento Checkout iniciado puede ayudarte a entender cómo se comportan los compradores cuando inician el checkout. Por ejemplo, podrás hacer lo siguiente:
- Ver el precio promedio cuando los compradores realizan el checkout y compararlo con el precio promedio del evento de compra.
- Ver si los usuarios agregan o eliminan productos una vez iniciado el checkout.
Lógica de activación
Activa este evento cuando el comprador inicie el checkout, pero no lo haya finalizado aún.
Recommended fields
Consejo
Si hay varios productos de distintas categorías, usa matrices para enviar los datos.
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 4000 | Precio total del carrito |
af_content_id | Cadena o matriz de cadenas | 221, 124 | ID de los productos en el carrito |
af_content_type | Cadena o matriz de cadenas | Camisa, pantalones | Lista de categorías de productos |
af_currency | Cadena | THB | Moneda al momento del checkout |
af_quantity | Entero o matriz de enteros | 2, 5 | Total de artículos en el carrito |
Ejemplos de código
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);
Compra
Nombre de evento: af_purchase
Finalidad
El evento Compra es uno de los más importantes para el comercio electrónico. el registro del evento Compra puede brindarte mucha información sobre las tendencias de compra en tu aplicación de comercio electrónico. Al registrar el evento Compra, podrás:
- Ver cuántos usuarios en total efectivamente son compradores.
- Registrar a los compradores más activos y ofrecerles ofertas mediante retargeting según su historial de compras.
- Saber cuáles productos y categorías rinden bien en términos de compras totales.
- Registrar los ingresos generados a partir de las compras de diferentes productos y categorías.
- Registrar los ingresos generados en distintas campañas y fuentes de medios.
Lógica de activación
Activa este evento cuando un comprador finalice una compra, pero no la haya pagado aún necesariamente.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 1200 | Ingresos de la compra |
af_price | float | 4000 | Importe total de la compra |
af_content_id | Cadena | 121, 262 | ID del artículo |
af_content_type | Cadena | Calzado, pantalones | Categoría del artículo |
af_currency | Cadena | AUD | Moneda |
af_quantity | int | 2, 5 | Cantidad de artículos en el carrito |
af_order_id | Cadena | X123ABC | El ID del pedido que se genera después de la compra |
af_receipt_id | Cadena | X123ABC | ID del pedido, pero necesario para la integración de Retargeting con CRITEO y Google AdWords |
Ejemplos de código
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);
Compra finalizada
Nombre de evento: completed_purchase
Finalidad
el registro del evento Compra finalizada puede ayudarte a analizar cómo se pagan efectivamente las compras en su totalidad.
Lógica de activación
Cuando un usuario paga una compra, el evento puede enviarse mediante la modalidad S2S (servidor a servidor), ya que este evento ocurre en el backend.
¡Importante!
Este evento debe enviarse si el pago se realiza sin conexión, p. ej. mediante una transferencia bancaria o en efectivo con la entrega. Si envías este evento, asegúrate de que el evento Compra ( af_purchase
) no contenga el parámetro af_revenue
. Si envías ambos eventos con el parámetro af_revenue
, se duplicarán los ingresos.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 4000 | Ingresos generados a partir de la compra |
af_order_id | Cadena | X123ABC | ID del pedido generado a partir de la compra |
af_receipt_id | Cadena | X123ABC | ID del recibo generado para el comprador |
Ejemplos de código
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);
Eliminar del carrito
Nombre de evento: remove_from_cart
Finalidad
Al registrar el evento Eliminar del carrito, podrás hacer lo siguiente:
- Ver cuáles son los artículos que los compradores eliminan del carrito.
- Ver cuáles son las categorías de productos de los artículos que los compradores eliminan del carrito.
- Comparar los datos del evento Agregar al carrito para saber cuáles productos no llegan al checkout (proceso de pago).
Lógica de activación
Activa este evento cuando un comprador elimine un artículo del carrito.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_content_id | Cadena | 521 | ID del artículo o producto |
af_content_type | Cadena | Calzado | Categoría del artículo o producto |
Ejemplos de código
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);
Primera compra
Nombre de evento: first_purchase
Finalidad
Es casi igual al evento Compra. Sin embargo, a diferencia del evento Compra, el evento Primera compra puede usarse para hacer lo siguiente:
- Ver cuánto tiempo tarda un comprador nuevo en hacer una compra.
- Ver cuáles son los productos que prefieren los compradores por primera vez.
- Ver el precio promedio y los ingresos de las compras por primera vez.
Lógica de activación
Activa este evento cuando el usuario finalice su primera compra.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 1200 | Ingresos de la compra |
af_price | float | 4000 | Importe total de la compra |
af_content_id | Cadena | 121, 262 | ID del artículo |
af_content_type | Cadena | Calzado, pantalones | Categoría del artículo |
af_currency | Cadena | AUD | Moneda |
af_quantity | int | 2, 5 | Cantidad de artículos en el carrito |
af_order_id | Cadena | X123ABC | El ID del pedido que se genera después de la compra |
af_receipt_id | Cadena | X123ABC | ID del pedido, pero necesario para la integración de Retargeting con CRITEO y Google AdWords |
Ejemplos de código
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
Los usuarios cada vez quieren ver más contenido a demanda, por lo que el mercado de las aplicaciones de reproducción en línea se ha vuelto muy competitivo. Si administras y ejecutas una aplicación de reproducción en línea de contenido a demanda, te recomendamos que registres eventos en la aplicación.
Consejo
Los eventos que aquí se detallan también son relevantes para aplicaciones de streaming compatibles con televisores inteligentes tales como:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
Al registrar eventos en tu aplicación de reproducción en línea (streaming), podrás hacer lo siguiente:
- Ver qué tipo de contenido consumen los usuarios.
- Analizar y optimizar las campañas según la demanda de contenido.
- Medir el nivel de engagement y el uso por parte de los usuarios.
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
La finalidad del evento Registro completado es permitirte registrar cuántos usuarios se registraron después de descargar e instalar la aplicación. Podrás registrar el método de registro, por ej., Facebook, correo electrónico, etc. para saber cuál es el método de registro que prefieren los usuarios.
Lógica de activación
Activa este evento después de que un usuario se haya registrado correctamente.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | Facebook, Google, correo electrónico | El método que elige el usuario para registrarse |
Ejemplos de código
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);
Acceso
Nombre de evento: af_login
Finalidad
El evento Acceso te permite registrar cuántos usuarios inician sesión en su cuenta. Con este evento de acceso, podrás registrar lo siguiente:
- Cuántos usuarios están activos.
- Cuándo los usuarios están más activos.
Lógica de activación
Activa este evento cuando el usuario inicie sesión correctamente.
Recommended fields
This event can be sent with no additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent("af_login", null);
Comenzar prueba
Nombre de evento: af_start_trial
Finalidad
Muchos servicios de reproducción en línea les ofrecen a los usuarios un período de prueba para explorar las características premium. Al registrar el evento Comenzar prueba, podrás:
- Ver cuántos usuarios optaron por un período de prueba.
- Si la prueba forma parte de una promoción o de una colaboración con un partner, puedes registrar cuál fue la promoción que indujo al usuario a activar el período de prueba.
Lógica de activación
Activa este evento cuando el usuario opte por activar el período de prueba.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
trial_method | Cadena | Gratis con un teléfono nuevo, gratis con el proveedor, promoción, código de cupón | El método para activar la prueba |
trial_method_identifier | Cadena |
Nombre del proveedor, p. ej. Vodafone Nombre del partner, p. ej. Facebook Código de cupón, p. ej. TRA123 |
El identificador del método de prueba |
Ejemplos de código
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);
Suscripción
Nombre de evento: af_subscribe
Finalidad
La suscripción es uno de los aspectos fundamentales de los servicios de reproducción en línea (streaming). Al registrar los eventos de suscripción por parte de los usuarios, podrás hacer lo siguiente:
- Ver cuáles campañas atraen a usuarios que se suscriben.
- Comparar la cantidad de usuarios en período de prueba con los usuarios suscritos.
- Registrar los ingresos generados a partir de las suscripciones y atribuirlos a campañas y fuentes de medios.
Lógica de activación
Activa este evento en una de dos situaciones:
- Cuando el usuario se suscribe correctamente.
- Cuando se renueva una suscripción.
Consejo
Consulta nuestra Guía de registro de suscripciones para obtener más información.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
new_subscription | Booleano | Verdadero/Falso | Si la suscripción es nueva o se renueva |
af_coupon_code | Cadena | Suscripción por 3 meses | El código de cupón si se usa uno durante la suscripción |
coupon_code_value | Cadena | 10% | Cuánto deduce el cupón del precio inicial |
af_revenue | float | 5 | Los ingresos asociados con la suscripción |
af_currency | Cadena | USD | La moneda en que se paga la suscripción |
subscription_method | Cadena | Tarjeta de crédito, billetera electrónica, PayPal | El método de pago usado para la suscripción |
expiration_date | Cadena | 2018/07/18 | La fecha de vencimiento de la suscripción |
Ejemplos de código
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);
Reproducción de medios
Nombre de evento: media_play
Finalidad
el registro del evento Reproducción de medios significa registrar los eventos en que los usuarios reproducen los medios que ofreces. Tales medios pueden ser videos, música, programas de TV, programas de radio y mucho más. Si ofreces más de un tipo de medios, podrás registrar la relación de reproducción entre los distintos medios y los tipos de contenido. Por ejemplo, podrás ver si los usuarios reproducen más música que videos. También podrás ver si los usuarios miran más programas de TV que películas. Además, al registrar el evento de reproducción de medios, podrás:
- Registrar el consumo de medios por tipo y contenido.
- Ver los idiomas del contenido reproducido en línea más popular.
- Ver la duración mínima, máxima y promedio del contenido reproducido en línea.
Lógica de activación
Activa este evento tras una cantidad predefinida (p. ej. 2 minutos) de contenido reproducido en línea.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_content_type | Cadena | Programa de TV, música | El tipo de contenido que se reproduce en línea |
af_content_id | Cadena | 092, E34 | El ID del contenido que se reproduce en línea |
af_content | Cadena | Título del contenido | El título del contenido, p. ej., el nombre de una canción o el título y el episodio de un programa de TV |
media_duration | float | 5 | El tiempo de ejecución |
language | Cadena | en-us, fr, es | El idioma del contenido |
Ejemplos de código
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);
Minutos de medios
Nombre del evento: media_minutes
Finalidad
Los minutos de medios indican la cantidad de un elemento de contenido determinado que consume el usuario. Después de los ingresos, es la métrica más importante en el sector de reproducción en línea (streaming). Esta métrica es importante porque te permite calcular el uso del servicio por parte de los usuarios. Además, te permite saber cuál es la tasa de uso general del servicio y cuál es el contenido más popular. Al registrar el evento Minutos de medios (usando el parámetro minutes_consumed), podrás:
- Ver cuáles usuarios usan mucho tu servicio y cuáles no.
- Saber qué tipos de medios y qué tipos de contenido son populares.
Lógica de activación
Activa este evento en una de dos situaciones:
- Cuando el usuario termine de reproducir en línea un elemento de medios.
- Cuando el usuario deje de reproducir en línea un elemento de medios.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
minutes_consumed | float | 3 | El tiempo de ejecución real de los medios por parte del usuario |
af_content_type | Cadena | Programa de TV, música | El tipo de contenido que se reproduce en línea |
af_content_id | Cadena | 092, E34 | El ID del contenido que se reproduce en línea |
af_content | Cadena | Título del contenido | El título del contenido, p. ej., el nombre de una canción o el título y el episodio de un programa de TV |
media_duration | float | 5 | El tiempo de ejecución |
language | Cadena | en-us, fr, es | El idioma del contenido |
Ejemplos de código
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);
Medios descargados
Nombre de evento: media_downloaded
Finalidad
el registro de los medios descargados puede ayudarte a destacar la preferencia de los usuarios. Puedes registrar la reproducción de medios y la descarga de medios, y comparar ambos eventos. Puedes ver cuáles medios los usuarios prefieren reproducir y cuáles prefieren descargar.
Lógica de activación
Activa este evento cuando un usuario comience a descargar medios.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_content_type | Cadena | Programa de TV, música | El tipo de contenido |
af_content_id | Cadena | 092, E34 | El ID del contenido |
af_content | Cadena | Título del contenido | El título del contenido, p. ej., el nombre de una canción o el título y el episodio de un programa de TV |
media_duration | float | 5 | El tiempo de ejecución |
language | Cadena | en-us, fr, es | El idioma del contenido |
Ejemplos de 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);
Medios guardados
Nombre de evento: media_saved
Finalidad
Registrar los medios guardados puede ayudarte a destacar la preferencia de los usuarios.
Lógica de activación
Activa este evento cada vez que el usuario guarde medios en su dispositivo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_content_type | Cadena | Programa de TV, música | El tipo de contenido |
af_content_id | Cadena | 092, E34 | El ID del contenido |
af_content | Cadena | Título del contenido | El título del contenido, p. ej., el nombre de una canción o el título y el episodio de un programa de TV |
media_duration | float | 5 | El tiempo de ejecución |
language | Cadena | en-us, fr, es | El idioma del contenido |
Ejemplos de código
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
Las aplicaciones de finanzas y banca ofrecen a los usuarios la posibilidad de llevar a cabo una amplia gama de objetivos relacionados con las finanzas, entre ellos, la suscripción de tarjetas de crédito nuevas o la solicitud de préstamos. Los eventos in-app que recomendamos registrar en las aplicaciones financieras/bancarias incluyen aperturas de cuentas, solicitudes de tarjetas de crédito y solicitudes de préstamos. A continuación, verás algunos ejemplos de cómo podrás beneficiarte con el registro de estos eventos:
- El registro de las solicitudes de cuentas in-app te ayuda a entender qué cuenta quieren más los usuarios y te da ideas para el retargeting.
- El registro de las solicitudes de tarjetas de crédito te ayuda a comprender los beneficios que los usuarios buscan en una tarjeta de crédito.
- El registro de las solicitudes de préstamos te ayuda a comprender para qué necesitan asistencia financiera los usuarios y cuánta asistencia desean.
Acceso
Nombre de evento: af_login
Finalidad
Este evento puede ayudarte a registrar la retención de tus usuarios registrados.
Lógica de activación
Activa este evento cada vez que el usuario inicia sesión.
Recommended fields
This event can be sent without any additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
Podrás registrar el registro de usuarios y compararlo con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de registro de usuarios, podrás hacer lo siguiente:
- Saber cuántos usuarios instalaron la aplicación, pero nunca se registraron.
- Saber cuáles métodos de registro prefieren tus usuarios.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | correo electrónico, facebook | El tipo de método de registro |
Ejemplos de código
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);
Registro verificado
Nombre del evento: registration_verified
Finalidad
Puedes registrar un registro aceptado y compararlo con otros datos para aprender más acerca de tus usuarios. Por ejemplo, al registrar los eventos de registro verificados puedes saber cuántos usuarios se registran pero no son aceptados.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando se verifique el registro.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
submit_registration | Cadena | correo electrónico, facebook | El tipo de método de registro verificado. No completes la información de identificación personal (PII). |
Ejemplos de código
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);
Enviar la solicitud de cuenta
Nombre del evento: submit_account_application
Finalidad
Puedes registrar una solicitud de cuenta y compararla con otros datos para saber más sobre tus usuarios. Por ejemplo, al registrar los eventos de registro de usuarios, puedes saber cuántos usuarios se registran pero no solicitan abrir una cuenta.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de solicitud de cuenta.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
account_type | Cadena | savings | El tipo de cuenta solicitada. |
application_method | Cadena | aplicación | Donde se hizo la solicitud. |
PII_type | Cadena | passport | Tipo de ID utilizado durante la solicitud. |
Ejemplos de código
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);
Apertura de cuenta satisfactoria
Nombre del evento: open_account_success
Finalidad
Puedes registrar las solicitudes de cuenta que se aceptaron y compararlas con otros datos para aprender más sobre tus usuarios. Por ejemplo, al registrar las solicitudes de cuenta satisfactorias, puedes saber cuántos usuarios solicitan cuentas pero no son aceptados, y tratar de mejorar el embudo o volver a captar a esos usuarios más tarde.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando se acepta la solicitud del usuario y se abre la cuenta.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
account_type | Cadena | savings | El tipo de cuenta abierta. |
application_method | Cadena | aplicación | Donde se hizo la solicitud. |
PII_type | Cadena | identification card | Tipo de ID utilizado durante la solicitud. |
Ejemplos de código
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);
Apertura de cuenta rechazada
Nombre del evento: open_account_rejected
Finalidad
Puedes registrar las solicitudes de cuenta que se rechazaron y compararlas con otros datos para aprender más sobre tus usuarios. Por ejemplo, al registrar las solicitudes de cuenta no satisfactorias, puedes saber cuántos usuarios solicitan cuentas pero no son aceptados, y tratar de mejorar el embudo o volver a captar a esos usuarios más tarde.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
account_type | Cadena | savings | El tipo de cuenta solicitada. |
Ejemplos de código
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);
Solicitud de tarjeta de crédito
Nombre del evento: submit_credit_card_application
Finalidad
Puedes registrar una solicitud de una tarjeta de crédito y compararla con otros datos para saber más sobre tus usuarios. Por ejemplo, al registrar las solicitudes de tarjetas de crédito de los usuarios, se puede saber cuántos usuarios las solicitan pero no son aceptados, y utilizar esta información para mejorar el embudo o volver a captarlos más tarde.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario envía una solicitud para una tarjeta de crédito nueva.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
credit_card_type | Cadena | gold card | El tipo de tarjeta de crédito solicitada. |
application_method | Cadena | aplicación | Donde se hizo la solicitud. |
PII_type | Cadena | passport | Tipo de ID utilizado durante la solicitud. |
Ejemplos de código
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);
Solicitud de tarjeta de crédito satisfactoria
Nombre del evento: credit_card_application_success
Finalidad
Puedes registrar una solicitud de tarjeta de crédito aceptada y compararla con otros datos para saber más sobre tus usuarios. Por ejemplo, al registrar las solicitudes de tarjetas de crédito satisfactorias, se puede saber cuántos usuarios las solicitan pero no son aceptados, y utilizar esta información para mejorar el embudo o volver a captar a los usuarios aceptados para otras tarjetas de crédito.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando se acepte la solicitud de la tarjeta de crédito del usuario.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
credit_card_type | Cadena | gold card | El tipo de tarjeta de crédito solicitada. |
application_method | Cadena | aplicación | Donde se hizo la solicitud. |
PII_type | Cadena | identification card | Tipo de ID utilizado durante la solicitud. |
Ejemplos de código
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);
Solicitud de tarjeta de crédito rechazada
Nombre del evento: credit_card_application_rejected
Finalidad
Puedes registrar una solicitud de tarjeta de crédito rechazada y compararla con otros datos para saber más sobre tus usuarios. Por ejemplo, al registrar las solicitudes de tarjetas de crédito no satisfactorias, se puede saber cuántos usuarios las solicitan pero no son aceptados, y utilizar esta información para mejorar el embudo o volver a captar a los usuarios para otras tarjetas de crédito.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando se rechace la solicitud de la tarjeta de crédito del usuario.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
credit_card_type | Cadena | gold card | El tipo de tarjeta de crédito solicitada. |
Ejemplos de código
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);
Activación de tarjeta de crédito
Nombre del evento: credit_card_activation
Finalidad
Puedes registrar cuando un usuario activa su tarjeta de crédito nueva y compararlo con otros datos para saber más sobre tus usuarios. Por ejemplo, al registrar las activaciones de tarjetas de crédito, puedes saber cuántos usuarios obtienen una tarjeta de crédito pero no se molestan en activarla, y utilizar esta información para mejorar el embudo o para volver a captar a los usuarios.
Lógica de activación
Para registrar correctamente este evento, debes activarlo cuando un usuario activa su tarjeta de crédito nueva.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
credit_card_type | Cadena | gold card | El tipo de tarjeta de crédito solicitada. |
application_method | Cadena | aplicación | Donde se hizo la solicitud. |
PII_type | Cadena | identification card | Tipo de ID utilizado durante la solicitud. |
Ejemplos de código
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);
Enviar solicitud de préstamo
Nombre de evento: submit_loan_application
Finalidad
La finalidad de este evento es ayudarte a registrar las solicitudes de préstamos. Al registrar el evento Enviar solicitud de préstamo, podrás hacer lo siguiente:
- Registrar la cantidad total de solicitudes de préstamos en tu aplicación.
- Conocer el importe máximo, mínimo y promedio de las solicitudes de préstamos.
- Ver qué tipos de préstamos solicitan las personas.
Lógica de activación
Activa este evento cuando el usuario envíe correctamente una solicitud de préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
loan_type | Cadena | housing | El propósito del préstamo. |
loan_amount | float | 1000 | La cantidad solicitada. |
loan_period | Cadena | 3 meses | El período de préstamo. |
Ejemplos de código
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);
Aceptar un préstamo.
Nombre de evento: loan_accepted
Finalidad
Al registrar el evento Préstamo aceptado, podrás conocer las tendencias en cuanto a préstamos y otras métricas:
- Podrás ver qué tipos de préstamos se aceptan.
- Podrás ver el importe solicitado en los préstamos aceptados.
- Podrás ver cuáles son los prestamistas que aceptan la mayor cantidad de préstamos, qué tipos y qué importes.
Lógica de activación
Activa este evento cuando se acepte un préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
loan_type | Cadena | housing | El propósito del préstamo. |
loan_amount | float | 1000 | La cantidad solicitada. |
loan_period | Cadena | 3 meses | El período de préstamo. |
Ejemplos de código
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);
Préstamo rechazado
Nombre de evento: loan_rejected
Finalidad
el registro del evento Préstamo rechazado puede ayudarte a entender los motivos por los cuales se rechazan los préstamos. Podrás ver la correlación entre el importe y el período del préstamo y las tasas de rechazo. También podrás usar la función de retargeting con los usuarios a quienes les hayan rechazado un préstamo y sugerirles un préstamo más pequeño.
Lógica de activación
Activa este evento cuando un prestamista rechace un préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
Ejemplos de código
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
Los préstamos P2P (punto a punto) son una nueva manera en que las personas y las empresas prestan y toman prestado dinero entre ellas.
Te recomendamos que registres los eventos en tu aplicación de préstamos P2P:
- Puedes registrar la actividad de prestamistas y prestatarios individuales.
- Podrás saber qué tipos de préstamos ofrecen las personas en contraste con qué tipos de préstamos les interesan a los prestatarios.
- Podrás recopilar métricas sobre el importe promedio, mínimo y máximo de los préstamos.
- Puedes registrar los índices de aceptación y rechazo de préstamos.
Con estos datos recopilados del registro de eventos, podrás destacar los prestatarios confiables y ofrecerles mejores tasas de interés. De manera similar, podrás ver quiénes son los prestamistas más activos y ofrecerles tarifas más bajas. Además, una vez que sepas cuáles son los tipos de préstamos más populares entre los usuarios, podrás lanzar campañas de marketing dirigidas a tales audiencias.
Registro enviado
Nombre de evento: registration_submitted
Finalidad
Dado que los préstamos P2P son vulnerables al uso indebido, los usuarios primero deben verificar su identidad. Para eso, deben enviar una solicitud de registro. el registro del evento Registro enviado puede ayudarte a hacer lo siguiente:
- Registrar cuántos usuarios se registran, pero nunca verifican su cuenta.
- Ver la correlación entre el método de registro (correo electrónico, Facebook, Google) y las tasas de verificación.
Lógica de activación
Activa este evento después de que el usuario envíe una solicitud para registrarse en tu servicio P2P.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | Correo electrónico, Facebook, Google | El tipo de método o red social que eligió el usuario para registrarse |
Ejemplos de código
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);
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
el registro del evento Registro completado puede ayudarte a ver cuántos usuarios efectivamente verifican su identidad después de registrarse. Puedes atribuir estos usuarios a campañas y ver cuáles campañas generan usuarios activos.
Lógica de activación
Activa este evento cuando se apruebe el registro del usuario.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | El tipo de método o red social que elige el usuario para registrarse |
Ejemplos de código
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);
Completar formulario de préstamo
Nombre de evento: fill_loan_form_<FORM_NAME>
Finalidad
Para solicitar un préstamo, los prestatarios deben completar varios formularios. Podrás registrar los formularios que complete un prestatario potencial a fin de ver la tasa de abandono. Aparte de la tasa de abandono, también podrás usar la función de retargeting con los prestatarios que abandonan cuando les falta completar un solo formulario para finalizar la solicitud de préstamo. Cuando envíes el evento, incluye el nombre del formulario en el nombre del evento.
Lógica de activación
Activa este evento cada vez que un prestatario envíe un formulario.
Recommended fields
You can send this event without additional fields.
Nota
Es muy recomendable que asocies los préstamos con los prestamistas. Para eso, asegúrate de establecer el ID de usuario de cliente. Establecer el ID de usuario de cliente es tu manera de hacer coincidir los prestamistas con los usuarios de tu aplicación cuando aparecen en AppsFlyer. Al establecer el ID de usuario de cliente, te aseguras de que todos los eventos se envíen con dicho ID.
Ejemplos de código
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);
Enviar solicitud de préstamo
Nombre de evento: submit_loan_application
Finalidad
La finalidad de este evento es ayudarte a registrar las solicitudes de préstamos. Al registrar el evento Enviar solicitud de préstamo, podrás hacer lo siguiente:
- Registrar la cantidad total de solicitudes de préstamos en tu aplicación.
- Conocer el importe máximo, mínimo y promedio de las solicitudes de préstamos.
- Ver qué tipos de préstamos solicitan las personas.
Lógica de activación
Activa este evento cuando el usuario envíe correctamente una solicitud de préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
loan_amount | float | 1000 | El importe solicitado |
loan_type | Cadena | 3 meses | El período del préstamo |
Ejemplos de código
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);
Aceptar un préstamo.
Nombre de evento: loan_accepted
Finalidad
Al registrar el evento Préstamo aceptado, podrás conocer las tendencias en cuanto a préstamos y otras métricas:
- Podrás ver qué tipos de préstamos se aceptan.
- Podrás ver el importe solicitado en los préstamos aceptados.
- Podrás ver cuáles son los prestamistas que aceptan la mayor cantidad de préstamos, qué tipos y qué importes.
Lógica de activación
Activa este evento cuando se acepte un préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
loan_amount | float | 1000 | El importe solicitado |
loan_type | Cadena | 3 meses | El período del préstamo |
Ejemplos de código
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);
Préstamo rechazado
Nombre de evento: loan_rejected
Finalidad
el registro del evento Préstamo rechazado puede ayudarte a entender los motivos por los cuales se rechazan los préstamos. Podrás ver la correlación entre el importe y el período del préstamo y las tasas de rechazo. También podrás usar la función de retargeting con los usuarios a quienes les hayan rechazado un préstamo y sugerirles un préstamo más pequeño.
Lógica de activación
Activa este evento cuando un prestamista rechace un préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
load_id | Cadena | 1735102 | El ID del préstamo |
Ejemplos de código
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);
Pago
Nombre de evento: payment
Finalidad
el registro del evento Pago puede ayudarte a marcar los prestatarios como confiables. Los prestatarios confiables son aquellos que cumplen con la obligación de pagar los préstamos. Podrás atribuir los prestatarios a campañas y saber cuáles campañas generaron prestatarios confiables. el registro de este evento, además, puede ayudarte a recopilar datos sobre el importe mínimo, máximo y promedio de los pagos.
Lógica de activación
Activa este evento cada vez que un usuario haga un pago de su préstamo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
payment_amount | float | 100 | El importe pagado |
payment_id | Cadena | AE12SF | El ID del pago |
Ejemplos de código
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);
Pago finalizado
Nombre de evento: payment_completed
Finalidad
el registro del evento Pago finalizado puede ayudarte a destacar los prestatarios que cumplen con la obligación de pagar un préstamo. También puedes usar la función de retargeting con tales prestatarios y ofrecerles una menor tasa de interés u otras promociones.
Lógica de activación
Activa este evento cuando se pague un préstamo en su totalidad.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
loan_id | Cadena | 1735102 | El ID del préstamo |
Ejemplos de código
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);
Educación en línea
Las aplicaciones de educación en línea permiten a los usuarios aprender a distancia. Los eventos in-app que recomendamos registrar en las aplicaciones de educación en línea incluyen la inscripción, los tutoriales y cursos completados y los certificados recibidos. A continuación, verás algunos ejemplos de cómo podrás beneficiarte con el registro de estos eventos:
- El registro de las inscripciones in-app te ayuda a entender qué cursos quieren los usuarios y te da ideas para el targeting.
- El registro de los tutoriales completados te ayuda a comprender qué usuarios pueden ser reorientados y recibir recordatorios de que tienen tutoriales adicionales para completar un curso.
- El registro de los certificados recibidos te ayuda a entender qué cursos y certificados son los más solicitados.
Acceso
Nombre de evento: af_login
Finalidad
Este evento puede ayudarte a registrar la retención de tus usuarios registrados.
Lógica de activación
Activa este evento cada vez que el usuario inicia sesión.
Recommended fields
This event can be sent without any additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
Podrás registrar el registro de usuarios y compararlo con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de registro de usuarios, podrás hacer lo siguiente:
- Saber cuántos usuarios instalaron la aplicación, pero nunca se registraron.
- Saber cuáles métodos de registro prefieren tus usuarios.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | correo electrónico, facebook | El tipo de método de registro |
Ejemplos de código
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);
Finalización del tutorial
Nombre de evento: af_tutorial_completion
Finalidad
Los tutoriales ayudan a los usuarios a saber cómo usar mejor tu aplicación. Al registrar la finalización del tutorial, podrás:
- Saber con qué temas los usuarios podrían tener problemas.
- Saber cuáles tutoriales no dan buenos resultados y mejorarlos.
Lógica de activación
Existen dos situaciones en las que debe activarse este evento:
- 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 | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_success | Booleano | Sí | Si el usuario finalizó el tutorial o no |
af_tutorial_id | Cadena | 3 | El ID del tutorial |
af_content | Cadena | algebra | El nombre del tutorial |
Ejemplos de código
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);
Completar el ejercicio
Nombre del evento: complete_excercise
Finalidad
Puedes registrar los ejercicios completados y compararlo con otros datos para aprender más acerca de tus usuarios. Por ejemplo, al registrar los eventos de finalización de ejercicios se puede saber cuántos usuarios empiezan pero no terminan un ejercicio.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario completa un ejercicio.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
course_name | Cadena | algebra | El nombre del curso. |
exercise_name | Cadena | 2 | El nombre del ejercicio. |
Ejemplos de código
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);
Curso completado
Nombre del evento: course_completed
Finalidad
Puedes registrar los cursos completados y compararlo con otros datos para aprender más acerca de tus usuarios. Por ejemplo, al registrar los eventos de finalización de cursos se puede saber cuántos usuarios empiezan pero no terminan un curso.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario completa un curso.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
course_name | Cadena | algebra | El nombre del curso. |
course_completed | Cadena | Sí | Si el curso se completó. |
Ejemplos de código
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);
Certificado expedido
Nombre del evento: certificate_issued
Finalidad
Puedes registrar los certificados expedidos y compararlo con otros datos para aprender más acerca de tus usuarios. Por ejemplo, al registrar los eventos de certificados expedidos se puede saber cuántos usuarios terminan un curso y volverlos a captar para el siguiente.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando se le expide un certificado al usuario.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
course_name | Cadena | algebra | El nombre del curso. |
certificate_received | Cadena | Sí | Si el certificado se expidió. |
Ejemplos de código
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);
Compra
Nombre de evento: af_purchase
Finalidad
Muchas aplicaciones de educación en línea permiten a los usuarios comprar artículos, p. ej. cursos, software o parafernalia escolar. El evento Purchase te ayuda a registrar las compras in-app realizadas por los usuarios. Al registrar las compras, podrás hacer lo siguiente:
- Determinar el valor de vida útil (LTV) de tus usuarios y el ROI de tus campañas en todas las agencias y redes de publicidad.
- Determinar cuáles ofertas son las más populares entre tus usuarios.
- Establecer referencias cruzadas entre las campañas y los artículos comprados a fin de optimizar el targeting de las campañas.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario llega a la página de agradecimiento tras una compra exitosa.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 200 | Los ingresos estimados de la compra |
af_currency | Cadena | USD | El código de moneda |
af_content_id | Cadena | 001, 092 | El ID del artículo |
order_id | Cadena | 9277 | El ID del pedido |
af_receipt_id | Cadena | 9277 | El ID del recibo |
Ejemplos de código
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
Recientemente, las aplicaciones de transporte privado se han vuelto muy populares, en especial en zonas urbanas donde la mayoría de los residentes no tienen automóvil. Al registrar y analizar los eventos in-app, podrás obtener mucha información acerca de lo siguiente:
- Cómo interactúan los pasajeros y los conductores
- Los países donde más personas usan tu servicio de transporte privado
- Las métricas relacionadas con precios, viajes y distancias de viaje
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
Registrar el evento Registro completado puede proporcionarte información sobre tus usuarios. Al registrar el evento Registro completado, podrás hacer lo siguiente:
- Saber cuál es el método de registro que prefieren tus usuarios (Google, Facebook, correo electrónico).
- Determinar cuántos usuarios efectivamente se registran después de descargar e instalar la aplicación.
- Ver las tendencias en cuanto al registro en distintos países para determinar en cuáles países es más probable que los usuarios utilicen tu aplicación.
Lógica de activación
Activa este evento cuando el usuario se registre correctamente.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | La plataforma o el método mediante el cual se registra el usuario | |
country_code | Cadena | 66 | El código del país (código de teléfono) |
Ejemplos de código
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);
Agregar Información de Pago
Nombre de evento: af_add_payment_info
Finalidad
El registro del evento Agregar información de pago puede ayudarte a clasificar a los usuarios. Podrás hacer lo siguiente:
- Saber cuánto tarda un usuario en agregar su información de pago.
- Cuáles son los métodos de pago más populares (tarjeta de crédito, billeteras electrónicas).
- Configurar campañas y colaborar con los proveedores de métodos de pago más populares.
Lógica de activación
Activa este evento cuando el usuario agregue la información de pago correctamente en su cuenta.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_success | Booleano | Verdadero | Si se agregó correctamente el método de pago o no |
credit_card_type | Cadena | Visa, Mastercard | Tipo de tarjeta de crédito (opcional) |
payment_method_type | Cadena | Tarjeta de crédito, billetera electrónica | El tipo de método de pago |
Ejemplos de código
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);
Solicitud de reserva de viaje
Nombre de evento: ride_booking_requested
Finalidad
El evento Solicitud de reserva de viaje es uno de cuatro eventos relacionados con la reserva de viajes. Estos eventos se analizan a continuación. Al registrar este evento, podrás:
- Conocer los destinos populares.
- Conocer las tendencias, adónde y desde dónde viajan las personas.
- Ver la distancia promedio de un viaje.
- Ver de qué ciudades, regiones y países proviene la mayor cantidad de usuarios.
Además, el registro de este evento, junto con los otros tres eventos relacionados con la reserva de viajes, puede ayudarte a registrar las transacciones correctas. Podrás registrar las transacciones correctas y compararlas con las incorrectas. Por ejemplo, podrás ver cuántas reservas de viaje se solicitan y cuántas se finalizan o se cancelan.
Lógica de activación
Activa este evento cuando el pasajero haya creado una solicitud de reserva de viaje.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 22.4 | Precio cotizado del viaje |
af_currency | Cadena | SGD | Moneda |
af_destination_a | Cadena | Plaza Singapura | Punto de partida |
af_destination_b | Cadena | Marina Bay Sands | Punto de llegada |
distance | float | 5.2 | La distancia entre dos destinos |
af_content_type | Cadena | Taxi | Tipo de transporte |
payment_method_type | Cadena | Tarjeta de crédito, billetera electrónica | El tipo de método de pago |
af_city | Cadena | Singapur | La ciudad donde se reserva el viaje |
af_region | Cadena | SFA | La región donde se reserva el viaje |
af_country | Cadena | Singapur | El país donde se reserva el viaje |
order_id | Cadena | 135790 | ID del pedido |
Ejemplos de código
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);
Confirmación de reserva de viaje
Nombre de evento: ride_booking_confirmed
Finalidad
El evento Confirmación de reserva de viaje es uno de cuatro eventos relacionados con la reserva de viajes. Al registrar este evento, podrás:
- Saber quiénes son los conductores más activos.
- Ver cuáles son los destinos más frecuentes entre conductores.
- Ver los precios de viajes promedio y totales de cada conductor.
Además, el registro de este evento, junto con los otros tres eventos relacionados con la reserva de viajes, puede ayudarte a entender mejor la actividad de los conductores. Podrás ver cuáles conductores confirman la mayor cantidad de solicitudes de reserva de viajes, cuáles conductores eligen viajes cortos en lugar de viajes largos, etc.
Lógica de activación
Activa este evento cuando un conductor acepte una reserva.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 22.4 | Precio cotizado del viaje |
af_currency | Cadena | SGD | Moneda |
af_destination_a | Cadena | Plaza Singapura | Punto de partida |
af_destination_b | Cadena | Marina Bay Sands | Punto de llegada |
distance | float | 5.2 | La distancia entre dos destinos |
af_content_type | Cadena | Taxi | Tipo de transporte |
driver_id | Cadena | 1706 | El ID del conductor que confirmó el viaje |
payment_method_type | Cadena | Tarjeta de crédito, billetera electrónica | El tipo de método de pago |
af_city | Cadena | Singapur | La ciudad donde se reserva el viaje |
af_region | Cadena | SFA | La región donde se reserva el viaje |
af_country | Cadena | Singapur | El país donde se reserva el viaje |
af_order_id | Cadena | 135790 | ID del pedido |
Ejemplos de código
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);
Cancelación de reserva de viaje
Nombre de evento: ride_booking_cancelled
Finalidad
El evento Cancelación de reserva de viaje es uno de cuatro eventos relacionados con la reserva de viajes. Al registrar este evento, podrás:
- Registrar los conductores o pasajeros que cancelan viajes constantemente.
- Saber cuántos viajes se cancelan.
- Correlacionar la tasa de cancelación con atributos como el precio, el destino, la distancia, las ciudades, etc.
- Conocer los motivos por los cuales se cancela un viaje.
Lógica de activación
Activa este evento cuando se cancele la reserva.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 22.4 | Precio cotizado del viaje |
af_currency | Cadena | SGD | Moneda |
af_destination_a | Cadena | Plaza Singapura | Punto de partida |
af_destination_b | Cadena | Marina Bay Sands | Punto de llegada |
distance | float | 5.2 | La distancia entre dos destinos |
af_content_type | Cadena | Taxi | Tipo de transporte |
driver_id | Cadena | 1706 | El ID del conductor que confirmó el viaje |
cancelation_reason | Cadena | El precio es muy alto, el conductor no apareció, el pasajero no apareció | El motivo por el cual se cancela el viaje |
payment_method_type | Cadena | Tarjeta de crédito, billetera electrónica | El tipo de método de pago |
af_city | Cadena | Singapur | La ciudad donde se reserva el viaje |
af_region | Cadena | SFA | La región donde se reserva el viaje |
af_country | Cadena | Singapur | El país donde se reserva el viaje |
order_id | Cadena | 135790 | ID del pedido |
canceled_by | Cadena | Pasajero | Si al viaje lo cancela el pasajero o el conductor |
Ejemplos de código
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);
Finalización de reserva de viaje
Nombre de evento: ride_booking_completed
Finalidad
El evento Finalización de reserva de viaje es uno de cuatro eventos relacionados con la reserva de viajes. Al registrar este evento, podrás:
- Conocer cuánto gastan los pasajeros y cuánto ganan los conductores.
- Correlacionar los viajes finalizados con atributos como el destino, la distancia, el tipo de pago, el ID del conductor, etc.
- Ver la distancia promedio y total para conductores y pasajeros.
- Comparar los viajes finalizados con los cancelados.
- Registrar la puntuación de los conductores.
Lógica de activación
Activa este evento cuando se haya finalizado el viaje.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 22.4 | Precio cotizado del viaje |
af_currency | Cadena | SGD | Moneda |
af_destination_a | Cadena | Plaza Singapura | Punto de partida |
af_destination_b | Cadena | Marina Bay Sands | Punto de llegada |
distance | float | 5.2 | La distancia entre dos destinos |
af_content_type | Cadena | Taxi | Tipo de transporte |
driver_id | Cadena | 1706 | El ID del conductor que confirmó el viaje |
payment_method_type | Cadena | Tarjeta de crédito, billetera electrónica | El tipo de método de pago |
af_city | Cadena | Singapur | La ciudad donde se reserva el viaje |
af_region | Cadena | SFA | La región donde se reserva el viaje |
af_country | Cadena | Singapur | El país donde se reserva el viaje |
order_id | Cadena | 135790 | ID del pedido |
credits_earned | int | 248 | Los créditos que ganó el pasajero por finalizar un viaje |
Ejemplos de código
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);
Créditos Gastados
Nombre de evento: spent_credits
Finalidad
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:
- Ver cuántos pasajeros canjean créditos por cupones o vales.
- Ver qué tipos de cupones, vales y descuentos prefieren los pasajeros.
Lógica de activación
Activa este evento cuando un pasajero gaste créditos.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_content | Cadena | Entrada de cine individual | El tipo de cupón, vale o descuento |
credits_used | int | 1000 | Cuántos créditos se usaron |
credits_remaining | int | 2090 | Cuántos créditos quedan en la cuenta |
invoice_id | Cadena | KO215123SD | El ID de la factura que se crea por gastar créditos |
Ejemplos de código
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
Las aplicaciones de Reserva de vuelos les permiten a los viajeros reservar vuelos con facilidad y, al mismo tiempo, elegir entre las mejores ofertas. Los eventos que recomendamos registrar son: reservar un vuelo, buscar vuelos y ver ofertas. el registro de estos eventos te ayuda a analizar las preferencias y las compras de los usuarios. Por ejemplo, al analizar los datos derivados de los eventos, podrás hacer lo siguiente:
- Conocer los destinos populares.
- Analizar las tendencias estacionales.
- Conocer las líneas aéreas populares con las cuales prefieren viajar los usuarios.
Reserva de Viaje
Nombre de evento: af_travel_booking
Finalidad
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:
- Destinos populares
- Líneas aéreas populares
- Tendencias estacionales
Lógica de activación
Envía este evento cuando el usuario llegue a la página de agradecimiento después de reservar correctamente un vuelo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 647 | Ingresos asociados con la reserva |
af_currency | Cadena | SGD | El código de moneda |
af_price | float | 674 | El precio |
af_content_id | Cadena | ODIRNH | El ID de la oferta de vuelo |
af_departing_departure_date | Cadena | 2018-06-21 | La fecha de partida |
af_returning_departure_date | Cadena | 2018-06-26 | La fecha de regreso |
af_destination_a | Cadena | BKK | Primer destino |
af_destination_b | Cadena | SYD | Segundo destino (si corresponde) |
airline_code | Cadena | KLM | El código de la línea aérea |
af_class | Cadena | Clase turista | La clase del vuelo reservado |
purchase_method | Cadena | Tarjeta de crédito | Tarjeta de crédito, PayPal, etc. |
Ejemplos de código
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);
Vista de Contenido
Nombre de evento: af_content_view
Finalidad
Después de realizar una búsqueda, los usuarios hacen clic en los resultados de búsqueda que les resultan de interés. el registro del contenido que ven los usuarios en los resultados de búsqueda puede ayudarte a hacer lo siguiente:
- Determinar cuáles son las ofertas de vuelos que les resultan más atractivas a los usuarios.
- Saber si los resultados de búsqueda están relacionados con las consultas de búsqueda.
Lógica de activación
Es mejor activar este evento cuando un usuario hace clic en un resultado de búsqueda.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_departing_departure_date | Cadena | 2018-06-21 | La fecha de partida |
af_returning_departure_date | Cadena | 2018-06-26 | La fecha de regreso |
af_destination_a | Cadena | BKK | Primer destino |
af_destination_b | Cadena | SYD | Segundo destino (si corresponde) |
Ejemplos de código
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);
Búsqueda
Nombre de evento: af_search
Finalidad
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:
- Conocer qué es lo que más buscan los usuarios.
- Saber cuáles son los destinos más populares.
- Ver cuántos usuarios viajan con niños.
- Ver en qué época del año los usuarios prefieren o planean viajar.
Lógica de activación
Activa este evento cuando el usuario haga clic en el botón de búsqueda, después de completar el formulario de búsqueda.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_num_children | int | 0 | Cuántos niños viajan |
af_destination_a | Cadena | BKK | Primer destino |
af_destination_b | Cadena | SYD | Segundo destino (si corresponde) |
af_departing_departure_date | Cadena | 2018-06-21 | La fecha de partida |
af_returning_departure_date | Cadena | 2018-06-26 | La fecha de regreso |
af_num_infants | int | 0 | Cuántos bebés viajan |
af_num_adults | int | 1 | Cuántos adultos viajan |
Ejemplos de código
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);
Agregar Información de Pago
Nombre de evento: af_add_payment_info
Finalidad
Este evento puede ayudarte a registrar intentos exitosos y no exitosos de agregar la información de pago cuando se reserva un vuelo.
Lógica de activación
Activa este evento cuando un usuario haga clic en el botón para reservar un vuelo.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_success | Booleano | Verdadero | Si se pudo agregar el método de pago o no |
Ejemplos de código
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);
Primera compra
Nombre de evento: first_purchase
Finalidad
Es igual a un evento Compra. Sin embargo, a diferencia del evento Compra, el evento Primera compra puede usarse para hacer lo siguiente:
- Ver cuánto tiempo tarda un comprador nuevo en hacer una compra.
- Ver cuáles son los vuelos que prefieren los compradores por primera vez.
- Ver el precio promedio y los ingresos de las compras por primera vez.
Lógica de activación
Activa este evento cuando el usuario finalice su primera compra.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 1200 | Ingresos de la compra |
af_price | float | 4000 | Importe total de la compra |
af_content_id | Cadena | 121, 262 | ID del artículo |
af_content_type | Cadena | vuelo | Categoría del artículo |
af_currency | Cadena | AUD | Moneda |
af_quantity | int | 1 | Cantidad de artículos en el carrito |
af_order_id | Cadena | X123ABC | El ID del pedido que se genera después de la compra. |
af_receipt_id | Cadena | X123ABC | ID del pedido, pero necesario para la integración de Retargeting con CRITEO y Google AdWords |
Ejemplos de código
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
Al registrar eventos in-app en tu aplicación de reserva de hoteles, podrás ver cuáles campañas y fuentes de medios atraen a usuarios que efectivamente reservan vacaciones. Además, podrás ver cuáles campañas y fuentes de medios atraen a los usuarios que hacen más reservas y generan la mayor cantidad de ingresos. Podrás atribuir preferencias como la puntuación del hotel, la temporada, el país y la cantidad de niños a los usuarios provenientes de determinadas fuentes de medios. Al atribuir las preferencias de usuarios a fuentes de medios, podrás optimizar las campañas en las fuentes de medios empleando la función de targeting con las preferencias de usuarios.
Registro Completado
Nombre de evento: af_complete_registration
Finalidad
Podrás registrar el registro de usuarios y compararlo con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de registro de usuarios, podrás hacer lo siguiente:
- Saber cuántos usuarios instalaron la aplicación, pero nunca se registraron.
- Saber cuáles métodos de registro prefieren tus usuarios.
- Ver cuáles fuentes de medios atraen a usuarios que efectivamente se registran.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | correo electrónico, facebook | El tipo de método de registro |
Ejemplos de código
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);
Acceso
Nombre de evento: af_login
Finalidad
Este evento puede ayudarte a registrar la retención de tus usuarios registrados.
Lógica de activación
Activa este evento cada vez que el usuario inicie sesión o abra la aplicación.
Recommended fields
This event can be sent without any additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),
AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin
withValues: nil
];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Búsqueda
Nombre de evento: af_search
Finalidad
La finalidad de este evento es proporcionarte información sobre lo que buscan los usuarios. Cuando sabes lo que buscan los usuarios, puedes ofrecerles mejores ofertas y promociones. Además, podrás ver lo que los usuarios de determinadas ubicaciones geográficas están buscando y usar la función de targeting con ellos en las distintas fuentes de medios.
Lógica de activación
Activa este evento cuando el usuario realice una búsqueda.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_date_a | Cadena | 2018/07/26 | Fecha de entrada |
af_date_b | Cadena | 2018/08/01 | Fecha de salida |
af_destination_a | Cadena | Londres | Ubicación del usuario |
af_destination_b | Cadena | Madrid | Ubicación del hotel |
af_num_adults | float | 2 | Cantidad de huéspedes |
af_num_children | float | 0 | Cantidad de niños |
Ejemplos de código
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);
Vista de Contenido
Nombre de evento: af_content_view
Finalidad
La finalidad de este evento es mostrarte lo que ven los usuarios que reservan hoteles. Podrás ver qué tipo de propiedades buscan los usuarios y cuáles son sus preferencias en términos de temporada y ubicación. A continuación, podrás usar la función de retargeting con estos usuarios mediante anuncios y promociones. Además, podrás saber cuáles usuarios ven y reservan a diferencia de los usuarios que solo ven. En el caso de los usuarios que efectivamente reservan, podrás ver de cuáles fuentes de medios provienen. En el caso de los que solo ven, podrás usar la función de retargeting con ellos.
Lógica de activación
Activa este evento cuando el usuario esté viendo una propiedad.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 674 | Precio de lista del hotel |
af_content_id | Cadena | ODIRNH | El ID del hotel |
af_date_a | Cadena | 2018/07/26 | Fecha de entrada |
af_date_b | Cadena | 2018/08/01 | Fecha de salida |
af_destination_a | Cadena | Londres | Ubicación del usuario |
af_destination_b | Cadena | Madrid | Ubicación del hotel |
af_class | Cadena | De lujo | Tipo de habitación |
af_num_adults | float | 2 | Cantidad de huéspedes |
af_num_children | float | 0 | Cantidad de niños |
af_hotel_score | float | 9.6 | Puntuación del hotel según reseñas |
af_preferred_star_ratings | float | 5 | Calificación por estrellas como hotel preferido |
af_preferred_neighborhoods | Cadena | Centro | La zona donde está situado el hotel |
Ejemplos de código
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);
Agregar a la lista de deseos
Nombre de evento: af_add_to_wishlist
Finalidad
El evento Agregar a la lista de deseos indica los hoteles y destinos que los usuarios desean reservar. Al registrar este evento, podrás conocer lo que quieren los usuarios. Si sabes que algunos usuarios buscan hoteles específicos en regiones específicas, con puntuaciones y calificaciones específicas, podrás usar las funciones de targeting y retargeting con estos usuarios.
Lógica de activación
Activa este evento cuando un usuario agregue una opción a su lista de deseos.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 674 | Precio de lista del hotel |
af_content_id | Cadena | ODIRNH | El ID del hotel |
af_date_a | Cadena | 2018/07/26 | Fecha de entrada |
af_date_b | Cadena | 2018/08/01 | Fecha de salida |
af_destination_a | Cadena | Londres | Ubicación del usuario |
af_destination_b | Cadena | Madrid | Ubicación del hotel |
af_class | Cadena | De lujo | Tipo de habitación |
af_num_adults | float | 2 | Cantidad de huéspedes |
af_num_children | float | 0 | Cantidad de niños |
af_hotel_score | float | 9.6 | Puntuación del hotel según reseñas |
af_preferred_star_ratings | float | 5 | Calificación por estrellas como hotel preferido |
af_preferred_neighborhoods | Cadena | Centro | La zona donde está situado el hotel |
purchase_method | Cadena | Tarjeta de crédito | El método de compra |
af_coupon_code | Cadena | SUM2018 | Código de promoción o puntos de recompensa por lealtad |
property_type | Cadena | Hotel | El tipo de propiedad |
Ejemplos de código
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);
Proceso de Pago Iniciado
Nombre de evento: af_initiated_checkout
Finalidad
La finalidad de este evento es permitirte registrar cuántos usuarios inician el checkout. Además, podrás ver qué método de compra emplean para hacer el checkout (tarjeta de crédito, billetera electrónica) y usar la función de targeting en consecuencia. También podrás ver cuáles usuarios no finalizan el proceso de checkout y usar la función de retargeting con ellos.
Lógica de activación
Activa este evento cuando el usuario agregue la información de su tarjeta de crédito o se conecte con su billetera electrónica.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_price | float | 674 | Precio de lista del hotel |
af_content_id | Cadena | ODIRNH | El ID del hotel |
af_date_a | Cadena | 2018/07/26 | Fecha de entrada |
af_date_b | Cadena | 2018/08/01 | Fecha de salida |
af_destination_a | Cadena | Londres | Ubicación del usuario |
af_destination_b | Cadena | Madrid | Ubicación del hotel |
af_class | Cadena | De lujo | Tipo de habitación |
af_num_adults | float | 2 | Cantidad de huéspedes |
af_num_children | float | 0 | Cantidad de niños |
af_hotel_score | float | 9.6 | Puntuación del hotel según reseñas |
af_preferred_star_ratings | float | 5 | Calificación por estrellas como hotel preferido |
af_preferred_neighborhoods | Cadena | Centro | La zona donde está situado el hotel |
purchase_method | Cadena | Tarjeta de crédito | El método de compra |
af_coupon_code | Cadena | SUM2018 | Código de promoción o puntos de recompensa por lealtad |
property_type | Cadena | Hotel | El tipo de propiedad |
Ejemplos de código
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);
Reserva de Viaje
Nombre de evento: travel_booking
Finalidad
La finalidad del evento Reserva de viaje es permitirte ver la tasa general de reservas en tu aplicación. Además, al registrar este evento podrás:
- Registrar los ingresos generados a partir de las reservas
- Ver cuántos usuarios reservan hoteles con niños.
- Comprender las tendencias estacionales.
- Ver cuáles hoteles son populares entre los usuarios.
Lógica de activación
Activa este evento cuando el usuario llegue a la página de agradecimiento después de reservar un hotel.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 647 | Ingresos de la reserva |
af_currency | Cadena | GBP | Código de moneda |
af_price | float | 674 | Precio de lista del hotel |
af_content_id | Cadena | ODIRNH | El ID del hotel |
af_date_a | Cadena | 2018/07/26 | Fecha de entrada |
af_date_b | Cadena | 2018/08/01 | Fecha de salida |
af_destination_a | Cadena | Londres | Ubicación del usuario |
af_destination_b | Cadena | Madrid | Ubicación del hotel |
af_class | Cadena | De lujo | Tipo de habitación |
af_num_adults | float | 2 | Cantidad de huéspedes |
af_num_children | float | 0 | Cantidad de niños |
af_hotel_score | float | 9.6 | Puntuación del hotel según reseñas |
af_preferred_star_ratings | float | 5 | Calificación por estrellas como hotel preferido |
af_preferred_neighborhoods | Cadena | Centro | La zona donde está situado el hotel |
purchase_method | Cadena | Tarjeta de crédito | El método de compra |
af_coupon_code | Cadena | SUM2018 | Código de promoción o puntos de recompensa por lealtad |
property_type | Cadena | Hotel | El tipo de propiedad |
new_booking | Booleano | Verdadero | La primera reserva del usuario |
Ejemplos de código
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);
Primera compra
Nombre de evento: first_purchase
Finalidad
Es igual a un evento Compra. Sin embargo, a diferencia del evento Compra, el evento Primera compra puede usarse para hacer lo siguiente:
- Ver cuánto tiempo tarda un comprador nuevo en hacer una compra.
- Ver cuáles son los productos que prefieren los compradores por primera vez.
- Ver el precio promedio y los ingresos de las compras por primera vez.
Lógica de activación
Activa este evento cuando el usuario finalice su primera compra.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 1200 | Ingresos de la compra |
af_price | float | 4000 | Importe total de la compra |
af_content_id | Cadena | 121, 262 | ID del artículo |
af_content_type | Cadena | hotel | Categoría del artículo |
af_currency | Cadena | AUD | Moneda |
af_quantity | int | 1 | Cantidad de artículos en el carrito |
af_order_id | Cadena | X123ABC | El ID del pedido que se genera después de la compra. |
af_receipt_id | Cadena | X123ABC | ID del pedido, pero necesario para la integración de Retargeting con CRITEO y Google AdWords |
Ejemplos de código
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.
Acceso
Nombre de evento: af_login
Finalidad
Este evento puede ayudarte a registrar la retención de tus usuarios registrados.
Lógica de activación
Activa este evento cada vez que el usuario inicia sesión.
Recommended fields
This event can be sent without any additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Registro Completado
Nombre del evento: complete_registration
Finalidad
Podrás registrar el registro de usuarios y compararlo con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de registro de usuarios, podrás hacer lo siguiente:
- Saber cuántos usuarios instalaron la aplicación, pero nunca se registraron.
- Saber cuáles métodos de registro prefieren tus usuarios.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | correo electrónico, facebook | El tipo de método de registro |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes an appointment.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Name of the doctor. |
appointment number | Cadena | 001 | Number of the appointment. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user cancels an appointment.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Name of the doctor. |
appointment number | Cadena | 001 | Number of the appointment. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes their first appointment.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Name of the doctor. |
specialty | Cadena | neurology | Medical specialty. |
duration | Cadena | 30 min chat | Amount of time of the appointment. |
price | Cadena | 50 | Price of the appointment. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes their first appointment.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
lab selection | Cadena | full body checkup | Name of the lab type. |
quantity | Cadena | 2 | Amount ordered. |
price | Cadena | 500 | Price of the lab. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes their first purchase.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
medicine name | Cadena | rhinos | Name of the medicine. |
quantity | Cadena | 1 | Amount ordered. |
price | Cadena | 10 | Price of the medicine. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user schedules an in-person appointment.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Name of the doctor. |
specialty | Cadena | neurology | Medical specialty. |
duration | Cadena | 30 min chat | Amount of time of the appointment. |
price | Cadena | 50 | Price of the appointment. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes a booking.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Name of the doctor. |
specialty | Cadena | neurology | Medical specialty. |
duration | Cadena | 30 min chat | Amount of time of the appointment. |
price | Cadena | 50 | Price of the appointment. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes a lab appointment.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
lab selection | Cadena | full body checkup | Name of the lab type. |
quantity | Cadena | 2 | Amount ordered. |
price | Cadena | 500 | Price of the lab. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user makes a pharmaceutical purchase.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
medicine name | Cadena | rhinos | Name of the medicine. |
quantity | Cadena | 1 | Amount ordered. |
price | Cadena | 10 | Price of the medicine. |
Ejemplos de código
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);
Agregar al Carrito
Event Name: add_to_cart
Finalidad
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.
Lógica de activación
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 | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
medicine name | Cadena | rhinos | Name of the medicine. |
quantity | Cadena | 1 | Amount ordered. |
price | Cadena | 10 | Price of the medicine. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user gets insurance membership.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
insurance name | Cadena | DavidShield | Name of the insurance company. |
insurance type | Cadena | premium | Type of insurance plan. |
Ejemplos de código
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
Finalidad
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.
Lógica de activación
The best way to record this event is to trigger it when the user gets a receipt.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
app name | Cadena | Healthcare App | Name of your app |
doctor name | Cadena | Robert James | Name of the doctor. |
consultation description | Cadena | fever | Description of the health condition. |
Ejemplos de código
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);
Compra
Nombre de evento: af_purchase
Finalidad
Record in-app purchases made by users. By recording purchases you can:
- Determinar el valor de vida útil (LTV) de tus usuarios y el ROI de tus campañas en todas las agencias y redes de publicidad.
- Determinar cuáles ofertas son las más populares entre tus usuarios.
- Establecer referencias cruzadas entre las campañas y los artículos comprados a fin de optimizar el targeting de las campañas.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario llega a la página de agradecimiento tras una compra exitosa.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 50 | The revenue from the purchase. |
af_currency | Cadena | USD | The currency code. |
af_content_type | Cadena | lab | The name of the purchase. |
af_order_id | Cadena | 9277 | The order ID. |
payment_method_type | Cadena | credit card, local | Payment method. |
Ejemplos de código
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);
Recarga exitosa
Nombre del evento: af_top_up_success
Finalidad
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:
- Aprende qué cantidades están dispuestas a depositar las personas en sus cuentas.
- Usa las cantidades de recarga para apuntar a los usuarios con campañas personalizadas dentro de sus presupuestos de recarga.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario complete la recarga.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | Cadena | 2000 | La cantidad de la recarga. |
top_up_id | Cadena | 397 | El ID de la recarga. |
payment_method_type | Cadena | credit card, local payment | Método de pago utilizado. |
Ejemplos de código
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);
Telecomunicaciones
Las aplicaciones de telecomunicaciones permiten a los usuarios comprar y gestionar planes de telefonía móvil, planes de datos, etc. Los eventos in-app que recomendamos registrar en las aplicaciones de telecomunicaciones incluyen compras, recargas y suscripciones. A continuación, verás algunos ejemplos de cómo podrás beneficiarte con el registro de estos eventos:
- El registro de las compras te ayuda a entender qué planes de acceso son más populares.
- El registro de las recargas te ayuda a entender qué productos o paquetes pueden permitirse los usuarios.
- El registro de las suscripciones te ayuda a entender qué planes tienen más probabilidades de obtener compromisos a largo plazo de los clientes.
Acceso
Nombre de evento: af_login
Finalidad
Este evento puede ayudarte a registrar la retención de tus usuarios registrados.
Lógica de activación
Activa este evento cada vez que el usuario inicia sesión.
Recommended fields
This event can be sent without any additional fields.
Ejemplos de código
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Compra
Nombre de evento: af_purchase
Finalidad
Muchas aplicaciones de telecomunicaciones permiten a los usuarios comprar artículos, p. ej. datos adicionales. El evento Purchase te ayuda a registrar las compras in-app hechas por los usuarios. Al registrar las compras, podrás hacer lo siguiente:
- Determinar el valor de vida útil (LTV) de tus usuarios y el ROI de tus campañas en todas las agencias y redes de publicidad.
- Determinar cuáles ofertas son las más populares entre tus usuarios.
- Establecer referencias cruzadas entre las campañas y los artículos comprados a fin de optimizar el targeting de las campañas.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario llega a la página de agradecimiento tras una compra exitosa.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 2000 | Los ingresos estimados de la compra |
af_currency | Cadena | THB | El código de moneda |
af_content_type | Cadena | 5G | El nombre del paquete comprado. |
af_order_id | Cadena | 9277 | El ID del pedido |
payment_method_type | Cadena | credit card, local payment | Tipo de método de pago |
Ejemplos de código
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);
Registro Completado
Nombre del evento: complete_registration
Finalidad
Podrás registrar el registro de usuarios y compararlo con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de registro de usuarios, podrás hacer lo siguiente:
- Saber cuántos usuarios instalaron la aplicación, pero nunca se registraron.
- Saber cuáles métodos de registro prefieren tus usuarios.
Lógica de activación
La mejor forma de registrar este evento es activarlo cuando el usuario finalice el proceso de suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_registration_method | Cadena | correo electrónico, facebook | El tipo de método de registro |
Ejemplos de código
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);
Recarga exitosa
Nombre del evento: af_top_up_success
Finalidad
Los fondos de recarga se pueden usar para comprar cualquier paquete o cualquier otro servicio que se ofrezca dentro de la aplicación. Puedes registrar las recargas de los usuarios y compararlas con otros datos para aprender más acerca de tus usuarios. Al registrar los eventos de recarga de los usuarios, podrás hacer lo siguiente:
- Aprende qué cantidades están dispuestas a depositar las personas en sus cuentas.
- Usa las cantidades de recarga para apuntar a los usuarios con campañas personalizadas dentro de sus presupuestos de recarga.
Lógica de activación
Para registrar este evento correctamente, debes activarlo cuando el usuario complete la recarga.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | Cadena | 2000 | La cantidad de la recarga. |
top_up_id | Cadena | 397 | El ID de la recarga. |
payment_method_type | Cadena | credit card, local payment | Método de pago utilizado. |
Ejemplos de código
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);
Recarga no satisfactoria
Nombre del evento: af_top_up_unsuccessful
Finalidad
Puedes registrar los eventos de recarga no satisfactorios y compararlos con otros datos para aprender más acerca de tus usuarios. Por ejemplo, registrando las recargas no satisfactorias se puede saber cuántos usuarios intentan recargar pero no lo consiguen.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario intenta recargar pero la acción falla.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
error_reason | Cadena | exceeded_daily_limit | La razón de la falla de la recarga. |
Ejemplos de código
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);
Suscripción completada
Nombre del evento: af_subscription_complete
Finalidad
Al registrar los eventos de suscripción por parte de los usuarios, podrás hacer lo siguiente:
- Consultar qué campañas atraen a los usuarios que se suscriben.
- Comparar el número de usuarios suscritos con el de usuarios no suscritos.
- Registrar los ingresos generados por las suscripciones y atribuirlos a las campañas y a las fuentes de medios.
Lógica de activación
Activa este evento en una de dos situaciones:
- Cuando el usuario se suscribe satisfactoriamente.
- Cuando se renueva una suscripción.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_subscription_type | Cadena | Monthly 30 GB | Tipo de suscripción. |
af_revenue | Cadena | 555 | Monto de la suscripción. |
Ejemplos de código
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);
Selección de paquete
Nombre del evento: select_package
Finalidad
Puedes registrar cuándo un usuario decide comprar un paquete pero aún no ha hecho el pago. Esto puede ayudarte, por ejemplo, porque al registrar los eventos de selección de paquetes, puedes enviar a estos usuarios recordatorios y anuncios de retargeting para que completen sus suscripciones.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario selecciona un paquete, pero no ha completado el pago.
Recommended fields
Field name | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
price | Cadena | 50000 | El precio de la suscripción. |
af_content_type | Cadena | Data 5 GB | Si el certificado se expidió. |
Ejemplos de código
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);