En bref : mesurez la qualité de vos utilisateurs tout au long de leur parcours en enregistrant ces événements in-app suggérés pour votre app de réservation de vols.
Réservation de vols
Les apps de réservation de vols permettent aux voyageurs de réserver facilement des vols et d'obtenir les meilleures offres. Les évènements que nous vous recommandons d'enregistrer sont la réservation d'un vol, la recherche de vols et la visualisation des offres.
L'enregistrement de cet évènement peut vous aider à :
- Découvrir les destinations populaires.
- Analyser les tendances saisonnières
- Découvrir les compagnies aériennes populaires avec lesquelles les utilisateurs préfèrent voyager
Important !
- Veillez à lire les instructions à l'attention des marketeurs pour implémenter les événements in-app.
- Pour simplifier l'implémentation, téléchargez un fichier CSV contenant tous les événements in-app de base décrits dans cet article, puis modifiez les événements en fonction des besoins de votre entreprise. Une fois terminé, partagez le fichier avec votre développeur.
- Pour chaque événement recommandé que contient cet article, vous trouverez des extraits de code pour les développeurs iOS, Android et Unity.
- Si votre développeur a besoin d'instructions détaillées, elles se trouvent dans le hub des développeurs AppsFlyer.
Pour plus d'informations sur l'enregistrement des événements in-app, consultez le guide des événements in-app riches.
Structures recommandées pour les événements prédéfinis
La section suivante fournit une liste des structures d'événements typiques du secteur de la réservation de vols. Chaque structure donne un nom d'événement prédéfini, ainsi que des suggestions de paramètres d'événement à appliquer. Veuillez noter que les événements in-app peuvent inclure tous les paramètres d'événement qui correspondent à vos besoins.
Inscription terminée (af_complete_registration)
Objectif
Découvrez combien d'utilisateurs ont installé l'app et terminé le processus d'inscription, ainsi que les méthodes d'inscription préférées de vos utilisateurs.
Déclencheur
Lorsque l'utilisateur finalise le processus d'inscription
Paramètres d'événement
Nom du champ | Description | Exemple de valeur |
---|---|---|
af_registration_method | Le type de méthode d'inscription | email, facebook |
Exemples de code
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);
Connexion (af_login)
Objectif
Comprendre le taux de rétention de vos utilisateurs inscrits
Déclencheur
Lorsque l'utilisateur se connecte avec succès
Paramètres d'événement
Peut être envoyé sans paramètre supplémentaire
Exemples de code
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),
AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin
withValues: nil
];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent ("af_login", null);
Réservation de voyage (travel_booking)
Objectif
La possibilité de réserver des vols constitue la fonctionnalité principale de l'app. Cet événement peut vous aider à déterminer :
- Destinations populaires
- Compagnies aériennes populaires
- Tendances saisonnières
Déclencheur
Lorsque l'utilisateur atterrit sur la page de remerciement une fois la réservation de vol terminée
Paramètres d'événement
Nom | Description | Exemple de valeur |
---|---|---|
af_revenue | Revenu associé à la réservation | 647.99 |
af_currency | Code de devise | SGD |
af_price | Prix | 674 |
af_content_id | ID de l'offre de vol | ODIRNH |
af_departing_departure_date | Date de départ | 2018-06-21 |
af_returning_departure_date | Date de retour | 2018-06-26 |
af_destination_a | Première destination | BKK |
af_destination_b | Deuxième destination (le cas échéant) | SYD |
airline_code | Code de la compagnie aérienne | KLM |
af_class | Classe du vol réservé | classe économique |
purchase_method | Méthode d'achat | carte de crédit |
Exemples de code
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 647.99);
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.99,
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.99,
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.99");
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);
Affichage du contenu (af_content_view)
Objectif
Cet événement peut vous aider à déterminer :
- Les offres de vol les plus attrayantes pour les utilisateurs
- Si les résultats proposés répondent bien aux éléments recherchés
Déclencheur
Lorsqu'un utilisateur clique sur un résultat de recherche
Paramètres d'événement
Nom | Description | Exemple de valeur |
---|---|---|
af_departing_departure_date | Date de départ | 2018-06-21 |
af_returning_departure_date | Date de retour | 2018-06-26 |
af_destination_a | Première destination | BKK |
af_destination_b | Deuxième destination (le cas échéant) | SYD |
Exemples de code
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);
Recherche (af_search)
Objectif
Les apps de réservation de vols permettent aux utilisateurs de rechercher des vols et des offres. Pour obtenir des informations sur les préférences des utilisateurs, vous pouvez par exemple enregistrer les paramètres de recherche. Cet évènement peut vous aider à :
- Savoir ce que les utilisateurs recherchent
- Découvrir quelles destinations sont les plus demandées
- Découvrir le nombre d'utilisateurs voyageant avec des enfants
- Découvrir à quelle période de l'année les utilisateurs préfèrent ou prévoient de voyager
Déclencheur
Après que l'utilisateur a rempli le formulaire de recherche et cliqué sur le bouton de recherche
Paramètres d'événement
Nom | Description | Exemple de valeur |
---|---|---|
af_num_children | Nombre d'enfants qui voyagent | 0 |
af_destination_a | Première destination | BKK |
af_destination_b | Deuxième destination (le cas échéant) | SYD |
af_departing_departure_date | Date de départ | 2018-06-21 |
af_returning_departure_date | Date de retour | 2018-06-26 |
af_num_infants | Nombre de bébés qui voyagent | 0 |
af_num_adults | Nombre d'adultes qui voyagent | 1 |
Exemples de code
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);
Ajouter des informations de paiement (af_add_payment_info)
Objectif
Enregistrer les tentatives réussies et infructueuses d'ajout des informations de paiement lors de la réservation d'un vol.
Déclencheur
Lorsqu'un utilisateur clique sur le bouton de réservation
Paramètres d'événement
Nom | Description | Exemple de valeur |
---|---|---|
af_success | Si l'ajout de la méthode de paiement a réussi ou non | true |
Exemples de code
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);
Achat (af_purchase)
Objectif
Découvrir les tendances d'achat dans votre app de réservation de vols. Cet évènement peut vous aider à :
- Déterminer la LTV de vos utilisateurs et le ROI de vos campagnes sur les réseaux publicitaires et les agences de publicité
- Déterminer quelles offres sont les plus populaires auprès de vos utilisateurs
- Réaliser une référence croisée de campagne avec les articles qui ont été achetés afin d'optimiser le ciblage de vos campagnes
Déclencheur
Lorsque l'utilisateur atterrit sur la page de remerciement une fois l'achat terminé
Paramètres d'événement
Nom | Description | Exemple de valeur |
---|---|---|
af_revenue | Le revenu estimé provenant de l'achat | 1205.99 |
af_price | Montant global des achats | 4000 |
af_content_id | ID de l'article | 121 |
af_content_type | Catégorie de l'article | flight |
af_currency | Code de devise | AUD |
af_quantity | Nombre d'articles dans le panier | 1 |
af_order_id | ID de la commande générée après l'achat. | X123ABC |
af_receipt_id | ID de commande, nécessaire pour l'intégration du retargeting CRITEO et Google AdWords | X123ABC |
Exemples de code
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 4000);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "121");
// for multiple product categories, set the param value as: // new String {"121", "262"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "flight");
// for multiple product categories,, set the param value as: new String {"flight", "meals"}
eventValue.put(AFInAppEventParameterName.CURRENCY, "AUD");
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: @1205.99,
AFEventParamPrice: @4000,
AFEventParamContentId: @"121",
// for multiple product categories, set the param value as:
// @[@"121", @"124"]
AFEventParamContentType: @"flight",
// for multiple product categories, set the param value as:
// @[@"flight", @"meals"]
AFEventParamCurrency: @"AUD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as:
// @[@2, @5]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase, withValues: [
AFEventParamRevenue: 1205.99,
AFEventParamPrice: 4000,
AFEventParamContentId: "121",
// for multiple product categories, set the param value as: ["221", "124"],
AFEventParamContentType: "flight",
// for multiple product categories, set the param value as: ["flight", "meals"]
AFEventParamCurrency: "AUD",
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", "1205.99");
PurchaseEvent.Add("af_price", "4000");
PurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["121", "124"]
PurchaseEvent.Add("af_content_type", "flight");
// for multiple product categories, set the param value as: ["flight", "meals"]
PurchaseEvent.Add("af_currency", "AUD");
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);
Structures recommandées pour les événements personnalisés
La section suivante fournit une liste de structures d'événements qui comprennent des noms d'événements personnalisés et les suggestions de paramètres d'événement à utiliser. Veuillez noter que les événements in-app peuvent inclure tous les paramètres d'événement qui correspondent à vos besoins.
Premier achat (first_purchase)
Objectif
Identique à l'événement Achat. Cet événement peut également vous aider à déterminer :
- Combien de temps il faut à un nouvel acheteur pour procéder à l'achat
- Les vols que les nouveaux acheteurs réservent le plus
- Le prix moyen et les revenus issus des premiers achats
Déclencheur
Lorsque l'utilisateur finalise son premier achat
Paramètres d'événement
Nom | Description | Exemple de valeur |
---|---|---|
af_revenue | Revenu des achats | 1205.99 |
af_price | Montant global des achats | 4000 |
af_content_id | ID de l'article | 121, 262 |
af_content_type | Catégorie de l'article | flight |
af_currency | Devise | AUD |
af_quantity | Quantité d'articles dans le panier | 1 |
af_order_id | ID de la commande qui est généré après l'achat. | X123ABC |
af_receipt_id |
ID de commande, nécessaire pour l'intégration du retargeting CRITEO et Google AdWords |
X123ABC |
Exemples de code
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 4000);
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: @1205.99,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"flight",
// 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: 1205.99,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "flight",
// 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", "1205.99");
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", "flight");
// 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);