De un vistazo: Registra los eventos post-instalación y atribúyelos a la fuente de medios de origen enviando eventos enriquecidos de SDK o S2S a AppsFlyer.
¿Por qué registrar los eventos in-app enriquecidos?
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).
- Para garantizar la privacidad de tus usuarios, no completes los valores de eventos in-app con información que pueda identificarlos directamente. Por ejemplo, dirección de correo electrónico, nombre, número de identidad y código postal en algunas ubicaciones.
La API logEvent
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.
Constante de nombre de evento (Android): AFInAppEventType.LEVEL_ACHIEVED
Constante de nombre de evento (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
Campos recomendados: af_level, af_score
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.ADD_PAYMENT_INFO
Constante de nombre de evento (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
Campos recomendados: af_success
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.ADD_TO_CART
Constante de nombre de evento (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
Campos recomendados: af_price, af_content_type, af_content_id, af_content, af_currency, af_quantity
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.ADD_TO_WISH_LIST
Constante de nombre de evento (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
Campos recomendados: af_price, af_content_type, af_content_id, af_content, af_currency, af_quantity
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.COMPLETE_REGISTRATION
Constante de nombre de evento (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
Campos recomendados: af_registration_method
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.TUTORIAL_COMPLETION
Constante de nombre de evento (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
Campos recomendados: af_success, af_content_id, af_content
Asignación de campos:
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).
Constante de nombre de evento (Android): AFInAppEventType.INITIATED_CHECKOUT
Constante de nombre de evento (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
Campos recomendados: af_price, af_content_type, af_content_id, af_content, af_quantity, af_payment_info_available, af_currency
Asignación de campos:
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).
Constante de nombre de evento (Android): AFInAppEventType.PURCHASE
Constante de nombre de evento (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
Campos recomendados: af_revenue, af_content_type, af_content_id, af_content, af_price, af_quantity, af_currency, af_order_id
Asignación de campos:
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_price |
- | 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 de AppsFlyer. También cuenta los ingresos negativos, de cancelaciones o reembolsos.
**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.
Constante de nombre de evento (Android): AFInAppEventType.SUBSCRIBE
Constante de nombre de evento (iOS): AFEventSubscribe
Evento asignado a Facebook: Subscribe
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
Snapchat: SUBSCRIBE
Campos recomendados: af_revenue, af_currency
Asignación de campos:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_revenue |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
af_subscription_id |
subscription_id |
- |
- |
- |
- |
Comenzar prueba
Nombre de evento: af_start_trial
Descripción: se usa para registrar el inicio de una prueba gratis de un producto.
Constante de nombre de evento (Android): AFInAppEventType.START_TRIAL
Constante de nombre de evento (iOS): AFEventStartTrial
Evento asignado a Facebook: StartTrial
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
Snapchat: START_TRIAL
Campos recomendados: af_price, af_currency
Asignación de campos:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
af_subscription_id |
subscription_id |
- |
- |
- |
- |
Rate
Nombre de evento: af_rate
Descripción: se usa para registrar eventos de calificación de aplicaciones/artículos.
Constante de nombre de evento (Android): AFInAppEventType.RATE
Constante de nombre de evento (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
Campos recomendados: af_rating_value, af_content_type, af_content_id, af_content, af_max_rating_value
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.SEARCH
Constante de nombre de evento (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
Campos recomendados: af_content_type, af_search_string, af_success
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.SPENT_CREDIT
Constante de nombre de evento (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
Campos recomendados: af_price, af_content_type, af_content_id, af_content
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.ACHIEVEMENT_UNLOCKED
Constante de nombre de evento (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
Campos recomendados: af_description
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.CONTENT_VIEW
Constante de nombre de evento (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
Campos recomendados: af_price, af_content_type, af_content_id, af_content, af_currency
Asignación de campos:
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.
Constante de nombre de evento (Android): usa la cadena "af_list_view" en lugar de:
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
Constante de nombre de evento (iOS): AFEventListView
Evento asignado a Facebook:
Evento asignado a Twitter:
Evento asignado a Criteo: viewListing
Google Ads: view_item_list
Snapchat: LIST_VIEW
Campos recomendados: af_content_type, af_content_list
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.AD_CLICK
Constante de nombre de evento (iOS): AFEventAdClick
Evento asignado a Facebook: AdClick
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
Snapchat: AD_CLICK
Campos recomendados: af_adrev_ad_type
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.AD_VIEW
Constante de nombre de evento (iOS): AFEventAdView
Evento asignado a Facebook: AdImpression
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: Ninguno
Snapchat: AD_VIEW
Campos recomendados: af_adrev_ad_type
Asignación de campos:
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).
Constante de nombre de evento (Android): AFInAppEventType.TRAVEL_BOOKING
Constante de nombre de evento (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
Campos recomendados: 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
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.SHARE
Constante de nombre de evento (iOS): AFEventShare
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: SHARE
Evento asignado a Criteo: Ninguno
Google Ads: share
Snapchat: SHARE
Campos recomendados: af_description
Asignación de campos:
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).
Constante de nombre de evento (Android): AFInAppEventType.INVITE
Constante de nombre de evento (iOS): AFEventInvite
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: INVITE
Evento asignado a Criteo: Ninguno
Google Ads: invite
Snapchat: INVITE
Campos recomendados: ninguno
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.LOGIN
Constante de nombre de evento (iOS): AFEventLogin
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: LOGIN
Evento asignado a Criteo: Ninguno
Google Ads: login
Campos recomendados: ninguno
Re-Engagement
Nombre de Evento: af_re_engage
Descripción: se usa para registrar eventos de recaptación de usuarios.
Constante de nombre de evento (Android): AFInAppEventType.RE_ENGAGE
Constante de nombre de evento (iOS): AFEventReEngage
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: RE_ENGAGE
Evento asignado a Criteo: Ninguno
Google Ads: custom_event
Campos recomendados: ninguno
Asignación de campos:
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.
Constante de nombre de evento (Android): AFInAppEventType.OPENED_FROM_PUSH_NOTIFICATION
Constante de nombre de evento (iOS): AFEventOpenedFromPushNotification
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: Ninguno
Evento asignado a Criteo: Ninguno
Google Ads: notification_open
Campos recomendados: ninguno
Actualización
Nombre de evento: af_update
Descripción: se usa para registrar eventos de actualización.
Constante de nombre de evento (Android): AFInAppEventType.UPDATE
Constante de nombre de evento (iOS): AFEventUpdate
Evento asignado a Facebook: Ninguno
Evento asignado a Twitter: UPDATE
Evento asignado a Criteo: Ninguno
Google Ads: app_update
Campos recomendados: af_content_id
Asignación de campos:
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:
Constante de cadena del parámetro | 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 control y 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
Puedes enviar valores de ingresos con cualquier nombre de parámetro y evento. Sin embargo, para registrar los ingresos (incluidos los ingresos negativos) en el raw data y los datos agregados de AppsFlyer, DEBES usar el parámetro af_revenue. Utilízalo siempre con los eventos in-app que representan una generación real de ingresos en tu 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.
Son útiles cuando quieres ver agrupadas varias acciones de usuario que estén estrechamente relacionadas, p. ej. agregar varios productos al carrito en una sola sesión.
Ejemplo:
{
"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
- Dispositivos móviles con Windows
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.
Campos recomendados
Este evento puede enviarse sin ningún campo adicional.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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:
- Cuando un usuario finaliza el tutorial. Se enviará un evento con un campo que indica que se completó correctamente el tutorial.
- Cuando un usuario comienza el tutorial, pero lo abandona sin finalizarlo. Cuando el usuario lo abandona, se envía un evento con un campo que indica que el usuario no completó el tutorial.
Campos recomendados
Nombre de campo | 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:
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Este evento se puede enviar sin campos adicionales.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Consejo
Si hay varios productos de distintas categorías, usa matrices para enviar los datos.
Nombre de campo | 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 qué 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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);
Entretenimiento: reproducción en línea
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Este evento se puede enviar sin campos adicionales.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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);
Finanzas: banca
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.
Campos recomendados
Este evento puede enviarse sin ningún campo adicional.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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: préstamos P2P
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Puedes enviar este evento sin campos adicionales.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Este evento puede enviarse sin ningún campo adicional.
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.
Campos recomendados
Nombre de campo | 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:
- Cuando un usuario finaliza el tutorial. Se enviará un evento con un campo que indica que se completó correctamente el tutorial.
- Cuando un usuario comienza el tutorial, pero lo abandona sin finalizarlo. Cuando el usuario lo abandona, se envía un evento con un campo que indica que el usuario no completó el tutorial.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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 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.
Campos recomendados
Nombre de campo | 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);
Navegación: transporte privado
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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
El evento Finalización de reserva de viaje que se analizó anteriormente tiene un campo llamado credits_earned
. Este campo registra los créditos que el pasajero que gana por cada viaje. A continuación, el pasajero puede canjear estos créditos por cupones, vales o descuentos. Al registrar estos eventos, podrás hacer lo siguiente:
- 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.
Campos recomendados
Nombre de campo | 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);
Viajes: reserva de vuelos
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
La capacidad de reservar vuelos es la función principal de la aplicación. Al registrar este evento con todos sus campos, podrás obtener insights sobre:
- 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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
Las aplicaciones de reserva de vuelos permiten que los usuarios busquen vuelos y ofertas. Una manera de conocer las preferencias de los usuarios es registrar los parámetros de búsqueda. Al registrar el evento de búsqueda y sus campos, podrás hacer lo siguiente:
- 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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);
Viajes: reserva de hoteles
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Este evento puede enviarse sin ningún campo adicional.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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á ubicado 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.
Campos recomendados
Nombre de campo | 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á ubicado 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.
Campos recomendados
Nombre de campo | 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á ubicado 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.
Campos recomendados
Nombre de campo | 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á ubicado 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.
Campos recomendados
Nombre de campo | 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);
Cuidado de la salud
Las aplicaciones del cuidado de la salud permiten a los usuarios adquirir seguros de salud, reservar citas, recibir consejo médico, etc. Los eventos in-app que recomendamos registrar en las aplicaciones de salud incluyen compras y reservas. A continuación, verás algunos ejemplos de cómo podrás beneficiarte con el registro de estos eventos:
- Registrar las compras te ayuda a comprender qué medicamentos son los más necesarios y requeridos.
- Registrar los planes de seguros te ayuda a comprender qué paquetes interesan a los usuarios.
- Registrar las reservas te ayuda a comprender qué asuntos médicos preocupan más a los usuarios.
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.
Campos recomendados
Este evento puede enviarse sin ningún campo adicional.
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.
Campos recomendados
Nombre de campo | 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);
Cita confirmada
Nombre del evento: confirmed_appointment
Finalidad
Puedes registrar cuando un usuario reserva cualquier tipo de cita. Esto puede ayudarte, por ejemplo, ya que cuando registres eventos de confirmación de citas, puedes enviar a estos usuarios anuncios de retargeting y recordatorios para chequeos regulares y citas futuras.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario reserva una cita.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Nombre del doctor. |
appointment number | Cadena | 001 | Número de la cita. |
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);
Cita cancelada
Nombre del evento: canceled_appointment
Finalidad
Puedes registrar cuando un usuario cancela una cita. Esto puede ayudarte, por ejemplo, ya que cuando registres eventos de cancelación de citas, puedes enviar a estos usuarios anuncios de retargeting para reprogramar sus citas.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario cancela una cita.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Nombre del doctor. |
appointment number | Cadena | 001 | Número de la cita. |
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);
Primera reserva del doctor
Nombre del evento: doctor_first_booking
Finalidad
Puedes registrar cuando un usuario reserva su primera cita. Esto puede ayudarte, por ejemplo, ya que al registrar los eventos de primera cita, puedes enviar a estos usuarios promociones/anuncios de retargeting.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario realiza su primera cita.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Nombre del doctor. |
specialty | Cadena | neurología | Especialidad médica. |
duration | Cadena | Chat de 30 minutos | Duración de la cita. |
price | Cadena | 50 | Precio de la cita. |
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);
Primera cita en el laboratorio
Nombre del evento: lab_first_appointment
Finalidad
Puedes registrar cuando un usuario reserva su primera cita. Esto puede ayudarte, por ejemplo, ya que al registrar los eventos de primera cita, puedes enviar a estos usuarios promociones/anuncios de retargeting.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario realiza su primera cita.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
lab selection | Cadena | revisión de cuerpo entero | Nombre del tipo de laboratorio. |
quantity | Cadena | 2 | Cantidad solicitada. |
price | Cadena | 500 | Precio del laboratorio. |
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);
Primera compra en farmacia
Nombre del evento: pharmacy_first_purchase
Finalidad
Puedes registrar cuando un usuario hace su primera compra de productos farmacéuticos. Esto puede ayudarte, por ejemplo, ya que al registrar los eventos de la primera compra, puedes enviar a estos usuarios promociones/anuncios de retargeting.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario realiza su primera compra.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
medicine name | Cadena | rhinos | Nombre del medicamento. |
quantity | Cadena | 1 | Cantidad solicitada. |
price | Cadena | 10 | Precio del medicamento. |
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);
Reserva en el médico
Nombre del evento: doctor_booking
Finalidad
Puedes registrar cuando un usuario reserva una cita en persona con un médico. Esto puede ayudarte, por ejemplo, ya que al registrar estos eventos de citas, te proporcionan información sobre las necesidades e intereses del usuario.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario programa una cita en persona.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Nombre del doctor. |
specialty | Cadena | neurología | Especialidad médica. |
duration | Cadena | Chat de 30 minutos | Duración de la cita. |
price | Cadena | 50 | Precio de la cita. |
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 con el doctor
Nombre del evento: chat_doctor
Finalidad
Si tu aplicación permite a los usuarios programar chats en directo con un médico, puedes registrar cuando un usuario ha reservado un chat de este tipo. Esto puede ayudarte, por ejemplo, ya que al registrar estos eventos de reserva, te proporcionan información sobre las necesidades e intereses del usuario.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario realiza una reserva.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
doctor name | Cadena | Robert James | Nombre del doctor. |
specialty | Cadena | neurología | Especialidad médica. |
duration | Cadena | Chat de 30 minutos | Duración de la cita. |
price | Cadena | 50 | Precio de la cita. |
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);
Cita en el laboratorio
Nombre del evento: lab_appointment
Finalidad
Puedes registrar cuando un usuario reserva una cita en el laboratorio. Esto puede ayudarte, por ejemplo, ya que al registrar los eventos de citas, puedes enviar a estos usuarios promociones/anuncios de retargeting.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario reserva una cita en el laboratorio.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
lab selection | Cadena | revisión de cuerpo entero | Nombre del tipo de laboratorio. |
quantity | Cadena | 2 | Cantidad solicitada. |
price | Cadena | 500 | Precio del laboratorio. |
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);
Compra de farmacia
Nombre del evento: pharmacy_purchase
Finalidad
Puedes registrar cuando un usuario hace una compra de productos farmacéuticos. Esto puede ayudarte, por ejemplo, ya que al registrar los eventos de compra, puedes enviar a estos usuarios promociones/anuncios de retargeting.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario realiza una compra farmacéutica.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
medicine name | Cadena | rhinos | Nombre del medicamento. |
quantity | Cadena | 1 | Cantidad solicitada. |
price | Cadena | 10 | Precio del medicamento. |
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
Nombre del evento: add_to_cart
Finalidad
Puedes registrar cuando un usuario agrega un medicamento al carrito de compras. Esto puede ayudarte, por ejemplo, ya que al registrar los eventos de agregar al carrito, puedes enviar a estos usuarios promociones/recordatorios para que finalicen el proceso de compra.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario agrega un producto a su carrito de compras.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
medicine name | Cadena | rhinos | Nombre del medicamento. |
quantity | Cadena | 1 | Cantidad solicitada. |
price | Cadena | 10 | Precio del medicamento. |
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);
Membresía de seguro
Nombre del evento: insurance_membership
Finalidad
Si los partners de tu app se asocian con una aseguradora para proporcionar opciones de seguro, puedes registrar cuando un usuario se registre en el seguro. Esto puede ayudarte, por ejemplo, ya que cuando registras eventos de registro de membresía de seguro, aprendes más sobre tus usuarios y puedes volver a dirigirte a ellos en consecuencia.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario obtiene una membresía del seguro.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
insurance name | Cadena | DavidShield | Nombre de la empresa de seguros. |
insurance type | Cadena | premium | Tipo de plan de seguro. |
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);
Emisión de recibos
Nombre del evento: receipt_issuance
Finalidad
Registra cuando tus usuarios reciben recibos. Los usuarios con un recibo pueden reclamar el costo de la cita con el médico, el laboratorio o los medicamentos de una aseguradora. Y esto puede ayudarte, por ejemplo, ya que cuando registras los eventos de emisión de recibos, utilizas los datos para campañas de retargeting sobre la cobertura de los seguros personales.
Lógica de activación
La mejor manera de registrar este evento es activarlo cuando el usuario obtiene un recibo.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
Nombre de la aplicación | Cadena | Aplicación del cuidado de la salud | Nombre de tu aplicación |
doctor name | Cadena | Robert James | Nombre del doctor. |
consultation description | Cadena | fiebre | Descripción del estado de salud. |
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
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.
Campos recomendados
Nombre de campo | Tipo | Ejemplo de valor | Descripción |
---|---|---|---|
af_revenue | float | 50 | Los ingresos de la compra. |
af_currency | Cadena | USD | El código de divisa. |
af_content_type | Cadena | laboratorio | El nombre de la compra. |
af_order_id | Cadena | 9277 | El ID del pedido. |
payment_method_type | Cadena | tarjeta de crédito, local | Método de pago. |
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
Los fondos de recarga se pueden usar para comprar cualquier paquete o 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Este evento puede enviarse sin ningún campo adicional.
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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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.
Campos recomendados
Nombre de campo | 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);