Visão geral: registre eventos pós-instalação e atribua-os à fonte de mídia de origem ao enviar eventos avançados SDK ou S2S para a AppsFlyer.
Por que registrar eventos avançados no aplicativo?
Eventos in-app avançados fornecem aos anunciantes a capacidade de registrar eventos pós-instalação e atribuí-los à fonte de mídia de origem.
Quando os usuários realizam registros, concluem os tutoriais, adicionam itens ao carrinho de compras ou fazem compras, os dados de eventos in-app podem registrar os eventos com os detalhes.
Eventos in-app avançados são a ferramenta ideal para determinar o valor dos usuários do aplicativo e a qualidade do tráfego com origem em diferentes fontes de mídia. A implementação de eventos in-app avançados é opcional, mas recomendamos que você faça isso. Também recomendamos que você defina e use os mesmos nomes e estruturas dos eventos in-app em todas as plataformas, para um melhor alinhamento dos dados brutos.
Respeitando a privacidade de seus usuários
- A AppsFlyer valoriza e respeita a sua privacidade e dos usuários do seu aplicativo.
- Não coletamos nem aceitamos informações de identificação pessoal (PII).
- Para garantir a privacidade de seus usuários, não preencha os valores de eventos in-app com informações que possam identificá-los diretamente. Por exemplo, endereço de e-mail, nome, número de identidade e, em alguns locais, código postal.
A API logEvent
Um evento no aplicativo é composto por um nome de evento e parâmetros de evento.
Você pode usar qualquer sequência de nome de evento de sua escolha. No entanto, o SDK da AppsFlyer contém nomes de eventos recomendados por meio de enumerações e definições (consulte a guia Tipos de eventos para obter a lista de eventos recomendados e nomes de parâmetros).
Os nomes de eventos diferenciam maiúsculas de minúsculas, o que significa que af_purchase e af_PURCHASE são dois eventos diferentes nos dados brutos. No entanto, em relatórios agregados (por exemplo, Visão Geral, Eventos), eles podem ser exibidos como um único evento. Portanto, recomendamos o uso apenas de nomes de parâmetros e de eventos em letras minúsculas.
O comprimento dos valores do evento é limitado a 1000 caracteres. Não exceda esse limite. Podemos truncá-lo se você o fizer.
Sintaxe:
public static void logEvent(Context context, String eventName, Map eventValues)
-
Contexto - Use
getApplicationContext()
- eventName
- Qualquer sequência de caracteres para definir o nome do evento.
- eventValues
- Um mapa de parâmetros do evento que compreendem um evento avançado.
- (void) logEvent:(NSString *)eventName withValues:(NSDictionary*)values
-
eventName - Qualquer sequência de caracteres para definir o nome do evento.
- valores
- Um dicionário de parâmetros do evento que compreendem um evento avançado.
Eventos in-app para aplicativos híbridos
Aplicativos híbridos, que combinam visualizações nativas e conteúdo HTML, também podem gravar eventos in-app. No entanto, como o SDK só envia eventos do lado nativo, os desenvolvedores precisam encaminhar todos os dados do evento para o código nativo. Veja as instruções no nosso guia sobre eventos in-app para aplicativos híbridos.
Atenção
Cada rede tem suas próprias limitações em relação aos caracteres permitidos nos nomes de eventos. Para evitar problemas, use apenas caracteres alfanuméricos em minúsculas (a–z e 0–9) para os nomes de eventos in-app.
Tipos de eventos no aplicativo
A seção a seguir descreve a estrutura recomendada de cada tipo de evento juntamente com os mapeamentos de parâmetros para Facebook, Twitter, Criteo, Google Ads e Snapchat.
- Os seguintes parâmetros, como parte do valor dos eventos in-app avançados, estão disponíveis apenas nos relatórios de dados brutos. Dados brutos são um recurso premium.
- Se você incluir a URL de referência como um valor de evento, ela deverá ser uma URL codificada.
Observação
Consulte a aba Verticais neste artigo para obter trechos de código por vertical, para Android (Java), iOS (Obj-C e Swift) e Unity.
Estruturas recomendadas de eventos no aplicativo
Os seguintes eventos no aplicativo são definidos como parte da interface AFInAppEventType e são recomendados:
Nível atingido
Nome do evento: af_level_achieved
Descrição: usado para registrar eventos no nível do jogo
Constante de nome do evento (Android): AFInAppEventType.LEVEL_ACHIEVED
Constante de nome do evento (iOS): AFEventLevelAchieved
Evento mapeado do Facebook: fb_mobile_level_achieved
Evento mapeado do Twitter: LEVEL_ACHIEVED
Evento mapeado do Criteo: userLevel
Google Ads: level_up
Snapchat: LEVEL_COMPLETE
Campos recomendados: af_level, af_score
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_level | fb_level | level | ui_level | level_up | level |
af_score | - | - | - | score | - |
Adicionar informação de pagamento
Nome do evento: af_add_payment_info
Descrição: usado para registrar o status de configuração das informações de pagamento
Constante de nome do evento (Android): AFInAppEventType.ADD_PAYMENT_INFO
Constante de nome do evento (iOS): AFEventAddPaymentInfo
Evento mapeado do Facebook: fb_mobile_add_payment_info
Evento mapeado do Twitter: ADDED_PAYMENT_INFO
Evento mapeado do Criteo: None
Google Ads: add_payment_info
Snapchat: ADD_BILLING
Campos recomendados: af_success
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_success | fb_success | user_payment_info | - | add_payment_info | success |
Adicionar ao carrinho
Nome do evento: af_add_to_cart
Descrição: usado para registrar eventos de adição ao carrinho de itens específicos
Constante de nome do evento (Android): AFInAppEventType.ADD_TO_CART
Constante de nome do evento (iOS): AFEventAddToCart
Evento mapeado do Facebook: fb_mobile_add_to_cart
Evento mapeado do Twitter: ADD_TO_CART
Evento mapeado do 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
Mapeamento de campo:
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 relatar um evento que contém vários itens, clique aqui.
Adicionar à lista de desejos
Nome do evento: af_add_to_wishlist
Descrição: usado para registrar eventos de adição à lista de desejos de itens específicos.
Constante de nome do evento (Android): AFInAppEventType.ADD_TO_WISH_LIST
Constante de nome do evento (iOS): AFEventAddToWishlist
Evento mapeado do Facebook: fb_mobile_add_to_wishlist
Evento mapeado do Twitter: ADD_TO_WISHLIST
Evento mapeado do Criteo: None
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
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | - | Preço | price |
af_content_type | fb_content_type | content_type | - | categoria de item | 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 relatar um evento que contém vários itens, clique aqui.
Concluir cadastro
Nome do evento:af_complete_registration
Descrição: usado para registrar métodos de registro do usuário
Constante de nome do evento (Android): AFInAppEventType.COMPLETE_REGISTRATION
Constante de nome do evento (iOS): AFEventCompleteRegistration
Evento mapeado do Facebook: fb_mobile_complete_registration
Evento mapeado do Twitter: SIGN_UP
Evento mapeado do Criteo: None
Google Ads: sign_up
Snapchat: SIGN_UP
Campos recomendados: af_registration_method
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_registration_ method |
fb_registration_ method |
registration_method | - | registration_method | sign_up_method |
Conclusão do tutorial
Nome do evento: af_tutorial_completion
Descrição: usado para registrar conclusões de tutoriais
Constante de nome do evento (Android): AFInAppEventType.TUTORIAL_COMPLETION
Constante de nome do evento (iOS): AFEventTutorial_completion
Evento mapeado do Facebook: fb_mobile_tutorial_completion
Evento mapeado do Twitter: TUTORIAL_COMPLETE
Evento mapeado do Criteo: None
Google Ads: tutorial_complete
Snapchat: COMPLETE_TUTORIAL
Campos recomendados: af_success, af_content_id, af_content
Mapeamento de campo:
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 relatar um evento que contém vários itens, clique aqui.
Checkout iniciado
Nome do evento: af_initiated_checkout
Descrição: usado para registrar eventos de finalização da compra
Constante de nome do evento (Android): AFInAppEventType.INITIATED_CHECKOUT
Constante de nome do evento (iOS): AFEventInitiatedCheckout
Evento mapeado do Facebook: fb_mobile_initiated_checkout
Evento mapeado do Twitter: CHECKOUT_INITIATED
Evento mapeado do 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
Mapeamento de campo:
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 relatar um evento que contém vários itens, clique aqui.
Compra
Nome do evento: af_purchase
Descrição: usado para registrar eventos de compra (e associar a receita a eles)
Constante de nome do evento (Android): AFInAppEventType.PURCHASE
Constante de nome do evento (iOS): AFEventPurchase
Evento mapeado do Facebook: fb_mobile_purchase
Evento mapeado do Twitter: PURCHASE
Evento mapeado pela 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
Mapeamento de campo:
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 |
Categoria |
af_content_id |
fb_content_id |
content_id |
id |
item_id |
item_ids |
- |
af_content |
fb_content |
- |
- |
- |
- |
Meta de conversão personalizada |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
Moeda |
af_quantity |
fb_num_items |
number_items |
quantity |
quantity |
number_items |
quantidade |
af_validated |
- |
- |
- |
VALIDADO |
success |
Voucher |
af_receipt_id |
- |
- |
transaction_id |
transaction_id |
- |
Referência de conversão |
af_order_id |
fb_order_id |
- |
- |
order_id |
transaction_id |
Clickref |
af_content_list |
fb_content_id |
- |
- |
item_id |
- |
Meta de item 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 | - | valor |
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 é contabilizado como receita na plataforma da AppsFlyer. Também conta a receita negativa, de cancelamentos ou reembolsos.
** af_price – use af_price como um parâmetro monetário que não é contabilizado como receita (como em um evento "Adicionar ao carrinho"). Esse parâmetro se refere ao preço do item individual. A quantidade total de todas as compras aparece sob o parâmetro af_revenue.
Para obter uma lista de símbolos de moedas aceitos pelo AppsFlyer, clique aqui.
*Para relatar um evento que contém vários itens, clique aqui.
Assinatura
Nome do evento: af_subscribe
Descrição: usado para registrar compras de assinaturas pagas
Constante de nome do evento (Android): AFInAppEventType.SUBSCRIBE
Constante de nome do evento (iOS): AFEventSubscribe
Evento mapeado do Facebook: Subscribe
Evento mapeado do Criteo: nenhum
Evento mapeado do Criteo: None
Google Ads: nenhum
Snapchat: SUBSCRIBE
Campos recomendados: af_revenue, af_currency
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_revenue |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
af_subscription_id |
subscription_id |
- |
- |
- |
- |
Iniciar avaliação
Nome do evento: af_start_trial
Descrição: usado para registrar o início de uma avaliação gratuita de um produto
Constante de nome do evento (Android): AFInAppEventType.START_TRIAL
Constante de nome do evento (iOS): AFEventStartTrial
Evento mapeado do Facebook: StartTrial
Evento mapeado do Criteo: nenhum
Evento mapeado do Criteo: None
Google Ads: nenhum
Snapchat: START_TRIAL
Campos recomendados: af_price, af_currency
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_price |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
af_subscription_id |
subscription_id |
- |
- |
- |
- |
Rate
Nome do evento: af_rate
Descrição: usado para registrar eventos de classificação do aplicativo/item.
Constante de nome do evento (Android): AFInAppEventType.RATE
Constante de nome do evento (iOS): AFEventRate
Evento mapeado do Facebook: fb_mobile_rate
Evento mapeado do Twitter: RATED
Evento mapeado do Criteo: None
Google Ads: submit_rating
Snapchat: RATE
Campos recomendados: af_rating_value, af_content_type, af_content_id, af_content, af_max_rating_value
Mapeamento de campo:
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 relatar um evento que contém vários itens, clique aqui.
Pesquisar
Nome do evento: af_search
Descrição: usado para registrar eventos de pesquisa
Constante de nome do evento (Android): AFInAppEventType.SEARCH
Constante de nome do evento (iOS): AFEventSearch
Evento mapeado do Facebook: fb_mobile_search
Evento mapeado do Twitter: SEARCH
Evento mapeado do Criteo: viewSearch
Google Ads: view_search_results
Google Ads: PROCURAR
Campos recomendados: af_content_type, af_search_string, af_success
Mapeamento de campo:
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 gastos
Nome do evento: af_spent_credits
Descrição: usado para registrar eventos de gasto de créditos
Constante de nome do evento (Android): AFInAppEventType.SPENT_CREDIT
Constante de nome do evento (iOS): AFEventSpentCredits
Evento mapeado do Facebook: fb_mobile_spent_credits
Evento mapeado do Twitter: SPENT_CREDITS
Evento mapeado pela Criteo: transactionConfirmation
Google Ads: spend_virtual_currency
Snapchat: SPENT_CREDITS
Campos recomendados: af_price, af_content_type, af_content_id, af_content
Mapeamento de campo:
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 relatar um evento que contém vários itens, clique aqui.
Conquista desbloqueada
Nome do evento: af_achievement_unlocked
Descrição: usado para registrar eventos de desbloqueio de conquistas
Constante de nome do evento (Android): AFInAppEventType.ACHIEVEMENT_UNLOCKED
Constante de nome do evento (iOS): AFEventAchievementUnlocked
Evento mapeado do Facebook: fb_mobile_achievement_unlocked
Evento mapeado do Twitter: ACHIEVEMENT_UNLOCKED
Evento mapeado do Criteo: achievement
Google Ads: unlock_achievement
Snapchat: ACHIEVEMENT_UNLOCKED
Campos recomendados: af_description
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
fb_description |
description |
ui_achievement |
description |
description |
Exibição de conteúdo
Evento: af_content_view
Descrição: usado para registrar eventos de exibição de conteúdo
Constante de nome do evento (Android): AFInAppEventType.CONTENT_VIEW
Constante de nome do evento (iOS): AFEventContentView
Evento mapeado do Facebook: fb_mobile_content_view
Evento mapeado do Twitter: CONTENT_VIEW
Evento mapeado do Criteo: viewProduct
Google Ads: view_item
Snapchat: VIEW_CONTENT
Campos recomendados: af_price, af_content_type, af_content_id, af_content, af_currency
Mapeamento de campo:
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_ |
- | - | - | - |
Exibição de lista
Nome do evento: af_list_view
Descrição: usado para registrar eventos de exibição de lista
Constante de nome do evento (Android): no lugar disso, use a string "af_list_view":
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
Constante de nome do evento (iOS): AFEventListView
Evento mapeado do Facebook:
Evento mapeado do Twitter:
Evento mapeado do Criteo: viewListing
Google Ads: view_item_list
Snapchat: LIST_VIEW
Campos recomendados: af_content_type, af_content_list
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_content_type |
- |
- |
- |
item_Category |
item_category |
af_content_list |
- |
- |
- |
item_id |
- |
Cliques em anúncios
Nome do evento: af_ad_click
Descrição: usado para registrar cliques em anúncios exibidos no aplicativo
Constante de nome do evento (Android): AFInAppEventType.AD_CLICK
Constante de nome do evento (iOS): AFEventAdClick
Evento mapeado do Facebook: AdClick
Evento mapeado do Criteo: nenhum
Evento mapeado do Criteo: None
Google Ads: nenhum
Snapchat: AD_CLICK
Campos recomendados: af_adrev_ad_type
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
Exibição do anúncio
Nome do evento: af_ad_view
Descrição: usado para registrar visualizações em anúncios exibidos no aplicativo
Constante de nome do evento (Android): AFInAppEventType.AD_VIEW
Constante de nome do evento (iOS): AFEventAdView
Evento mapeado do Facebook : AdImpression
Evento mapeado do Criteo: nenhum
Evento mapeado do Criteo: None
Google Ads: nenhum
Snapchat: AD_VIEW
Campos recomendados: af_adrev_ad_type
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
Reservas de viagem
Nome do evento: af_travel_booking
Descrição: usado para registrar eventos de reservas de viagem (e associar receita a eles)
Constante de nome do evento (Android): AFInAppEventType.TRAVEL_BOOKING
Constante de nome do evento (iOS): AFEventTravelBooking
Evento mapeado do Facebook: fb_mobile_purchase
Evento mapeado do Twitter: PURCHASE
Evento mapeado pela 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
Mapeamento de campo:
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 |
Compartilhar
Nome do evento: af_share
Descrição: usado para registrar eventos de compartilhamento
Constante de nome do evento (Android): AFInAppEventType.SHARE
Constante de nome do evento (iOS): AFEventShare
Evento mapeado do Facebook: Nenhum
Evento mapeado do Twitter: SHARE
Evento mapeado do Criteo: None
Google Ads: compartilhar
Snapchat: SHARE
Campos recomendados: af_description
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
Convite
Nome do evento: af_invite
Descrição: usado para registrar eventos de convites (sociais)
Constante de nome do evento (Android): AFInAppEventType.INVITE
Constante de nome do evento (iOS): AFEventInvite
Evento mapeado do Facebook: nenhum
Evento mapeado do Twitter: INVITE
Evento mapeado do Criteo: None
Google Ads: convidar
Snapchat: INVITE
Campos recomendados: Nenhum
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | Snapchat | ||
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
Login
Nome do evento: af_login
Descrição: usado para registrar eventos de login do usuário
Constante de nome do evento (Android): AFInAppEventType.LOGIN
Constante de nome do evento (iOS): AFEventLogin
Evento mapeado do Facebook: nenhum
Evento mapeado do Twitter: LOGIN
Evento mapeado do Criteo: None
Google Ads: login
Campos recomendados: Nenhum
Reengajar
Nome do evento: af_re_engage
Descrição: usado para registrar eventos de reengajamento do usuário
Constante de nome do evento (Android): AFInAppEventType.RE_ENGAGE
Constante de nome do evento (iOS): AFEventReEngage
Evento mapeado do Facebook: Nenhum
Evento mapeado do Twitter: RE_ENGAGE
Evento mapeado do Criteo: None
Google Ads: custom_event
Campos recomendados: Nenhum
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_description |
- |
description |
- |
description |
Aberto a partir de notificação por push
Nome do evento: af_opened_from_push_notification
Descrição: usado para registrar eventos de abertura do aplicativo a partir de notificação push
Constante de nome do evento (Android): AFInAppEventType.OPENED_FROM_PUSH_NOTIFICATION
Constante de nome do evento (iOS): AFEventOpenedFromPushNotification
Evento mapeado do Facebook: nenhum
Evento mapeado do Criteo: nenhum
Evento mapeado do Criteo: None
Google Ads: notification_open
Campos recomendados: Nenhum
Atualização
Nome do evento: af_update
Descrição: usado para registrar eventos de atualização
Constante de nome do evento (Android): AFInAppEventType.UPDATE
Constante de nome do evento (iOS): AFEventUpdate
Evento mapeado do Facebook: nenhum
Evento mapeado do Twitter: UPDATE
Evento mapeado do Criteo: None
Google Ads: app_update
Campos recomendados: af_content_id
Mapeamento de campo:
AppsFlyer | Criteo | Google Ads | ||
---|---|---|---|---|
af_content_id |
- |
content_id |
- |
item_id |
*Para relatar um evento que contém vários itens, clique aqui.
Além dos eventos descritos acima, que podem ser mapeados para eventos predefinidos de várias redes, o Facebook oferece eventos adicionais que são enviados sem atributos.
Parâmetros opcionais
Além dos parâmetros recomendados que podem ser passados com cada evento, os parâmetros a seguir são definidos como parte da interface AFInAppEventParameterName
e podem ser enviados como parte do valor do dicionário de eventos:
Constante da sequência de caracteres do parâmetro | Nome da sequência de caracteres do parâmetro | Tipo de valor recomendado |
---|---|---|
REVENUE (detalhes) |
af_revenue |
Float |
PRICE (detalhes) |
af_price |
Float |
LEVEL |
af_level |
Int |
SUCCESS |
af_success |
Boolean |
CONTENT_TYPE |
af_content_type |
Sequência de caracteres |
CONTENT_LIST |
af_content_list |
Matriz de sequências de caracteres |
CONTENT_ID |
af_content_id |
Sequência de caracteres |
CURRENCY |
af_currency |
Sequência de caracteres |
REGISTRATION_METHOD |
af_registration_method |
Sequência de caracteres |
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 |
Sequência de caracteres |
DESCRIPTION |
af_description |
Sequência de caracteres |
SCORE |
af_score |
Int |
DESTINATION_A |
af_destination_a |
Sequência de caracteres |
DESTINATION_B |
af_destination_b |
Sequência de caracteres |
CLASS |
af_class |
Sequência de caracteres |
DATE_A |
af_date_a |
Sequência de caracteres |
DATE_B |
af_date_b |
Sequência de caracteres |
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 |
Sequência de caracteres |
CUSTOMER_SEGMENT |
af_customer_segment |
Sequência de caracteres |
VALIDATED |
af_validated |
Sequência de caracteres |
RECEIPT_ID |
af_receipt_id |
Sequência de caracteres |
ORDER_ID |
af_order_id |
Sequência de caracteres |
TUTORIAL_ID |
af_tutorial_id |
Sequência de caracteres |
ACHIEVEMENT_ID |
af_achievement_id |
Sequência de caracteres |
VIRTUAL_CURRENCY_NAME |
af_virtual_currency_name |
Sequência de caracteres |
DEEP_LINK |
af_deep_link |
Sequência de caracteres |
OLD_VERSION |
af_old_version |
Sequência de caracteres |
NEW_VERSION |
af_new_version |
Sequência de caracteres |
REVIEW_TEXT |
af_review_text |
Sequência de caracteres |
COUPON_CODE |
af_coupon_code |
Sequência de caracteres |
DEPARTING_DEPARTURE_DATE |
af_departing_departure_date |
Sequência de caracteres |
RETURNING_DEPARTURE_DATE |
af_returning_departure_date |
Sequência de caracteres |
DESTINATION_LIST |
af_destination_list |
String[] |
CITY |
af_city |
Sequência de caracteres |
REGION |
af_region |
Sequência de caracteres |
COUNTRY |
af_county |
Sequência de caracteres |
DEPARTING_ARRIVAL_DATE |
af_departing_arrival_date |
Sequência de caracteres |
RETURNING_ARRIVAL_DATE |
af_returning_arrival_date |
Sequência de caracteres |
SUGGESTED_DESTINATIONS |
af_suggested_destinations |
String[] |
TRAVEL_START |
af_travel_start |
Sequência de caracteres |
TRAVEL_END |
af_travel_end |
Sequência de caracteres |
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 |
Sequência de caracteres |
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 |
Sequência de caracteres |
PARAM_1 |
af_param_1 |
Sequência de caracteres |
PARAM_2 |
af_param_2 |
Sequência de caracteres |
PARAM_3 |
af_param_3 |
Sequência de caracteres |
PARAM_4 |
af_param_4 |
Sequência de caracteres |
PARAM_5 |
af_param_5 |
Sequência de caracteres |
PARAM_6 |
af_param_6 |
Sequência de caracteres |
PARAM_7 |
af_param_7 |
Sequência de caracteres |
PARAM_8 |
af_param_8 |
Sequência de caracteres |
PARAM_9 |
af_param_9 |
Sequência de caracteres |
PARAM_10 |
af_param_10 |
Sequência de caracteres |
Visualização de dados avançados de eventos do aplicativo
- O nome do seu evento in-app e a receita aparecem na página de visão geral do Dashboard e napágina de Eventos.
- Valores adicionais de parâmetro aparecem no Relatório de dados brutos de eventos in-app. Os dados brutos são um recurso premium.
Parâmetro de receitas
Você pode enviar valores de receitas com qualquer nome de parâmetro e evento. No entanto, para registrar a receita (incluindo receita negativa) nos dados brutos e agregados da AppsFlyer, o parâmetro af_revenue DEVE ser usado. Sempre use ele com eventos in-app que representam a geração de receita real em sua lógica de negócios.
Para obter mais detalhes sobre o parâmetro af_revenue, consulte o guia de Atribuição de receitas.
Informações de identificação pessoal
Informações de identificação pessoal (PII) são informações que podem ser usadas para identificar ou rastrear a identidade de um indivíduo (nome, número de identidade, CPF) sozinho ou quando combinado com outras informações de identificação vinculadas à data e local de nascimento do indivíduo.
A AppsFlyer respeita as regras de privacidade e não coleta nenhuma PII do usuário.
Não envie PII nos valores do evento.
Observação
A AppsFlyer coleta o endereço de IP dos dispositivos durante os engajamentos. Em algumas jurisdições ou cenários de uso, o endereço de IP pode ser considerado uma PII. Usamos o endereço de IP para derivar a ampla localização geográfica (cidade, bairro) do dispositivo, mas não o endereço específico. Se necessário, você pode selecionar mascarar endereços de IP para que eles não apareçam nos relatórios de dados brutos.
Vários itens
Você pode adicionar vários itens a uma única transação. Em vez de valores únicos por parâmetro de evento, você pode ter vários itens descrevendo a transação, separados por vírgulas.
Exemplo
Na mesma transação, o senhor A. Flyer compra duas camisas idênticas, um par de sapatos e um chapéu de uma loja online sediada nos EUA. A sequência em que cada item é listado deve 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 vários itens, o código é exibido da seguinte forma:
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);
Multiplos itens são enviados como uma matriz em postbacks. No momento, o Facebook e o Twitter não conseguem processar parâmetros de matriz corretamente. Para ajudar, a AppsFlyer soma a quantidade de itens (af_quantity) em vez de enviá-los para eles como uma matriz (por exemplo, no exemplo acima o Facebook receberia af_quantity=4).
Observação
Múltiplos itens podem ser usados com os seguintes eventos no aplicativo:
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 complexos no aplicativo
Eventos complexos no aplicativo possibilitam o envio de vários eventos em uma única chamada da API.
Eles são úteis quando você deseja ver várias ações de usuários intimamente relacionadas agrupadas, por exemplo adicionar vários produtos à cesta em uma única sessão.
Exemplo:
{
"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"
}
]
}
Atenção
Eventos complexos no aplicativo causam problemas de postback com o Facebook e Criteo. Se você precisar que o evento seja totalmente mapeado com o Facebook e o Criteo, você deve enviar eventos separados por ação do usuário, por exemplo enviar um evento de Adicionar ao carrinho para cada item adicionado. Usando os dados brutos de eventos no aplicativo, você pode agrupar esses eventos.
Registro de eventos offline
- O SDK envia os eventos aos servidores da AppsFlyer e aguarda uma resposta.
- Se o SDK não receber 200 como resposta, o evento é armazenado no cache.
- Quando o próximo 200 como resposta for recebido, o evento armazenado é reenviado ao servidor.
- Se houver vários eventos no cache, eles são enviados para o servidor, um imediatamente após o outro.
Observação
O cache do SDK pode armazenar até 40 eventos, o que significa que apenas os primeiros 40 eventos que acontecem off-line são salvos. Tudo o que vier posteriormente até a próxima resposta 200 é descartado.
A hora do evento que aparece nos dados brutos é a hora em que o evento é enviado à AppsFlyer após o dispositivo ficar online novamente. Não é a hora real do evento.
Desduplicação de eventos
A AppsFlyer possui um mecanismo de desduplicação de eventos in-app. Ele verifica todos os eventos in-app para ver se há um evento in-app idêntico que veio do mesmo appsflyer_id menos de 10 segundos antecipadamente. Se tal evento for encontrado, o mecanismo remove a duplicação.
Dois eventos são considerados idênticos se os seguintes campos em ambos eventos forem iguais:
- Nome do evento
- Valor do evento
- ID do aplicativo
- ID da AppsFlyer
Observação
A desduplicação funciona somente para eventos in-app que forem enviados do SDK.
Os eventos in-app S2S não são desduplicados.
Nesta seção, listamos conjuntos abrangentes de eventos in-app para várias verticais. Cada vertical nesta seção contém eventos in-app cuidadosamente selecionados para os quais recomendamos registro.
Para iniciar o registro de eventos in-app:
- Selecione sua vertical.
- Selecione os eventos in-app que você deseja registrar. Recomendamos registrar todos os eventos listados em sua vertical.
- Copie os trechos de código de cada evento in-app e implemente em seu aplicativo quando aplicável.
Quer saber mais sobre os eventos in-app mais populares mapeados por tamanho do aplicativo e por vertical? Clique aqui.
Jogos
Aplicativos de jogos incluem gêneros como arcade, estratégia, educacional e, até mesmo, jogos de azar. Os eventos que recomendamos registrar em aplicativos de jogos são: compras in-app, compartilhamento em mídias sociais e convites para amigos. Eventos adicionais podem ser progredir de nível em um jogo e concluir um tutorial no jogo. Confira alguns exemplos de como o registro desses eventos pode beneficiá-lo:
- O registro de compras in-app pode ajudar você a saber quais ofertas os usuários mais compram.
- O registro de progresso de nível ajuda você a saber o grau de engajamento de seus usuários.
- O registro de compartilhamentos e convites ajuda você a saber quantos usuários compartilham e convidam outros jogadores e em quais plataformas de mídias sociais eles fazem isso.
Dica
Os eventos discutidos aqui também são relevantes para aplicativos de jogos que são executados nas seguintes plataformas:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
- Xbox
- Dispositivos mobile Windows
Login
Nome do evento: af_login
Propósito
Este evento pode ajudar você a compreender a retenção de seus usuários registrados.
Lógica do ativador
Acione este evento sempre que o usuário fizer login.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
Você pode gravar o registro de usuários e compará-lo com outros dados para saber mais sobre seus usuários. Com a gravação de eventos de registro de usuários é possível:
- Saber quantos usuários instalaram o aplicativo, mas nunca se cadastraram.
- Saber quais métodos de cadastro seus usuários preferem.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | email, facebook | O tipo de método de cadastro |
Exemplos 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
Nome do evento: af_purchase
Propósito
Muitos aplicativos de jogos permitem que os usuários comprem itens, por exemplo, moedas, joias, armas, etc. O evento Compra ajuda você a registrar compras in-app feitas por usuários. Com o registro de compras é possível:
- Descobrir o LTV de seus usuários e o ROI de suas campanhas em redes e agências de anúncios.
- Descobrir quais ofertas são mais populares entre seus usuários.
- Fazer referência cruzada de campanhas com itens comprados para otimizar o direcionamento de campanhas.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando o usuário acessar a página de agradecimento após uma compra bem-sucedida.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 2000 | A receita estimada de uma compra |
af_currency | string | THB / USD | O código da moeda |
af_quantity | int | 2 | O número de itens comprados |
af_content_id | string | 001, 092 | A ID do item |
af_order_id | string | 9277 | A ID do pedido |
af_receipt_id | string | 9277 | A ID do recibo |
Exemplos 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);
Nível atingido
Nome do evento: af_level_achieved
Propósito
Um dos principais objetivos dos usuários é subir de nível nos jogos. Geralmente, subir de nível desbloqueia novos recursos e fases em um jogo. Isso incentiva os usuários a continuar jogando. O evento Nível alcançado ajuda você a registrar o engajamento de usuários em seu aplicativo. Com o registro de níveis alcançados pelos usuários é possível:
- Determinar quais campanhas geram os usuários mais ativos.
- Ver quais tipos de usuários estão mais ativos e engajados.
- Associar a atividade geral do usuário com medidas como receita, etc.
Lógica do ativador
Para registrar este evento corretamente, é necessário acioná-lo quando o usuário acessar a página de conclusão de nível.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_level | int | 3 | O nível que o usuário alcançou |
af_score | int | 500 | A pontuação associada à conquista do usuário. |
Exemplos 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);
Conclusão do tutorial
Nome do evento: af_tutorial_completion
Propósito
Tutoriais ajudam seus usuários a fazer um melhor uso de seu aplicativo. Com o registro de conclusão de tutoriais é possível:
- Saber em quais assuntos os usuários podem ter dificuldade.
- Saber o que os tutoriais não estão executando bem e aprimorá-los.
Lógica do ativador
Há dois cenários onde este evento deve ser acionado:
- Quando um usuário conclui um tutorial. Um evento será enviado com um campo indicando a conclusão bem-sucedida do tutorial.
- Quando um usuário inicia um tutorial, mas sai sem concluí-lo. Quando o usuário sai, um evento é enviado com um campo indicando que o usuário não concluiu o tutorial.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_success | booleano | verdadeiro | Se o usuário concluiu ou não o tutorial |
af_tutorial_id | string | 3 | A ID do tutorial |
af_content | string | Getting Started | O nome do tutorial |
Exemplos 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);
Compartilhar
Nome do evento: af_share
Propósito
Usuários gostam de compartilhar suas conquistas em jogos nos sites de mídias sociais. Compartilhar cria um reconhecimento da marca e pode incentivar os usuários a baixar e instalar seu aplicativo. Com o registro do evento Compartilhar é possível compreender quando é mais provável que os usuários compartilhem o aplicativo com os amigos.
Dica
O SDK da AppsFlyer possui métodos dedicados ao registro de compartilhamentos e convites.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando um usuário compartilhar com sucesso em uma mídia social:
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_description | string | New High Score / Level up / Game won | O motivo para compartilhar na mídia social. Pode ser uma nova pontuação, progresso de nível, etc. |
platform | string | Facebook, Whatsapp, Email | A plataforma onde o usuário compartilha |
Exemplos 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);
Convite
Nome do evento: af_invite
Propósito
Geralmente, usuários convidam amigos para baixar e instalar um aplicativo. Muitas vezes, os usuários desejam compartilhar o aplicativo, e outras vezes recebem recompensas por convidar outras pessoas. Você pode registrar convites usando o evento Convite. Com o registro deste evento é possível:
- Saber em quais sites de mídias sociais os usuários geralmente enviam convites a amigos.
- Saber quantos usuários convidaram amigos para baixar e instalar o aplicativo.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando o usuário convida com sucesso um amigo para baixar e instalar o aplicativo.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_description | string | Try this app | O contexto do convite |
Exemplos 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);
Bônus reivindicado
Nome do evento: bonus_claimed
Propósito
Com o registro do evento Bônus reivindicado é possível:
- Ver quantos usuários reivindicaram os bônus oferecidos a eles.
- Associar os bônus reivindicados com a atividade e engajamento dos usuários.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando o usuário reivindicar um bônus e ele for atualizado em sua conta.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
bonus_type | string | coins | O tipo de bônus que o usuário reivindica. |
Exemplos 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);
E-commerce
Aplicativos de e-commerce permitem que os compradores pesquisem e comprem mercadorias on-line. Um dos principais recursos dos aplicativos de e-commerce é permitir que os compradores comparem preços para obter as melhores ofertas. Recomendamos a implementação do registro de eventos em seu aplicativo de e-commerce. O registro de eventos pode ajudar você a obter importantes insights quanto ao que as pessoas procuram e compram.
Recomendamos registrar os eventos de pesquisas, compras, adições ao carrinho e adições à lista de desejos. Com o registro desses eventos é possível:
- Destacar as categorias mais populares.
- Saber o que os usuários estão pesquisando.
- Registrar quantos compradores concluíram o checkout.
- Saber quantos compradores são compradores recorrentes e quantos estão comprando apenas uma vez.
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
O propósito do evento Registro completo é permitir que você registre quantos usuários se cadastraram após baixar e instalar o aplicativo. Também é possível registrar o método de cadastro, ou seja, Facebook, e-mail, etc.
Lógica do ativador
Acione este evento após um usuário se registrar com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | Facebook, Google, email | O método que o usuário escolhe para se cadastrar |
Exemplos 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);
Login
Nome do evento: af_login
Propósito
O evento Login permite que você registre quantos usuários fizeram login em suas contas. Com o evento de login é possível registrar:
- Quantos usuários estão ativos.
- Quando os usuários são mais ativos.
Lógica do ativador
Acione este evento quando o usuário fizer login com sucesso.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Pesquisar
Nome do evento: af_search
Propósito
Com o registro de eventos Search é possível saber o que os usuários estão procurando. Também é possível saber quais resultados de pesquisa são mais relevantes para eles. Além disso, você pode registrar quais resultados de pesquisam levam à compra.
Lógica do ativador
Você deve acionar este evento em um dos dois cenários:
- Quando o usuário clica no botão de pesquisa.
- Quando o usuário acessa a página de resultados da pesquisa.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_search_string | string | vestido vermelho, tênis de corrida | O termo de pesquisa |
af_content_list | matriz de strings | 001, 092 | A lista de IDs de conteúdo |
Exemplos 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);
Exibição de conteúdo
Nome do evento: af_content_view
Propósito
O evento Exibição de conteúdo pode ajudar você a registrar a taxa de visualização de produtos específicos. O registro deste evento pode ajudar você a:
- Correlacionar visualizações de produtos com vendas de produtos.
- Entender quais categorias são mais populares de acordo com as visualizações de produtos.
- Ver a correlação entre a moeda dos compradores e os produtos que eles visualizam.
Lógica do ativador
Você deve acionar este evento quando o usuário visualiza uma página específica de detalhes do produto.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 2000 | O preço do produto |
af_content_id | string | 102 | ID do produto |
af_content_type | string | calçados | Categoria de produtos |
af_currency | string | THB, USD | A moeda na página de detalhes do produto |
Exemplos 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);
Exibição de lista
Nome do evento: af_list_view
Propósito
É comum em plataformas de e-commerce ter listas que mostram produtos por categoria, por exemplo, produtos recém-adicionados, produtos relacionados, produtos recomendados, etc. O evento Exibição de lista pode ajudar você a registrar quais listas os compradores mais visualizam.
Lógica do ativador
Acione este evento quando o comprador visualizar uma lista específica.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_content_type | string | related, recommended, new arrivals | O tipo de lista |
af_content_list | matriz de strings | 001, 092 | Lista de IDs de conteúdo da categoria |
Exemplos 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);
Adicionar a lista de desejos
Nome do evento: af_add_to_wishlist
Propósito
Com o registro do evento Adicionar à lista de desejos é possível registrar quais produtos e categorias os compradores adicionam às suas listas de desejos. Ao saber quais produtos geralmente são adicionados às listas de desejo, é possível oferecer esses produtos em promoções ou descontos e incentivar os compradores a comprá-los. Você também pode redirecionar esses usuários de acordo com os produtos que eles adicionam à lista de desejos.
Lógica do ativador
Acione este evento quando o comprador adicionar itens à lista de desejos.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 600 | O preço do produto |
af_content_id | string | 300 | ID do produto |
af_content_type | string | shoes, electronics | Categoria de produtos |
af_currency | string | GBP | Moeda mostrada na página de detalhes do produto |
Exemplos 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);
Adicionar ao carrinho
Nome do evento: af_add_to_cart
Propósito
O propósito do evento Adicionar ao carrinho é registrar produtos adicionados ao carrinho. Com o registro deste evento é possível:
- Ver, em média, quantos produtos os compradores adicionam em uma compra.
- Ver o tempo transcorrido entre a adição de dois produtos diferentes.
- Ver quantos compradores abandonam o carrinho.
Lógica do ativador
Acione este evento quando o comprador adicionar um produto ao carrinho.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 350, 1000 | Preço do produto |
af_content_id | string | 001, 092 | ID do produto |
af_content_type | string | shirt, shoes | Tipo de produto |
af_currency | string | THB, USD | Moeda do produto |
af_quantity | float | 2, 5 | Quantos itens do mesmo produto foram adicionados ao carrinho |
Exemplos 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);
Checkout iniciado
Nome do evento: af_initiated_checkout
Propósito
Com o registro do evento Checkout iniciado é possível entender como os compradores agem ao prosseguir para o checkout. Por exemplo, é possível:
- Ver a média de preço quando os compradores finalizam a compra e compará-la com a média de preço no evento de compra.
- Ver se os usuários adicionam ou removem produtos após prosseguir para o checkout.
Lógica do ativador
Acione este evento quando o comprador iniciar o checkout, mas não concluí-lo ainda.
Campos recomendados
Dica
Se houver vários produtos de diferentes categorias, use matrizes para enviar os dados.
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 4000 | Preço total no carrinho |
af_content_id | string ou matriz de strings | 221, 124 | ID dos produtos no carrinho |
af_content_type | string ou matriz de strings | shirt, pants | Lista de categorias de produtos |
af_currency | string | THB | Moeda no momento do checkout |
af_quantity | int ou matriz de ints | 2, 5 | Total de itens no carrinho |
Exemplos 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
Nome do evento: af_purchase
Propósito
O evento Compra é um dos eventos mais importantes no e-commerce. Com o registro do evento Compra é possível saber muito sobre as tendências de compras em seu aplicativo de e-commerce. Com o registro do evento Compra é possível:
- Saber, no total, quantos usuários são realmente compradores.
- Registrar os compradores mais ativos e redirecionar suas transações de acordo com seu histórico de compras.
- Compreender quais produtos e categorias funcionam bem em termos de compras gerais.
- Registrar a receita gerada a partir de compras em produtos e categorias.
- Registrar a receita gerada em campanhas e fontes de mídia.
Lógica do ativador
Acione este evento quando o comprador finalizar a compra, mas não necessariamente realizar o pagamento dela.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 1200 | Receita da compra |
af_price | float | 4000 | Montante total da compra |
af_content_id | string | 121, 262 | ID do item |
af_content_type | string | shoes, pants | Categoria do item |
af_currency | string | AUD | Moeda |
af_quantity | int | 2, 5 | Quantidade de itens no carrinho |
af_order_id | string | X123ABC | ID do pedido gerada após a compra. |
af_receipt_id | string | X123ABC | ID do pedido, mas necessário para a integração de retargeting do CRITEO e Google AdWords |
Exemplos 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 concluída
Nome do evento: completed_purchase
Propósito
Registrar o evento Compra concluída pode ajudar você a analisar como as compras são realmente pagas integralmente.
Lógica do ativador
Quando um usuário paga pela compra, é possível enviar o evento usando S2S pois o evento ocorre no back-end.
Importante!
É necessário enviar este evento se o pagamento for feito offline, por exemplo, via transferência bancária ou em dinheiro no momento da entrega. Se você enviar este evento, certifique-se de que o evento de compra (af_purchase
) não contêm o parâmetro af_revenue
. Se você enviar os dois eventos com o parâmetro af_revenue
, a receita será duplicada.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 4000 | Receita gerada a partir da compra |
af_order_id | string | X123ABC | ID do pedido gerada a partir da compra |
af_receipt_id | string | X123ABC | ID do recibo gerada para o comprador |
Exemplos 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);
Remover do carrinho
Nome do evento: remove_from_cart
Propósito
Ao registrar o Remover do carrinho, você pode:
- Ver quais itens os compradores removem do carrinho.
- Ver as categorias de produtos dos itens que os compradores removem do carrinho.
- Comparar os dados do evento Adicionar ao carrinho para obter insights de produtos que não chegam ao checkout.
Lógica do ativador
Acione este evento quando um comprador remover um item do carrinho.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_content_id | string | 521 | Item ou ID do produto |
af_content_type | string | calçados | Item ou categoria de produtos |
Exemplos 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);
Primeira compra
Nome do evento: first_purchase
Propósito
Este evento é igual ao evento Compra. No entanto, ao contrário do evento Compra, é possível usar o evento Primeira compra para:
- Ver quanto tempo um comprador demora para comprar.
- Ver quais produtos os compradores que compram pela primeira vezes preferem.
- Ver a média de preço e receita de primeiras compras.
Lógica do ativador
Acione este evento quando o usuário concluir sua primeira compra.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 1200 | Receita da compra |
af_price | float | 4000 | Montante total da compra |
af_content_id | string | 121, 262 | ID do item |
af_content_type | string | shoes, pants | Categoria do item |
af_currency | string | AUD | Moeda |
af_quantity | int | 2, 5 | Quantidade de itens no carrinho |
af_order_id | string | X123ABC | ID do pedido gerada após a compra. |
af_receipt_id | string | X123ABC | ID do pedido, mas necessário para a integração de retargeting do CRITEO e Google AdWords |
Exemplos 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);
Entretenimento: streaming
Com a crescente exigência de parte dos usuários por conteúdos sob demanda, o mercado de aplicativos de streaming se tornou muito competitivo. Se você gerencia um aplicativo de streaming de conteúdos sob demanda, recomendamos que você faça o registro de eventos no aplicativo.
Dica
Os eventos discutidos aqui também são relevantes para aplicativos de streaming que são executados em smart TVs, tais como:
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
Com o registro de eventos em seu aplicativo de streaming é possível:
- Ver quais conteúdos os usuários consomem.
- Analisar e otimizar campanhas de acordo com a demanda por conteúdo.
- Mensurar o engajamento e o uso por parte dos usuários.
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
O propósito do evento Registro completo é permitir que você registre quantos usuários se cadastraram após baixar e instalar o aplicativo. Também é possível registrar o método de cadastro, ou seja, Facebook, e-mail, etc. para saber qual método de cadastro os usuários preferem.
Lógica do ativador
Acione este evento após um usuário se registrar com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | Facebook, Google, email | O método que o usuário escolhe para se cadastrar |
Exemplos 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);
Login
Nome do evento: af_login
Propósito
O evento Login permite que você registre quantos usuários fizeram login em suas contas. Com o evento de login é possível registrar:
- Quantos usuários estão ativos.
- Quando os usuários são mais ativos.
Lógica do ativador
Acione este evento quando o usuário fizer login com sucesso.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Iniciar avaliação
Nome do evento: af_start_trial
Propósito
Muitos serviços de streaming oferecem aos usuários um período de avaliação para usufruir dos recursos premium. Ao registrar o evento Iniciar avaliação é possível:
- Saber quantos usuários se inscrevem para um período de avaliação.
- Se a avaliação faz parte de uma promoção ou de uma colaboração com um parceiro, você pode registrar qual promoção induziu o usuário a ativar o período de avaliação.
Lógica do ativador
Acione este evento quando o usuário se inscrever e ativar o período de avaliação.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
trial_method | string | free with new phone, free with carrier, promotion, coupon code | O método para ativar a avaliação |
trial_method_identifier | string |
nome da operadora, por exemplo, Vodafone, nome do parceiro, por exemplo, Facebook, código do cupom, por exemplo, TRA123 |
O identificador do método de avaliação |
Exemplos 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);
Assinatura
Nome do evento: af_subscribe
Propósito
A assinatura é a base dos serviços de streaming. Com o registro de eventos de assinatura de usuários é possível:
- Ver quais campanhas obtêm os usuários assinantes.
- Compare o número de usuários em avaliação com o número de usuários inscritos.
- Registrar a receita gerada a partir da assinatura e atribuí-la a campanhas e fontes de mídias.
Lógica do ativador
Acione este evento em um dos dois cenários:
- Quando um usuário assinar com sucesso.
- Quando uma assinatura for renovada.
Dica
Consulte o nosso Guia de registro de assinaturas para obter mais informações.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
new_subscription | booleano | true / false | Se a assinatura é nova ou renovada |
af_coupon_code | string | 3MonthsSubscription | O código do cupom (se houver) usado durante a assinatura |
coupon_code_value | string | 10% | Quanto o cupom deduz do preço inicial |
af_revenue | float | 5 | A receita associada à assinatura |
af_currency | string | USD | A moeda do pagamento da assinatura |
subscription_method | string | credit card, e-wallet, PayPal | O método de pagamento usado na assinatura |
expiration_date | string | 2018/07/18 | A data de validade da assinatura |
Exemplos 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);
Reprodução de mídia
Nome do evento: media_play
Propósito
O registro do evento Reprodução de mídias significa acompanhar eventos em que os usuários reproduzem mídias oferecidas por você. Exemplos de mídias: vídeos, música, programas de TV, programas de rádio, entre outras. Se você oferece mais de um tipo de mídia, é possível registrar a proporção de reprodução entre diferentes mídias e tipos de conteúdos. Por exemplo, é possível ver se os usuários reproduzem mais músicas que vídeos. Também é possível ver se os usuários assistem mais a programas de TV do que a filmes. Além do mais, com o registro do evento de reprodução de mídias, é possível:
- Registrar o consumo de mídias por tipo e conteúdo.
- Ver os idiomas dos conteúdos transmitidos mais populares.
- Ver a duração miníma, máxima e média dos conteúdos transmitidos.
Lógica do ativador
Acione este evento após um número predefinido (por exemplo, 2 minutos) de conteúdo transmitido.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_content_type | string | tv show, music | O tipo de conteúdo que é transmitido |
af_content_id | string | 092, E34 | A ID do conteúdo que é transmitido |
af_content | string | Título do conteúdo | O título do conteúdo, por exemplo, o nome da música ou o título e episódio de um programa de TV |
media_duration | float | 5 | A duração |
language | string | en-us, fr, es | O idioma do conteúdo |
Exemplos 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 mídia
Nome do evento: media_minutes
Propósito
Minutos de mídia é a quantidade de um determinado item de conteúdo que o usuário consome. Depois da métrica de receita, esta é a métrica mais importante na indústria do streaming. Esta métrica é importante porque permite que você faça uma estimativa do uso do serviço por parte dos usuários. Ela também permite que você entenda qual é o índice total de uso do serviço e quais conteúdos são mais populares. Ao registrar os minutos de mídia (usando o parâmetro minutes_consumed ), você pode:
- Ver quais usuários utilizam bastante seu serviço e quais não.
- Ver quais tipos de mídias e conteúdos são populares.
Lógica do ativador
Acione este evento em um dos dois cenários:
- Quando o usuário finaliza a transmissão de um item de mídia.
- Quando o usuário encerra a transmissão de um item de mídia.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
minutes_consumed | float | 3 | O tempo real de execução da mídia pelo usuário |
af_content_type | string | tv show, music | O tipo de conteúdo que é transmitido |
af_content_id | string | 092, E34 | A ID do conteúdo que é transmitido |
af_content | string | Título do conteúdo | O título do conteúdo, por exemplo, o nome da música ou o título e episódio de um programa de TV |
media_duration | float | 5 | A duração |
language | string | en-us, fr, es | O idioma do conteúdo |
Exemplos 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);
Mídia baixada
Nome do evento: media_downloaded
Propósito
O registro de mídias baixadas pode ajudar você a destacar a preferência dos usuários. É possível registrar a reprodução de mídias e o download de mídias e comparar os dois. É possível identificar quais mídias os usuários preferem transmitir e quais mídias eles preferem baixar.
Lógica do ativador
Acione este evento quando o usuário começar a baixar uma mídia.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_content_type | string | tv show, music | O tipo de conteúdo |
af_content_id | string | 092, E34 | A ID do conteúdo |
af_content | string | Título do conteúdo | O título do conteúdo, por exemplo, o nome da música ou o título e episódio de um programa de TV |
media_duration | float | 5 | A duração |
language | string | en-us, fr, es | O idioma do conteúdo |
Exemplos 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);
Mídia salva
Nome do evento: media_saved
Propósito
O registro de mídias salvas pode ajudar você a destacar a preferência dos usuários.
Lógica do ativador
Acione este evento sempre que uma mídia for salva no dispositivo do usuário.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_content_type | string | tv show, music | O tipo de conteúdo |
af_content_id | string | 092, E34 | A ID do conteúdo |
af_content | string | Título do conteúdo | O título do conteúdo, por exemplo, o nome da música ou o título e episódio de um programa de TV |
media_duration | float | 5 | A duração |
language | string | en-us, fr, es | O idioma do conteúdo |
Exemplos 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);
Finanças: banco
Aplicativos financeiros e bancários oferecem aos usuários a capacidade de realizar uma ampla gama de objetivos relacionados a finanças, incluindo solicitar novos cartões de crédito ou empréstimos. Os eventos in-app que recomendamos gravar em aplicativos financeiros/bancários incluem aberturas de contas, solicitação de cartão de crédito e de empréstimo. Confira alguns exemplos de como o registro desses eventos pode beneficiá-lo:
- A gravação de solicitações de conta no aplicativo ajuda você a entender o que os usuários da conta mais desejam e oferece ideias para retargeting.
- A gravação de solicitações de cartão de crédito ajuda você a entender quais benefícios os usuários procuram em um cartão de crédito.
- A gravação de solicitações de empréstimos ajuda você a entender para qual finalidade os usuários precisam de assistência financeira e quanta assistência eles querem.
Login
Nome do evento: af_login
Propósito
Este evento pode ajudar você a compreender a retenção de seus usuários registrados.
Lógica do ativador
Acione este evento sempre que o usuário fizer login.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
Você pode gravar o registro de usuários e compará-lo com outros dados para saber mais sobre seus usuários. Com a gravação de eventos de registro de usuários é possível:
- Saber quantos usuários instalaram o aplicativo, mas nunca se cadastraram.
- Saber quais métodos de cadastro seus usuários preferem.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | email, facebook | O tipo de método de cadastro |
Exemplos 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
Nome do evento: registration_verified
Propósito
Você pode gravar um registro aceito e compará-lo com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar eventos com registro verificado, você pode saber quantos usuários se cadastram, mas não são aceitos.
Lógica do ativador
A melhor maneira de gravar esse evento é dispará-lo quando o registro é verificado.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
submit_registration | string | email, facebook | O tipo de método de cadastro verificado. Não preencha com informações pessoais identificáveis (PII). |
Exemplos 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 solicitação de conta
Nome do evento: submit_account_application
Propósito
Você pode gravar uma solicitação de conta e compará-la com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar eventos de registro de usuário, você pode saber quantos usuários se cadastram mas não solicitam a abertura de uma conta.
Lógica do ativador
A melhor forma de gravar este evento é dispará-lo quando o usuário concluir o processo de solicitação da conta.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
account_type | string | poupança | O tipo de conta solicitada. |
application_method | string | aplicativo | Onde a solicitação foi feita. |
PII_type | string | passaporte | Tipo de ID usada durante a solicitação. |
Exemplos 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);
Sucesso na abertura da conta
Nome do evento: open_account_success
Propósito
Você pode gravar solicitações de conta que foram aceitas e compará-las com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar solicitações de conta bem-sucedidas, você pode saber quantos usuários solicitam contas mas não são aceitos, e tentar melhorar o funil ou redirecionar esses usuários mais tarde.
Lógica do ativador
A melhor forma de gravar este evento é dispará-lo quando a solicitação do usuário é aceita e a conta é aberta.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
account_type | string | poupança | O tipo de conta aberta. |
application_method | string | aplicativo | Quando a solicitação foi feita. |
PII_type | string | documento de identidade | Tipo de ID usada durante a solicitação. |
Exemplos 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);
Abertura da conta rejeitada
Nome do evento: open_account_rejected
Propósito
Você pode gravar solicitações de conta que foram rejeitadas e compará-las com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar solicitações de conta malsucedidas, você pode saber quantos usuários solicitam contas, mas não são aceitos, e tentar melhorar o funil ou redirecionar esses usuários mais tarde.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
account_type | string | poupança | O tipo de conta solicitada. |
Exemplos 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);
Solicitação de cartão de crédito
Nome do evento: submit_credit_card_application
Propósito
Você pode gravar uma solicitação de cartão de crédito e compará-la com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar solicitações de cartão de crédito do usuário, você pode saber quantos usuários solicitam mas não são aceitos, e usar essas informações para melhorar seu funil ou redirecioná-los mais tarde.
Lógica do ativador
Para gravar esse evento corretamente, você deve dispará-lo quando o usuário enviar uma solicitação para um novo cartão de crédito.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
credit_card_type | string | cartão ouro | O tipo de cartão de crédito solicitado. |
application_method | string | aplicativo | Onde a solicitação foi feita. |
PII_type | string | passaporte | Tipo de ID usada durante a solicitação. |
Exemplos 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);
Sucesso na solicitação de cartão de crédito
Nome do evento: credit_card_application_success
Propósito
Você pode gravar uma solicitação de cartão de crédito aceita e compará-la com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar solicitações de cartão de crédito bem-sucedidas, você pode saber quantos usuários solicitam mas não são aceitos, e usar essas informações para melhorar seu funil ou redirecionar os usuários aceitos para outros cartões de crédito.
Lógica do ativador
Para gravar esse evento corretamente, você deve dispará-lo quando a solicitação do cartão de crédito do usuário for aceita.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
credit_card_type | string | cartão ouro | O tipo de cartão de crédito solicitado. |
application_method | string | aplicativo | Onde a solicitação foi feita. |
PII_type | string | documento de identidade | Tipo de ID usada durante a solicitação. |
Exemplos 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);
Solicitação de cartão de crédito rejeitada
Nome do evento: credit_card_application_rejected
Propósito
Você pode gravar uma solicitação rejeitada de cartão de crédito e compará-la com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar solicitações de cartão de crédito malsucedidas, você pode saber quantos usuários solicitam mas não são aceitos, e usar essas informações para melhorar seu funil ou redirecionar os usuários para outros cartões de crédito.
Lógica do ativador
Para gravar esse evento corretamente, você deve dispará-lo quando a solicitação do cartão de crédito do usuário for rejeitada.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
credit_card_type | string | cartão ouro | O tipo de cartão de crédito solicitado. |
Exemplos 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);
Ativação do cartão de crédito
Nome do evento: credit_card_activation
Propósito
Você pode gravar quando um usuário ativa seu novo cartão de crédito e comparar com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar ativações de cartão de crédito, você pode saber quantos usuários recebem um cartão de crédito mas não chegam a ativá-lo, e usar essas informações para melhorar seu funil ou redirecionar os usuários.
Lógica do ativador
Para gravar corretamente esse evento, você deve dispará-lo quando um usuário ativar seu novo cartão de crédito.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
credit_card_type | string | cartão ouro | O tipo de cartão de crédito solicitado. |
application_method | string | aplicativo | Onde a solicitação foi feita. |
PII_type | string | documento de identidade | Tipo de ID usada durante a solicitação. |
Exemplos 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 pedido de empréstimo
Nome do evento: submit_loan_application
Propósito
O propósito deste evento é ajudar você a registrar pedidos de empréstimos. Com o registro do evento Enviar pedido de empréstimo é possível:
- Registrar o número total de pedidos de empréstimo em seu aplicativo.
- Saber o valor máximo, mínimo e médio em pedidos de empréstimo.
- Ver os tipos de empréstimo que as pessoas solicitam.
Lógica do ativador
Acione este evento quando o usuário enviar um pedido de empréstimo com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
loan_type | string | moradia | O propósito do empréstimo. |
loan_amount | float | 1000 | O valor solicitado. |
loan_period | string | 3 months | O período do empréstimo. |
Exemplos 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);
Empréstimo aceito
Nome do evento: loan_accepted
Propósito
Com o registro do evento Empréstimo aceito é possível saber mais sobre as tendências em empréstimos e outras métricas:
- Você pode ver quais tipos de empréstimos são aceitos.
- É possível verificar quais valores solicitados são aceitos.
- É possível verificar quais credores aceitam mais empréstimos, quais tipos e quais valores.
Lógica do ativador
Acione este evento quando um empréstimo for aceito.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
loan_type | string | moradia | O propósito do empréstimo. |
loan_amount | float | 1000 | O valor solicitado. |
loan_period | string | 3 months | O período do empréstimo. |
Exemplos 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);
Empréstimo negado
Nome do evento: loan_rejected
Propósito
O registro do evento Empréstimo negado pode ajudar você a entender os motivos para negação dos empréstimos. É possível ver a correlação entre o valor e o período do empréstimo e os índices de negação. Também é possível redirecionar os usuários que tiveram seus empréstimos negados e sugerir que emprestem um valor menor.
Lógica do ativador
Acione este evento quando um credor negar um empréstimo.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
Exemplos 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: Empréstimo P2P
O empréstimo P2P (peer-to-peer) é um novo meio para que pessoas e empresas peçam e forneçam empréstimos umas às outras.
Recomendamos que você registre eventos em seu aplicativo de empréstimos P2P:
- É possível registrar a atividade de credores e mutuários.
- É possível saber quais tipos de empréstimos as pessoas oferecem em oposição aos empréstimos nos quais os mutuários estão interessados.
- É possível reunir métricas com relação à quantia média, mínima e máxima de empréstimos.
- É possível registrar os índices de aceitação e negação de empréstimos.
Com esses dados reunidos do registro de eventos, é possível destacar mutuários confiáveis e oferecer a eles melhores taxas de juros. Da mesma maneira, você pode identificar os credores mais ativos e oferecer a eles taxas mais baixas. Além do mais, após saber quais tipos de empréstimos são mais populares entre seus usuários, é possível lançar campanhas de marketing que atinjam esses públicos.
Registro enviado
Nome do evento: registration_submitted
Propósito
Como o empréstimo P2P está suscetível a abusos, primeiro os usuários devem verificar suas identidades. Tal verificação é realizada através do envio de uma solicitação de cadastro. O registro do evento Registro enviadopode ajudar você a:
- Registrar quantos usuários se registraram, mas nunca verificam suas contas.
- Ver a correlação entre o método de cadastro (e-mail, Facebook, Google) e as taxas de verificação.
Lógica do ativador
Acione este evento após o usuário enviar uma solicitação para se cadastrar em seu serviço P2P.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | e-mail, Facebook, Google | Qual tipo de método ou cadastro social o usuário escolheu |
Exemplos 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);
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
O registro do evento Concluir cadastro pode ajudar você a ver quantos usuários realmente verificam suas identidades após o cadastro. É possível atribuir esses usuários a campanhas e identificar quais campanhas geram usuários ativos.
Lógica do ativador
Acione este evento quando o usuário se cadastrar com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | Qual tipo de método ou cadastro social o usuário escolhe |
Exemplos 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);
Preencher formulário de empréstimo
Nome do evento: fill_loan_form_<FORM_NAME>
Propósito
Os mutuários precisam preencher vários formulários para pedir um empréstimo. Você pode registrar os formulários que são preenchidos por um possível mutuário para identificar a taxa de queda. Além da taxa de queda, você também pode redirecionar os mutuários que deixam de preencher o formulário para conclusão do pedido de empréstimo. Ao enviar o evento, inclua o nome do formulário no nome do evento.
Lógica do ativador
Acione este evento quando um mutuário enviar um formulário.
Campos recomendados
Você pode enviar esse evento sem campos adicionais.
Observação
É altamente recomendável associar empréstimos com credores. Para isso, certifique-se de configurar a ID de usuário cliente. Configurar a ID de usuário cliente é o meio que você possui para unir os credores aos usuários de seu aplicativo conforme eles aparecem na AppsFlyer. Ao configurar a ID de usuário cliente você se certifica de que todos os eventos sejam enviados com a ID de usuário cliente.
Exemplos 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 pedido de empréstimo
Nome do evento: submit_loan_application
Propósito
O propósito deste evento é ajudar você a registrar pedidos de empréstimos. Com o registro do evento Enviar pedido de empréstimo é possível:
- Registrar o número total de pedidos de empréstimo em seu aplicativo.
- Saber o valor máximo, mínimo e médio em pedidos de empréstimo.
- Ver os tipos de empréstimo que as pessoas solicitam.
Lógica do ativador
Acione este evento quando o usuário enviar um pedido de empréstimo com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
loan_amount | float | 1000 | O valor solicitado |
loan_type | string | 3 months | O período do empréstimo |
Exemplos 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);
Empréstimo aceito
Nome do evento: loan_accepted
Propósito
Com o registro do evento Empréstimo aceito é possível saber mais sobre as tendências em empréstimos e outras métricas:
- Você pode ver quais tipos de empréstimos são aceitos.
- É possível verificar quais valores solicitados são aceitos.
- É possível verificar quais credores aceitam mais empréstimos, quais tipos e quais valores.
Lógica do ativador
Acione este evento quando um empréstimo for aceito.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
loan_amount | float | 1000 | O valor solicitado |
loan_type | string | 3 months | O período do empréstimo |
Exemplos 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);
Empréstimo negado
Nome do evento: loan_rejected
Propósito
O registro do evento Empréstimo negado pode ajudar você a entender os motivos para negação dos empréstimos. É possível ver a correlação entre o valor e o período do empréstimo e os índices de negação. Também é possível redirecionar os usuários que tiveram seus empréstimos negados e sugerir que emprestem um valor menor.
Lógica do ativador
Acione este evento quando um credor negar um empréstimo.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
load_id | string | 1735102 | A ID do empréstimo |
Exemplos 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);
Pagamento
Nome do evento: Pagamento
Propósito
O registro do evento Pagamento pode ajudar você a indicar os mutuários como confiáveis. Mutuários confiáveis são aqueles que cumprem sua obrigação de cobrir seus empréstimos. É possível atribuir mutuários a campanhas e saber quais campanhas geram mutuários confiáveis. Com o registro deste evento também é possível reunir dados com relação aos valores de pagamentos mínimos, máximos e médios.
Lógica do ativador
Acione este evento sempre que um usuário realizar um pagamento pelo empréstimo.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
payment_amount | float | 100 | O valor pago |
payment_id | string | AE12SF | A ID do pagamento |
Exemplos 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);
Pagamento concluído
Nome do evento: payment_completed
Propósito
O registro do evento Pagamento concluído pode ajudar você a destacar os mutuários que cumprem suas obrigações de cobrir um empréstimo. Você também pode redirecionar esses mutuários e oferecer a eles taxas de juros mais baixas e outras promoções.
Lógica do ativador
Acione este evento quando um empréstimo for pago integralmente.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
loan_id | string | 1735102 | A ID do empréstimo |
Exemplos 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);
Educação online
Os aplicativos de educação online permitem que os usuários aprendam remotamente. Os eventos in-app que recomendamos gravar em aplicativos de educação online incluem registro, tutoriais e cursos completos e certificados recebidos. Confira alguns exemplos de como o registro desses eventos pode beneficiá-lo:
- A gravação de registros no aplicativo ajuda você a entender quais cursos os usuários querem e oferece ideias para direcionamento.
- A gravação de tutoriais completos ajuda você a entender quais usuários podem ser redirecionados e lembrados de que eles têm tutoriais adicionais para concluir um curso.
- A gravação de certificados recebidos ajuda você a entender quais cursos e certificados são os mais procurados.
Login
Nome do evento: af_login
Propósito
Este evento pode ajudar você a compreender a retenção de seus usuários registrados.
Lógica do ativador
Acione este evento sempre que o usuário fizer login.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
Você pode gravar o registro de usuários e compará-lo com outros dados para saber mais sobre seus usuários. Com a gravação de eventos de registro de usuários é possível:
- Saber quantos usuários instalaram o aplicativo, mas nunca se cadastraram.
- Saber quais métodos de cadastro seus usuários preferem.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | email, facebook | O tipo de método de cadastro |
Exemplos 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);
Conclusão do tutorial
Nome do evento: af_tutorial_completion
Propósito
Tutoriais ajudam seus usuários a fazer um melhor uso de seu aplicativo. Com o registro de conclusão de tutoriais é possível:
- Saber em quais assuntos os usuários podem ter dificuldade.
- Saber o que os tutoriais não estão executando bem e aprimorá-los.
Lógica do ativador
Há dois cenários onde este evento deve ser acionado:
- Quando um usuário conclui um tutorial. Um evento será enviado com um campo indicando a conclusão bem-sucedida do tutorial.
- Quando um usuário inicia um tutorial, mas sai sem concluí-lo. Quando o usuário sai, um evento é enviado com um campo indicando que o usuário não concluiu o tutorial.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_success | booleano | Sim | Se o usuário concluiu ou não o tutorial |
af_tutorial_id | string | 3 | A ID do tutorial |
af_content | string | álgebra | O nome do tutorial |
Exemplos 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);
Exercício concluído
Nome do Evento: complete_excercise
Propósito
Você pode gravar exercícios concluídos e compará-los com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar eventos de conclusão de exercícios, você pode saber quantos usuários começam, mas não terminam um exercício.
Lógica do ativador
A melhor forma de gravar esse evento é dispará-lo quando o usuário termina um exercício.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
course_name | string | álgebra | O nome do curso. |
exercise_name | string | 2 | O nome do exercício. |
Exemplos 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 concluído
Event Name: course_completed
Propósito
Você pode gravar cursos concluídos e compará-los com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar eventos de conclusão de curso, você pode saber quantos usuários começam, mas não terminam um curso.
Lógica do ativador
A melhor forma de gravar esse evento é dispará-lo quando o usuário termina um curso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
course_name | string | álgebra | O nome do curso. |
course_completed | string | Sim | Se o curso foi concluído. |
Exemplos 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 emitido
Nome do evento: certificate_issued
Propósito
Você pode gravar emissões de certificados e compará-las com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar eventos de certificados emitidos, você pode saber quantos usuários terminam um curso e redirecioná-los para o próximo.
Lógica do ativador
A melhor forma de gravar esse evento é dispará-lo quando um certificado é emitido para o usuário.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
course_name | string | álgebra | O nome do curso. |
certificate_received | string | Sim | Se o certificado foi emitido. |
Exemplos 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
Nome do evento: af_purchase
Propósito
Muitos aplicativos de educação online permitem que os usuários adquiram itens, por exemplo, cursos, software ou equipamentos escolares O evento Compras ajuda você a gravar as compras que os usuários fazem pelo aplicativo. Com a gravação de compras é possível:
- Descobrir o LTV de seus usuários e o ROI de suas campanhas em redes e agências de anúncios.
- Descobrir quais ofertas são mais populares entre seus usuários.
- Fazer referência cruzada de campanhas com itens comprados para otimizar o direcionamento de campanhas.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando o usuário acessar a página de agradecimento após uma compra bem-sucedida.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 200 | A receita estimada de uma compra |
af_currency | string | USD | O código da moeda |
af_content_id | string | 001, 092 | A ID do item |
order_id | string | 9277 | A ID do pedido |
af_receipt_id | string | 9277 | A ID do recibo |
Exemplos 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);
Navegação: transporte de passageiros
Recentemente, o transporte de passageiros se tornou muito popular, principalmente em áreas urbanas onde a maioria dos residentes não possui carro. Ao registro e analisar eventos no aplicativo, é possível saber mais sobre:
- Como passageiros e motoristas interagem.
- Países onde as pessoas mais usam serviços de transporte de passageiros.
- Métricas sobre preço, corridas e distância das corridas.
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
O registro do evento Registro completo pode fornecer insights sobre seus usuários. Com o registro do evento Registro completo é possível:
- Saber qual método de cadastro seus usuários preferem (Google, Facebook, E-mail).
- Compreender quantos usuários realmente se cadastraram após baixar e instalar o aplicativo.
- Ver tendências de cadastro em vários países para identificar os países cujos usuários são mais propensos a usar seu aplicativo.
Lógica do ativador
Acione este evento quando o usuário se cadastrar com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | A plataforma ou método que o usuário utiliza para se cadastrar | |
country_code | string | 66 | O código do país (código do telefone) |
Exemplos 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);
Adicionar informação de pagamento
Nome do evento: af_add_payment_info
Propósito
O registro do evento Adicionar informações de pagamento pode ajudar você a categorizar usuários. Você pode:
- Saber quanto tempo um usuário leva para adicionar informações de pagamento.
- Saber quais métodos de pagamento são mais populares (cartão de crédito, carteiras digitais).
- Realizar campanhas e colaboração com prestadores de métodos de pagamentos populares.
Lógica do ativador
Acione este evento sempre que um usuário adicionar informações de pagamento à sua conta com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_success | booleano | verdadeiro | Se a adição do método de pagamento foi bem-sucedida ou não |
credit_card_type | string | Visa, Mastercard | Tipo de cartão de crédito (opcional) |
payment_method_type | string | cartão de crédito, carteira digital | O tipo de método de pagamento |
Exemplos 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);
Reserva de viagem solicitada
Nome do evento: ride_booking_requested
Propósito
O evento Reserva de viagem solicitadaé um dos quatro eventos relacionados à reserva de viagens. Eles são discutidos abaixo. Com o registro deste evento é possível:
- Saber sobre destinos populares.
- Saber sobre tendências, para onde as pessoas vão e de onde vêm.
- Ver a distância média de uma corrida.
- Ver de quais cidades, regiões e países vem a maioria dos usuários.
Além do mais, registrar este evento em conjunto com outros três eventos relacionados a reservas pode ajudar você a acompanhar transações bem-sucedidas. É possível registrar transações bem-sucedidas e compará-las com transações malsucedidas. Por exemplo, você pode ver quantas reservas de viagens são solicitadas e quantas reservas de viagens são concluídas ou canceladas.
Lógica do ativador
Acione este evento quando o passageiro realizar uma solicitação de reserva de viagem.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 22.4 | Preço cotado para a viagem |
af_currency | string | SGD | Moeda |
af_destination_a | string | Plaza Singapura | Ponto de partida |
af_destination_b | string | Marina Bay Sands | Ponto de chegada |
distance | float | 5.2 | A distância entre os dois destinos |
af_content_type | string | Táxi | Tipo de transporte |
payment_method_type | string | cartão de crédito, carteira digital | O tipo de método de pagamento |
af_city | string | Singapura | A cidade onde a viagem foi reservada |
af_region | string | SFA | A região onde a viagem foi reservada |
af_country | string | Singapura | O país onde a viagem foi reservada |
order_id | string | 135790 | ID do pedido |
Exemplos 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);
Reserva de viagem confirmada
Nome do evento: ride_booking_confirmed
Propósito
O evento Reserva de viagem confirmadaé um dos quatro eventos relacionados à reserva de viagens. Com o registro deste evento é possível:
- Saber quais são os motoristas mais ativos.
- Ver quais destinos são comuns entre os motoristas.
- Ver o preço médio e total de viagens para cada motorista.
Além do mais, registrar este evento em conjunto com outros três eventos relacionados a reservas pode ajudar você a compreender melhor a atividade dos motoristas. É possível ver quais motoristas confirmam a maioria das solicitações de reserva de viagem, quais motoristas escolhem viagens curtas em vez de viagens longas, etc.
Lógica do ativador
Acione este evento quando a reserva for aceita por um motorista.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 22.4 | Preço cotado para a viagem |
af_currency | string | SGD | Moeda |
af_destination_a | string | Plaza Singapura | Ponto de partida |
af_destination_b | string | Marina Bay Sands | Ponto de chegada |
distance | float | 5.2 | A distância entre os dois destinos |
af_content_type | string | Táxi | Tipo de transporte |
driver_id | string | 1706 | A ID do motorista que confirmou a corrida |
payment_method_type | string | cartão de crédito, carteira digital | O tipo de método de pagamento |
af_city | string | Singapura | A cidade onde a viagem foi reservada |
af_region | string | SFA | A região onde a viagem foi reservada |
af_country | string | Singapura | O país onde a viagem foi reservada |
af_order_id | string | 135790 | ID do pedido |
Exemplos 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);
Reserva de viagem cancelada
Nome do evento: ride_booking_cancelled
Propósito
O evento Reserva de viagem canceladaé um dos quatro eventos relacionados à reserva de viagens. Com o registro deste evento é possível:
- Registrar motoristas ou passageiros que cancelam constantemente.
- Saber quantas viagens foram canceladas.
- Correlacionar viagens concluídas com atributos como preço, destino, distância, cidades, etc.
- Saber os motivos do cancelamento de uma viagem.
Lógica do ativador
Acione este evento quando a reserva for cancelada.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 22.4 | Preço cotado para a viagem |
af_currency | string | SGD | Moeda |
af_destination_a | string | Plaza Singapura | Ponto de partida |
af_destination_b | string | Marina Bay Sands | Ponto de chegada |
distance | float | 5.2 | A distância entre os dois destinos |
af_content_type | string | Táxi | Tipo de transporte |
driver_id | string | 1706 | A ID do motorista que confirmou a corrida |
cancelation_reason | string | preço muito alto, motorista não apareceu, passageiro não apareceu | O motivo do cancelamento da viagem |
payment_method_type | string | cartão de crédito, carteira digital | O tipo de método de pagamento |
af_city | string | Singapura | A cidade onde a viagem foi reservada |
af_region | string | SFA | A região onde a viagem foi reservada |
af_country | string | Singapura | O país onde a viagem foi reservada |
order_id | string | 135790 | ID do pedido |
canceled_by | string | Passageiro | Se a viagem foi cancelada pelo passageiro ou pelo motorista |
Exemplos 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);
Reserva de viagem concluída
Nome do evento: ride_booking_completed
Propósito
O evento Reserva de viagem concluídaé um dos quatro eventos relacionados à reserva de viagens. Com o registro deste evento é possível:
- Saber os gastos dos passageiros e os ganhos dos motoristas.
- Correlacionar viagens concluídas com atributos como destino, distância, tipo de pagamento, ID do motorista, etc.
- Ver a distância média e total para motoristas e passageiros.
- Comparar viagens concluídas com viagens canceladas.
- Registrar a pontuação de motoristas.
Lógica do ativador
Acione este evento quando a viagem for concluída.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 22.4 | Preço cotado para a viagem |
af_currency | string | SGD | Moeda |
af_destination_a | string | Plaza Singapura | Ponto de partida |
af_destination_b | string | Marina Bay Sands | Ponto de chegada |
distance | float | 5.2 | A distância entre os dois destinos |
af_content_type | string | Táxi | Tipo de transporte |
driver_id | string | 1706 | A ID do motorista que confirmou a corrida |
payment_method_type | string | cartão de crédito, carteira digital | O tipo de método de pagamento |
af_city | string | Singapura | A cidade onde a viagem foi reservada |
af_region | string | SFA | A região onde a viagem foi reservada |
af_country | string | Singapura | O país onde a viagem foi reservada |
order_id | string | 135790 | ID do pedido |
credits_earned | int | 248 | Os créditos que o passageiro ganhou ao concluir uma viagem |
Exemplos 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 gastos
Nome do evento: spent_credits
Propósito
O evento de reserva de viagem concluída mencionado acima tem um campo chamado credits_earned
. Esse campo registra os créditos que o passageiro ganha após cada viagem. Depois, o passageiro pode trocar esses créditos por vouchers e descontos. Com o registro desses eventos é possível:
- Ver quantos passageiros trocam créditos por vouchers.
- Descobrir que tipo de vouchers e descontos os passageiros preferem.
Lógica do ativador
Acione este evento quando um passageiro gastar créditos.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_content | string | Ingresso único para cinema | O tipo de voucher ou desconto |
credits_used | int | 1000 | Quantidade de créditos usados |
credits_remaining | int | 2090 | Quantidade de créditos disponíveis na conta |
invoice_id | string | KO215123SD | A ID da fatura criada para gastar créditos |
Exemplos 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);
Viagem: reserva de voos
Aplicativos de reserva de voos permitem que os viajantes reservem voos com facilidade e escolham as melhores ofertas. Os eventos que recomendados registrar são: reserva de um voo, busca de voos e visualização de ofertas. O registro desses eventos ajuda a analisar as preferências e compras dos usuários. Por exemplo, ao analisar os dados de eventos é possível:
- Saber sobre destinos populares.
- Analisar tendências sazonais.
- Conhecer companhias aéreas populares com as quais os usuários preferem viajar.
Reservas de viagem
Nome do evento: af_travel_booking
Propósito
A capacidade de reservar voos é a principal função do aplicativo. Ao registrar esse evento com todos os seus campos, você pode obter insights sobre:
- Destinos populares.
- Companhias aéreas populares.
- Tendências sazonais.
Lógica do ativador
Envie este evento quando o usuário acessar a página de agradecimento após reservar um voo com sucesso.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 647 | Receita associada à reserva |
af_currency | string | SGD | O código da moeda |
af_price | float | 674 | O preço |
af_content_id | string | ODIRNH | A ID da oferta de voo |
af_departing_departure_date | string | 2018-06-21 | Data de partida |
af_returning_departure_date | string | 2018-06-26 | Data de retorno |
af_destination_a | string | BKK | Primeiro destino |
af_destination_b | string | SYD | Segundo destino (se aplicável) |
airline_code | string | KLM | O código da companhia aérea |
af_class | string | econômica | A classe em que o voo foi reservado |
purchase_method | string | cartão de crédito | Cartão de crédito, PayPal, etc. |
Exemplos 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);
Exibição de conteúdo
Nome do evento: af_content_view
Propósito
Após realizar a busca, os usuários clicam nos resultados de busca que acharem mais relevantes. O registro do conteúdo que os usuários visualizam nos resultados de busca ajuda você a:
- Saber quais ofertas de voos os usuários acham mais interessantes.
- Saber se os resultados de busca são relevantes para as buscas.
Lógica do ativador
É melhor acionar este evento quando um usuário clicar em um resultado de busca.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_departing_departure_date | string | 2018-06-21 | Data de partida |
af_returning_departure_date | string | 2018-06-26 | Data de retorno |
af_destination_a | string | BKK | Primeiro destino |
af_destination_b | string | SYD | segundo destino (se aplicável) |
Exemplos 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);
Pesquisar
Nome do evento: af_search
Propósito
os aplicativos de reserva de voos permitem que os usuários busquem voos e ofertas. Uma forma de obter insights sobre as preferências dos usuários é registrar os parâmetros de busca. Ao registrar o evento de pesquisa e seus campos, você pode:
- Saber o que os usuários mais buscam.
- Saber quais destinos são mais populares.
- Ver quantos usuários viajam com crianças.
- Ver qual época do ano os usuários preferem ou planejam viajar.
Lógica do ativador
Acione este evento quando o usuário clicar no botão de pesquisa, após ter preenchido o formulário de busca.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_num_children | int | 0 | Quantas crianças viajarão |
af_destination_a | string | BKK | Primeiro destino |
af_destination_b | string | SYD | Segundo destino (se relevante) |
af_departing_departure_date | string | 2018-06-21 | Data de partida |
af_returning_departure_date | string | 2018-06-26 | Data de retorno |
af_num_infants | int | 0 | Quantos bebês viajarão |
af_num_adults | int | 1 | Quantos adultos viajarão |
Exemplos 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);
Adicionar informação de pagamento
Nome do evento: af_add_payment_info
Propósito
Este evento pode ajudar você a registrar tentativas bem e malsucedidas de adição de informações de pagamento ao reservar um voo.
Lógica do ativador
Acione este evento quando o usuário clicar no botão de pesquisa, após ter preenchido o formulário de busca.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_success | booleano | verdadeiro | Se a inclusão do método de pagamento foi bem-sucedida ou não |
Exemplos 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);
Primeira compra
Nome do evento: first_purchase
Propósito
Este evento é o mesmo que um evento de Compra. No entanto, ao contrário de um evento de Compra, o evento de Primeira compra pode ser usado para:
- Ver quanto tempo um comprador demora para comprar.
- Ver quais voos os compradores que compram pela primeira vezes preferem.
- Ver a média de preço e receita de primeiras compras.
Lógica do ativador
Acione este evento quando o usuário concluir sua primeira compra.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 1200 | Receita da compra |
af_price | float | 4000 | Montante total da compra |
af_content_id | string | 121, 262 | ID do item |
af_content_type | string | voo | Categoria do item |
af_currency | string | AUD | Moeda |
af_quantity | int | 1 | Quantidade de itens no carrinho |
af_order_id | string | X123ABC | ID do pedido gerada após a compra. |
af_receipt_id | string | X123ABC | ID do pedido, mas necessário para a integração de retargeting do CRITEO e Google AdWords |
Exemplos 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);
Viagem: reserva de hotel
Ao registrar eventos in-app em seu aplicativo de reserva de hotéis, você pode ver quais campanhas e fontes de mídias trazem os usuários que realmente fazem reservas para as férias. Além do mais, você pode ver quais campanhas e fontes de mídias trazem os usuários que mais fazem reservas e geram mais receita. Você pode atribuir preferências como pontuação do hotel, temporada, país e número de crianças para os usuários que vêm de certas fontes de mídias. Ao atribuir preferências dos usuários às fontes de mídias, você pode otimizar campanhas em fontes de mídias ao focar nas preferências dos usuários.
Concluir cadastro
Nome do evento: af_complete_registration
Propósito
Você pode gravar o registro de usuários e compará-lo com outros dados para saber mais sobre seus usuários. Com a gravação de eventos de registro de usuários é possível:
- Saber quantos usuários instalaram o aplicativo, mas nunca se cadastraram.
- Saber quais métodos de cadastro seus usuários preferem.
- Ver quais mídias trazem usuários que realmente se cadastram.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | email, facebook | O tipo de método de cadastro |
Exemplos 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);
Login
Nome do evento: af_login
Propósito
Este evento pode ajudar você a registrar a retenção de seus usuários registrados.
Lógica do ativador
Acione este evento sempre que o usuário fizer login ou abrir o aplicativo.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Pesquisar
Nome do evento: af_search
Propósito
O propósito deste evento é informar a você o que os usuários estão buscando. Quando você sabe o que os usuários estão buscando, é possível oferecer a eles melhores ofertas e promoções. Além disso, você pode ver as buscas por localização geográfica e, assim, direcionar campanhas para os usuários de acordo com esta informação e em diversas mídias.
Lógica do ativador
Acione este evento quando o usuário realizar uma busca.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_date_a | string | 2018/07/26 | Data do check-in |
af_date_b | string | 2018/08/01 | Data do check-out |
af_destination_a | string | Londres | Localização do usuário |
af_destination_b | string | Madri | Localização do hotel |
af_num_adults | float | 2 | Quantidade de hóspedes |
af_num_children | float | 0 | Quantidade de crianças |
Exemplos 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);
Exibição de conteúdo
Nome do evento: af_content_view
Propósito
O propósito deste evento é mostrar a você quais hotéis os usuários estão visualizando. Você pode ver que tipo de propriedades estão procurando e quais são suas preferências quanto à temporada e localização. Você pode então redirecionar campanhas a esses usuários com anúncios e promoções. Além disso, você pode ver quais usuários visualizam e reservam e quais apenas visualizam. Para os usuários que reservam, você pode ver de quais fontes de mídias eles vem. Para os usuários que apenas visualizam, você pode tentar re-engajá-los com campanhas direcionadas.
Lógica do ativador
Acione este evento quando o usuário estiver vendo uma propriedade.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 674 | Preço tabela do hotel |
af_content_id | string | ODIRNH | Identificação do hotel |
af_date_a | string | 2018/07/26 | Data do check-in |
af_date_b | string | 2018/08/01 | Data do check-out |
af_destination_a | string | Londres | Localização do usuário |
af_destination_b | string | Madri | Localização do hotel |
af_class | string | Deluxe | Tipo de quarto |
af_num_adults | float | 2 | Quantidade de hóspedes |
af_num_children | float | 0 | Quantidade de crianças |
af_hotel_score | float | 9.6 | Pontuação do hotel por avaliações |
af_preferred_star_ratings | float | 5 | Preferência de classificação por estrela do hotel |
af_preferred_neighborhoods | string | Centro | Área onde o hotel está localizado |
Exemplos 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);
Adicionar a lista de desejos
Nome do evento: af_add_to_wishlist
Propósito
O evento Adicionar à lista de desejos indica hotéis e destinos que os usuários desejam reservar. Com o registro deste evento você obtém insight do que os usuários desejam. Se você souber que alguns usuários estão procurando hotéis específicos, em regiões específicas e com pontuações e classificações específicas, é possível direcionar e redirecionar esses usuários.
Lógica do ativador
Acione este evento quando um usuário adicionar uma listagem à lista de desejos.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 674 | Preço tabela do hotel |
af_content_id | string | ODIRNH | Identificação do hotel |
af_date_a | string | 2018/07/26 | Data do check-in |
af_date_b | string | 2018/08/01 | Data do check-out |
af_destination_a | string | Londres | Localização do usuário |
af_destination_b | string | Madri | Localização do hotel |
af_class | string | Deluxe | Tipo de quarto |
af_num_adults | float | 2 | Quantidade de hóspedes |
af_num_children | float | 0 | Quantidade de crianças |
af_hotel_score | float | 9.6 | Pontuação do hotel por avaliações |
af_preferred_star_ratings | float | 5 | Preferência de classificação por estrela do hotel |
af_preferred_neighborhoods | string | Centro | Área onde o hotel está localizado |
purchase_method | string | Cartão de crédito | Método de compra |
af_coupon_code | string | SUM2018 | Código promocional ou pontos de programas de fidelidade |
Tipo de Propriedade | string | Hotel | Tipo de propriedade |
Exemplos 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);
Finalização da compra iniciada
Nome do evento: af_initiated_checkout
Propósito
O propósito deste evento é permitir que você registre quantos usuários iniciaram o checkout. Além do mais, você pode ver qual método de compra eles usam para fazer o checkout (cartão de crédito, carteira digital) e, assim, direcioná-los. Você também pode ver quais usuários não finalizaram o processo de checkout e redirecioná-los. Você também pode ver quais usuários não finalizaram o processo de checkout e redirecioná-los.
Lógica do ativador
Acione este evento quando o usuário adicionar os dados de seu cartão de crédito ou vincular a sua carteira digital.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_price | float | 674 | Preço tabela do hotel |
af_content_id | string | ODIRNH | Identificação do hotel |
af_date_a | string | 2018/07/26 | Data do check-in |
af_date_b | string | 2018/08/01 | Data do check-out |
af_destination_a | string | Londres | Localização do usuário |
af_destination_b | string | Madri | Localização do hotel |
af_class | string | Deluxe | Tipo de quarto |
af_num_adults | float | 2 | Quantidade de hóspedes |
af_num_children | float | 0 | Quantidade de crianças |
af_hotel_score | float | 9.6 | Pontuação do hotel por avaliações |
af_preferred_star_ratings | float | 5 | Preferência de classificação por estrela do hotel |
af_preferred_neighborhoods | string | Centro | Área onde o hotel está localizado |
purchase_method | string | Cartão de crédito | Método de compra |
af_coupon_code | string | SUM2018 | Código promocional ou pontos de programas de fidelidade |
Tipo de Propriedade | string | Hotel | Tipo de propriedade |
Exemplos 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);
Reservas de viagem
Nome do evento: travel_booking
Propósito
O propósito do evento Reserva de viagem é permitir que você veja o índice total de reservas em seu aplicativo. Além do mais, com o registro deste evento é possível:
- Registrar a receita gerada a partir da reserva.
- Ver quantos usuários reservam hotéis com crianças.
- Compreender tendências sazonais.
- Descobrir quais hotéis são mais populares entre os usuários.
Lógica do ativador
Acione este evento quando o usuário acessar a página de agradecimento após reservar um hotel.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 647 | Receita das reservas |
af_currency | string | GBP | Código da moeda |
af_price | float | 674 | Preço tabela do hotel |
af_content_id | string | ODIRNH | Identificação do hotel |
af_date_a | string | 2018/07/26 | Data do check-in |
af_date_b | string | 2018/08/01 | Data do check-out |
af_destination_a | string | Londres | Localização do usuário |
af_destination_b | string | Madri | Localização do hotel |
af_class | string | Deluxe | Tipo de quarto |
af_num_adults | float | 2 | Quantidade de hóspedes |
af_num_children | float | 0 | Quantidade de crianças |
af_hotel_score | float | 9.6 | Pontuação do hotel por avaliações |
af_preferred_star_ratings | float | 5 | Preferência de classificação por estrela do hotel |
af_preferred_neighborhoods | string | Centro | Área onde o hotel está localizado |
purchase_method | string | Cartão de crédito | Método de compra |
af_coupon_code | string | SUM2018 | Código promocional ou pontos de programas de fidelidade |
Tipo de Propriedade | string | Hotel | Tipo de propriedade |
new_booking | booleano | verdadeiro | Primeira reserva do usuário |
Exemplos 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);
Primeira compra
Nome do evento: first_purchase
Propósito
Este evento é o mesmo que um evento de Compra. No entanto, ao contrário de um evento de Compra, o evento de Primeira compra pode ser usado para:
- Ver quanto tempo um comprador demora para comprar.
- Ver quais produtos os compradores que compram pela primeira vezes preferem.
- Ver a média de preço e receita de primeiras compras.
Lógica do ativador
Acione este evento quando o usuário concluir sua primeira compra.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 1200 | Receita da compra |
af_price | float | 4000 | Montante total da compra |
af_content_id | string | 121, 262 | ID do item |
af_content_type | string | hotel | Categoria do item |
af_currency | string | AUD | Moeda |
af_quantity | int | 1 | Quantidade de itens no carrinho |
af_order_id | string | X123ABC | ID do pedido gerada após a compra. |
af_receipt_id | string | X123ABC | ID do pedido, mas necessário para a integração de retargeting do CRITEO e Google AdWords |
Exemplos 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);
Saúde
Os aplicativos de saúde permitem que os usuários adquiram seguros de saúde, marquem consultas, recebam orientação médica etc. Os eventos in-app dos quais recomendamos a gravação em aplicativos de saúde incluem compras e reservas. Confira alguns exemplos de como o registro desses eventos pode beneficiá-lo:
- Registrar as compras ajuda você a entender quais medicamentos são os mais necessários e quais estão sob demanda.
- Registrar os planos de seguro ajuda você a entender em quais pacotes os usuários estão interessados.
- Registrar consultas ajuda você a entender com quais problemas médicos os usuários estão mais preocupados.
Login
Nome do evento: af_login
Propósito
Este evento pode ajudar você a compreender a retenção de seus usuários registrados.
Lógica do ativador
Acione este evento sempre que o usuário fizer login.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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);
Concluir cadastro
Nome do evento: complete_registration
Propósito
Você pode gravar o registro de usuários e compará-lo com outros dados para saber mais sobre seus usuários. Com a gravação de eventos de registro de usuários é possível:
- Saber quantos usuários instalaram o aplicativo, mas nunca se cadastraram.
- Saber quais métodos de cadastro seus usuários preferem.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | email, facebook | O tipo de método de cadastro |
Exemplos 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);
Consulta confirmada
Nome do evento: confirmed_appointment
Propósito
Você pode registrar quando um usuário fizer qualquer tipo de agendamento. Isso pode ser útil pois, por exemplo, ao registrar eventos de confirmação de agendamento, você pode enviar a esses usuários anúncios de retargeting e lembretes para exames regulares e consultas futuras.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário faz um agendamento.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do médico | string | Roberto Mendes | Nome do médico. |
número da consulta | string | 001 | Número da consulta. |
Exemplos 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);
Consulta cancelada
Nome do evento: canceled_appointment
Propósito
Você pode registrar quando um usuário cancelar um agendamento. Isso pode ser útil pois, por exemplo, ao registrar eventos de cancelamento de agendamentos, você pode enviar a esses usuários anúncios de retargeting para reagendar seus horários.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário cancela uma consulta.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do médico | string | Roberto Mendes | Nome do médico. |
número da consulta | string | 001 | Número da consulta. |
Exemplos 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);
Primeira consulta com médico
Nome do evento: doctor_first_booking
Propósito
Você pode registrar quando um usuário agenda sua primeira consulta. Isso pode ser útil pois, por exemplo, ao registrar os primeiros eventos de agendamento, você pode enviar anúncios promocionais/de retargeting a esses usuários.
Lógica do ativador
A melhor maneira de registrar este evento é acioná-lo quando o usuário fizer seu primeiro agendamento.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do médico | string | Roberto Mendes | Nome do médico. |
especialidade | string | neurologia | Especialidade médica. |
duração | string | conversa de 30 min | Duração da consulta. |
price | string | 50 | Preço da consulta. |
Exemplos 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);
Primeiro agendamento com laboratório
Nome do evento: lab_first_appointment
Propósito
Você pode registrar quando um usuário agenda sua primeira consulta. Isso pode ser útil pois, por exemplo, ao registrar os primeiros eventos de agendamento, você pode enviar anúncios promocionais/de retargeting a esses usuários.
Lógica do ativador
A melhor maneira de registrar este evento é acioná-lo quando o usuário fizer seu primeiro agendamento.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
seleção de laboratório | string | check-up de corpo inteiro | Nome do tipo de laboratório. |
quantity | string | 2 | Quantidade solicitada. |
price | string | 500 | Preço do laboratório. |
Exemplos 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);
Primeira compra em farmácia
Nome do evento: pharmacy_first_purchase
Propósito
Você pode registrar quando um usuário faz sua primeira compra em farmácia. Isso pode ser útil pois, por exemplo, ao registrar eventos de primeira compra, você pode enviar anúncios promocionais/de retargeting a esses usuários.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário fizer sua primeira compra.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do medicamento | string | rhinos | Nome do medicamento. |
quantity | string | 1 | Quantidade solicitada. |
price | string | 10 | Preço do medicamento. |
Exemplos 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);
Agendamento de consulta médica
Nome do evento: doctor_booking
Propósito
Você pode registrar quando um usuário agenda uma consulta presencial com um médico. Isso pode ser útil pois, por exemplo, o registro desses eventos de agendamento disponibiliza mais informações sobre as necessidades e os interesses do usuário.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário agendar uma consulta presencial.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do médico | string | Roberto Mendes | Nome do médico. |
especialidade | string | neurologia | Especialidade médica. |
duração | string | conversa de 30 min | Duração da consulta. |
price | string | 50 | Preço da consulta. |
Exemplos 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);
Conversa com médico
Nome do evento: chat_doctor
Propósito
Se o seu aplicativo permite que os usuários agendem conversas ao vivo com um médico, você pode registrar quando um usuário agenda tal conversa. Isso pode ser útil pois, por exemplo, o registro desses eventos de agendamento disponibiliza mais informações sobre as necessidades e os interesses do usuário.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário faz um agendamento.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do médico | string | Roberto Mendes | Nome do médico. |
especialidade | string | neurologia | Especialidade médica. |
duração | string | conversa de 30 min | Duração da consulta. |
price | string | 50 | Preço da consulta. |
Exemplos 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);
Agendamento no laboratório
Nome do evento: lab_appointment
Propósito
Você pode registrar quando um usuário agenda um horário no laboratório. Isso pode ser útil pois, por exemplo, ao registrar eventos de agendamento, você pode enviar anúncios promocionais/de retargeting a esses usuários.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário faz um agendamento no laboratório.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
seleção de laboratório | string | check-up de corpo inteiro | Nome do tipo de laboratório. |
quantity | string | 2 | Quantidade solicitada. |
price | string | 500 | Preço do laboratório. |
Exemplos 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 em farmácia
Nome do evento: pharmacy_purchase
Propósito
Você pode registrar quando um usuário faz uma compra em farmácia. Isso pode ser útil pois, por exemplo, ao registrar eventos de compra, você pode enviar anúncios promocionais/de retargeting a esses usuários.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário faz uma compra em farmácia.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do medicamento | string | rhinos | Nome do medicamento. |
quantity | string | 1 | Quantidade solicitada. |
price | string | 10 | Preço do medicamento. |
Exemplos 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);
Adicionar ao carrinho
Nome do evento: add_to_cart
Propósito
Você pode registrar quando um usuário adiciona um medicamento ao seu carrinho de compras. Isso pode ser útil pois, por exemplo, ao registrar eventos de adicionar ao carrinho, você pode enviar promoções/lembretes para finalizar a compra e concluir a compra.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário adiciona um produto ao carrinho de compras.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do medicamento | string | rhinos | Nome do medicamento. |
quantity | string | 1 | Quantidade solicitada. |
price | string | 10 | Preço do medicamento. |
Exemplos 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);
Adesão ao seguro
Nome do evento: insurance_membershipq
Propósito
Se o seu aplicativo se associa com uma seguradora para oferecer opções de seguro, você pode registrar quando um usuário faz adesão ao seguro. Isso pode ser útil pois, por exemplo, ao registrar eventos de inscrição de associação de seguro, você aprende mais sobre seus usuários e pode redirecioná-los da maneira adequada.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário solicita adesão ao seguro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do seguro | string | DavidShield | Nome da companhia de seguros. |
tipo de seguro | string | premium | Tipo de plano de seguro. |
Exemplos 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);
Emissão de recibo
Nome do evento: receipt_issuance
Propósito
Registre quando seus usuários recebem recibos. Os usuários com um recibo podem potencialmente pedir reembolso do custo da consulta médica, laboratório ou medicamento a uma seguradora. E isso pode ser útil pois, por exemplo, ao registrar eventos de emissão de recibos, você pode usar os dados para retargeting de campanhas sobre cobertura de seguro pessoal.
Lógica do ativador
A melhor maneira de registrar esse evento é acioná-lo quando o usuário recebe um recibo.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
nome do aplicativo | string | Aplicativo de saúde | Nome do seu aplicativo |
nome do médico | string | Roberto Mendes | Nome do médico. |
descrição da consulta | string | febre | Descrição da condição de saúde. |
Exemplos 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
Nome do evento: af_purchase
Propósito
Registre compras in-app feitas pelos usuários. Com o registro das compras, é possível:
- Descobrir o LTV de seus usuários e o ROI de suas campanhas em redes e agências de anúncios.
- Descobrir quais ofertas são mais populares entre seus usuários.
- Fazer referência cruzada de campanhas com itens comprados para otimizar o direcionamento de campanhas.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando o usuário acessar a página de agradecimento após uma compra bem-sucedida.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 50 | A receita da compra. |
af_currency | string | USD | O código da moeda. |
af_content_type | string | laboratório | O nome da compra. |
af_order_id | string | 9277 | O ID do pedido. |
payment_method_type | string | cartão de crédito, local | Método de pagamento. |
Exemplos 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);
Sucesso na recarga
Nome do evento: af_top_up_success
Propósito
Os fundos de recarga podem ser usados para comprar qualquer pacote ou serviço oferecido dentro do aplicativo. Você pode registrar recargas de usuários e compará-las com outros dados para saber mais sobre seus usuários. Ao registrar eventos de recarga do usuário, você pode:
- Saber quais valores as pessoas estão dispostas a depositar em suas contas.
- Usar os valores de recarga para direcionar usuários com campanhas personalizadas dentro do seu orçamento de recarga.
Lógica do ativador
Para gravar esse evento corretamente, você deve dispará-lo quando o usuário concluir a recarga.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | string | 2000 | O valor da recarga. |
top_up_id | string | 397 | A ID da recarga. |
payment_method_type | string | cartão de crédito, pagamento local | Método de pagamento usado. |
Exemplos 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);
Telecomunicações
Os aplicativos de telecomunicações permitem que os usuários adquiram e gerenciem planos de celular, planos de dados etc. Os eventos in-app que recomendamos gravar em aplicativos de telecomunicações incluem compras, recargas e assinaturas. Confira alguns exemplos de como a gravação desses eventos pode ajudar:
- A gravação de compras ajuda você a entender quais planos de gateway são os mais populares.
- A gravação de recargas ajuda você a entender quais produtos ou pacotes os usuários podem pagar.
- O gravação de assinaturas ajuda você a entender quais planos os clientes tendem a adquirir por um período longo.
Login
Nome do evento: af_login
Propósito
Este evento pode ajudar você a compreender a retenção de seus usuários registrados.
Lógica do ativador
Acione este evento sempre que o usuário fizer login.
Campos recomendados
Este evento pode ser enviado sem campos adicionais.
Exemplos 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
Nome do evento: af_purchase
Propósito
Muitos aplicativos de telecomunicações permitem que os usuários comprem itens, por exemplo, pacote adicional de dados. O evento Compra ajuda você a registrar compras in-app feitas por usuários. Com o registro de compras é possível:
- Descobrir o LTV de seus usuários e o ROI de suas campanhas em redes e agências de anúncios.
- Descobrir quais ofertas são mais populares entre seus usuários.
- Fazer referência cruzada de campanhas com itens comprados para otimizar o direcionamento de campanhas.
Lógica do ativador
Para registrar este evento de forma adequada, é necessário acioná-lo quando o usuário acessar a página de agradecimento após uma compra bem-sucedida.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | float | 2000 | A receita estimada de uma compra |
af_currency | string | THB | O código da moeda |
af_content_type | string | 5G | O nome do pacote comprado. |
af_order_id | string | 9277 | A ID do pedido |
payment_method_type | string | cartão de crédito, pagamento local | Tipo de método de pagamento |
Exemplos 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);
Concluir cadastro
Nome do evento: complete_registration
Propósito
Você pode gravar o registro de usuários e compará-lo com outros dados para saber mais sobre seus usuários. Com a gravação de eventos de registro de usuários é possível:
- Saber quantos usuários instalaram o aplicativo, mas nunca se cadastraram.
- Saber quais métodos de cadastro seus usuários preferem.
Lógica do ativador
A melhor forma de gravar este evento é acioná-lo quando o usuário concluir o processo de cadastro.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_registration_method | string | email, facebook | O tipo de método de cadastro |
Exemplos 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);
Sucesso na recarga
Nome do evento: af_top_up_success
Propósito
Os fundos da recarga podem ser usados para comprar qualquer pacote ou qualquer outro serviço oferecido dentro do aplicativo. Você pode gravar recargas de usuários e compará-las com outros dados para saber mais sobre seus usuários. Ao gravar eventos de recarga do usuário, você pode:
- Saber quais valores as pessoas estão dispostas a depositar em suas contas.
- Usar os valores de recarga para direcionar usuários com campanhas personalizadas dentro do seu orçamento de recarga.
Lógica do ativador
Para gravar esse evento corretamente, você deve dispará-lo quando o usuário concluir a recarga.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_revenue | string | 2000 | O valor da recarga. |
top_up_id | string | 397 | A ID da recarga. |
payment_method_type | string | cartão de crédito, pagamento local | Método de pagamento usado. |
Exemplos 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 malsucedida
Nome do evento: af_top_up_unsuccessful
Propósito
Você pode gravar eventos de recargas malsucedidas e compará-los com outros dados para saber mais sobre seus usuários. Por exemplo, ao gravar carregamentos malsucedidos, você pode saber quantos usuários tentam fazer recarga, mas não conseguem.
Lógica do ativador
A melhor maneira de gravar esse evento é dispará-lo quando o usuário tenta fazer a recarga mas não consegue.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
error_reason | string | exceeded_daily_limit | O motivo para falha na recarga. |
Exemplos 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);
Assinatura concluída
Nome do evento: af_subscription_complete
Propósito
Com o registro de eventos de assinatura de usuários é possível:
- Ver quais campanhas fazem que os usuários façam a assinatura.
- Comparar o número de usuários com assinatura com usuários sem assinatura.
- Gravar a receita gerada pelas assinaturas e atribuí-la a campanhas e fontes de mídia.
Lógica do ativador
Acione este evento em um dos dois cenários:
- Quando o usuário faz a assinatura com sucesso.
- Quando uma assinatura é renovada.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
af_subscription_type | string | Mensal 30 GB | Tipo de assinatura. |
af_revenue | string | 555 | Valor da assinatura. |
Exemplos 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);
Selecione o pacote
Nome do evento: select_package
Propósito
Você pode registrar quando um usuário decide comprar um pacote, mas ainda não fez o pagamento. Isso pode ajudar pois, por exemplo, quando você registra eventos de seleção de pacotes, você pode enviar aos usuários anúncios de retargeting e lembretes para que eles concluam suas assinaturas.
Lógica do ativador
A melhor forma de gravar esse evento é dispará-lo quando o usuário seleciona um pacote, mas não concluiu o pagamento.
Campos recomendados
Nome do campo | Tipo | Exemplo de valor | Descrição |
---|---|---|---|
price | string | 50000 | O preço da assinatura. |
af_content_type | string | Dados 5 GB | Se o certificado foi emitido. |
Exemplos 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);