Intégration du SDK AppsFlyer - iOS

ios.pngSDK Version: 4.8.9(Release notes)

1. Aperçu

Ce guide détaille la marche à suivre pour intégrer le SDK AppsFlyer dans votre application iOS. Vous pouvez suivre les installations, les mises à jour, les sessions et les évènements in-app, ainsi que les installations d'applications (y compris les achats in-app, les niveaux de jeu, etc.) pour évaluer le ROI et le niveau d'engagement des utilisateurs. Le SDK iOS est compatible avec tous les appareils iOS (iPhone, iPod, iPad) fonctionnant sous iOS version 6 et ultérieures.

 Remarque

Le SDK AppsFlyer est entièrement compatible avec les réseaux DNS64/NAT64 IPv6 d’Apple. Pour plus d'informations, veuillez cliquer ici.

 Important !

Le SDK AppsFlyer utilise la classe NSUserDefaults. Effacer toutes les valeurs de NSUserDefaults peut provoquer des problèmes d’attribution.

2. Démarrage rapide

2.1 Télécharger et ajouter le SDK AppsFlyer à Xcode

CocoaPods Carthage Static Framework Static Lib
  • Assurez-vous que vous avez téléchargé et installé la dernière version de CocoaPods.
  • Ajoutez la ligne suivante à votre Podfile :
    pod 'AppsFlyerFramework'
  • Exécutez pod install
  • Assurez-vous que vous utilisez le fichier .xcworkspace pour ouvrir votre projet dans Xcode, à la place du fichier .xcodeproj à partir de ce stade.

Le SDK AppsFlyer utilise les cadres natifs suivants :

AdSupport.framework
Ce cadre est nécessaire pour collecter l’IDFA des appareils.
Sans IDFA vous ne pouvez pas suivre Facebook Ads, Twitter, Google ads et les autres réseaux.
iAd.framework
Ce cadre est requis pour suivre les Apple Search Ads dans votre application

2.2 Configurer l’intégration dans App Delegate

Ouvrez le fichier AppDelegate.m de votre application et importez le SDK AppsFlyer :

Swift Objective-C
importez AppsFlyerLib

3. Initialisation du SDK

Initialisez le SDK dans la méthode didFinishLaunchingWithOptions en utilisant votre ID application extrait de iTunes Connect et votre DevKey AppsFlyer

Notez que vous devez utiliser des chiffres uniquement, sans le préfixe « id » pour définir l'ID application ici.

Swift Objective-C
AppsFlyerTracker.shared().appsFlyerDevKey = "<your-appsflyer-dev-key>";
AppsFlyerTracker.shared().appleAppID = "123456789"
AppsFlyerTracker.shared().delegate = self
#ifdef DEBUG AppsFlyerTracker.shared().isDebug = true
#endif

 Remarque

Si isDebug = true est défini, les journaux du SDK AppsFlyer sont affichés dans la console xCode

 

  • Ajoutez le code suivant à la fonction applicationDidBecomeActive :
Swift Objective-C
func applicationDidBecomeActive(application: UIApplication) { 
// Track Installs, updates & sessions(app opens) (You must include this API to enable tracking) 
AppsFlyerTracker.shared().trackAppLaunch() 
// your other code here.... }

4. Suivi des évènements In-App

Les évènements In-App permettent d'analyser ce qui se passe dans votre application. Il est recommandé de prendre le temps de définir les évènements que vous voulez mesurer pour vous permettre de suivre le ROI (Return On Investment) et la LTV (Lifetime Value).

Tracking in-app events is performed by calling trackEvent with event name and value parameters. See In-App Events for more details.

Le nom d’un évènement in-app ne doit pas dépasser 45 caractères. Les noms d’évènements dépassant 45 caractères n’apparaissent pas dans le tableau de bord, mais seulement dans les API de données brutes, Push et Pull.

Exemple : Évènement In-App de niveau terminé

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventLevelAchieved, 
withValues: [
	AFEventParamLevel: 9,
	AFEventParamScore : 100
]);

Ceci génère un évènement de type af_level_achieved (utilisant la constante AFEventLevelAchieved) avec les valeurs d'évènement suivantes : {af_level: 9 , af_score: 100} 

 Remarque

AppsFlyer prend en charge les caractères non anglais dans les évènements in-app ou toute autre API SDK, en commençant par le SDK iOS version 4.8.1.

Ne pas ajouter de symbole monétaire ou de points décimaux aux chiffres, car ils ne sont pas reconnus.

 Exemple d'utilisation

Swift Objective C
AppsFlyerTracker.shared().trackEvent(AFEventPurchase,
withValues: [
    AFEventParamRevenue: @1200,
    AFEventParamCurrency : @"JPY"
]); 

5. Suivi du Deep Linking

 Astuce

Nous vous recommandons fortement d'intégrer le Deep Linking à votre application.  Le Deep Linking est un élément crucial des campagnes de retargeting, et il est fortement recommandé de l'utiliser quand on exécute des campagnes de retargeting.

iOS9 et les versions ultérieures nécessitent que votre application prenne en charge les Universal Links. Pour plus de détails, veuillez cliquer ici.


Pour reporter ces lancements, ajoutez le code suivant à l'AppDelegate :

Swift Objective-C
// Reporte l'ouverture d'application depuis un Universal Link pour iOS 9 et versions ultérieures
    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
        AppsFlyerTracker.shared().continue(userActivity, restorationHandler: restorationHandler)
        return true
    }

    // Reporte l'ouverture d'application depuis un deep link pour les applications ne supportant pas les Universal Links (Twitter) et pour iOS8 et les versions antérieures
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, sourceApplication: sourceApplication, withAnnotation: annotation)
        return true
    }

    // Reporte l'ouverture d'application depuis un deep link pour les applications ne prenant pas en charge les Universal Links (Twitter) et pour iOS 10 et les versions antérieures
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, options: options)
        return true
    }

6. Suivi des revenus

Use the af_revenue (AFEventParamRevenue) event parameter to count revenue as part of an in-app event. You can populate it with any numeric value, positive or negative.

 Remarque

AFEventParamRevenue (equivalent to using af_revenue) is the ONLY event parameter that is counted on AppsFlyer as real revenue on the raw data and dashboard. For more details please click here.


Exemple : Évènement In-App de revenu

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventPurchase, 
withValues: [
	AFEventParamContentId:"1234567",
	AFEventParamContentType : "category_a",
	AFEventParamRevenue: 1.99,
	AFEventParamCurrency:"USD"
]);

7. Obtenir les données de conversion

AppsFlyer vous permet d’accéder aux données d’attribution de l’utilisateur en temps réel pour chaque nouvelle installation, directement au niveau SDK. En faisant cela, vous pouvez offrir aux utilisateurs un contenu personnalisé ou les envoyer vers des activités spécifiques au sein de l’application, ce qui peut considérablement améliorer leur engagement avec votre application.

Pour plus d’informations au sujet de cette fonctionnalité avancée, cliquez ici.

8. Identifiants utilisateur

Il existe plusieurs options pour récupérer les identifiants utilisateur :

Obtenez le DeviceID AppsFlyer

Le DeviceID unique d'AppsFlyer est créé pour chaque nouvelle installation d’une application. Vous pouvez l’obtenir en utilisant le code suivant :

Swift Objective-C
let appsflyerId = AppsFlyerTracker.shared().getAppsFlyerUID()

Définir l'ID Utilisateur-Client

Définir votre propre ID client vous permet de croiser votre propre ID unique avec l'ID unique d'AppsFlyer et les ID des autres appareils. Cet ID est disponible dans les rapports CSV d'AppsFlyer, avec les API de postback, vous permettant de les croiser avec vos ID internes.

Pour définir votre ID Utilisateur-Client :

Swift Objective-C
AppsFlyerTracker.shared().customerUserID = "my user id"

 Remarque importante

It is recommended to set your Customer User ID as soon as possible as it is only associated to events reported after its setup. If setCustomerUserId is called before calling trackAppLaunch, the Customer User ID is visible in the raw export for installs and for events. If it is set after, only the value only for events tracked is visible after calling this method.

Customer User ID can also be used to complete integrations with Analytics platforms such as Mixpanel and Swrve.

Obtenir l'ID Utilisateur-Client :

Pour éviter de redéfinir la valeur de l'ID Utilisateur-Client après le premier lancement, vous pouvez vérifier si sa valeur est vide ou non en utilisant : 

[AppsFlyerTracker sharedTracker].customerUserID

Pour plus d’informations sur l’ID Utilisateur-Client, cliquez ici.

Définir l'E-mail Utilisateur

AppsFlyer vous permet de reporter une ou plusieurs adresses e-mail utilisateur, si vous les collectez dans votre application. Les valeurs d'e-mail peuvent être cryptées par les méthodes de chiffrement suivantes : Sha1 et MD5 et en clair.

Exemple : Collecter l'e-mail utilisateur

Swift Objective-C
AppsFlyerTracker.shared().setUserEmails( ["email1@domain.com", "email2@domain.com"], 
with: EmailCryptTypeSHA1)

 Remarque

Les renseignements personnels (PII) tels que les adresses e-mail ne sont pas conservés par AppsFlyer et ces informations ne sont pas présentées dans les rapports. Le but de la collecte de ces informations est uniquement à des fins de postback vers la source média.

IDFA et IDFV

AppsFlyer recueille automatiquement l’IDFA (ID pour les annonceurs) et IDFV (ID pour les vendeurs) si AdSupport.framework est inclus dans l’application.

9. Fonctionnalités facultatives

Suivi des désinstallations

Pour le suivi de désinstallation, activez la notification push distante sur votre application. Consultez le Remote Notification Programming Guide d'Apple pour plus de détails.

Suivez les instructions d’intégration du SDK iOS pour terminer la configuration de la fonctionnalité de désinstallation.

Suivi des Notifications Push

Pour activer le suivi des lancements d'application par les notifications push, ajoutez le code suivant à votre app delegate :

Swift Objective-C
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
	AppsFlyerTracker.shared().handlePushNotification(userInfo)
}

Le message push doit avoir un paramètre af avec les paramètres de suivi AppsFlyer.

Exemple de message :

{
   "aps":{
      "alert":"Push text",
      "sound":"default",
      "category":"REMINDER_CATEGORY"
   },
   "_p":123456,
   "payloadKey":"payloadValue",
   "af":{
      "pid":"swrve_int",
      "is_retargeting":"true",
      "c":"test_campaign"
   }
}

Suivi des Promotions Croisées

AppsFlyer vous permet de suivre et d'attribuer les installations provenant d'une promotion croisée de l'une de vos applications au sein de l'application actuelle dont dispose l'utilisateur. Les applications de promotion croisée peuvent être un facteur de croissance important en entrainant des installations supplémentaires pour vos applications.

Pour plus d'informations, reportez-vous à l'article concernant le suivi de promotion croisée, ici.

Suivi des invitations utilisateur

AppsFlyer vous permet de suivre et d'attribuer les installations provenant d'invitations utilisateur au sein de votre application. Le fait de permettre à vos utilisateurs existants d'inviter leurs amis et contacts en tant que nouveaux utilisateurs de votre application peut être un facteur de croissance important pour votre application. 
 
Pour plus d'informations, reportez-vous à l'article concernant le suivi des invitations utilisateur, ici.

Configuration du Code Devise

Vous pouvez définir un code de devise global en utilisant l'API ci-dessous, en plus des codes de devise spécifiques pouvant être utilisés dans le cadre de chaque événement in-app envoyé à AppsFlyer. Le code de devise global est utilisé lorsque AFEventParamCurrency n'est pas envoyé dans le cadre d'un évènement in-app.

La valeur par défaut est USD. Vous pouvez trouver les codes devise ISO acceptables ici.

Utilisez l'API suivante pour configurer le code de devise :

public void currencyCode(String currencyCode);

Exemple d'utilisation :

Swift Objective-C
AppsFlyerTracker.shared().currencyCode = "USD"

Validation des achats in-app

 Remarque

Cette fonction est prise en charge pour iOS7 et les versions ultérieures

Le SDK AppsFlyer peut fournir une vérification serveur des achat in-app. Pour configurer le suivi de validation de reçu, vous devez appeler la méthode validateAndTrackInAppPurchase dans le callback Transaction finalisée du SKStoreKit. Cet appel génère automatiquement un évènement in-app af_purchase.

- (void) validateAndTrackInAppPurchase:(NSString *) productIdentifier
price:(NSString *) price
currency:(NSString *) currency
transactionId:(NSString *) tranactionId
additionalParameters:(NSDictionary *) params
success:(void (^)(NSDictionary *response)) successBlock
failure:(void (^)(NSError *error, id reponse)) failedBlock;

 Remarque

Le paramètre de prix doit contenir le revenu total associé à l’événement d'achat validé.


Cet appel contient deux blocs de callback, l'un pour la « réussite » et l'autre pour « l'échec » (quelle qu'en soit la raison, y compris l'échec de validation). En cas de réussite, un dictionnaire est retourné avec les données de validation de reçu fournies par les serveurs d’Apple. 

 Important

À des fins de test, nous vous recommandons de définir l’indicateur useReceiptValidationSandbox sur OUI, car cela redirige les requêtes vers les serveurs sandbox d’Apple.

#ifdef DEBUG
    [AppsFlyerTracker sharedTracker].useReceiptValidationSandbox = YES;
#endif

 

 Exemple

Objective-C Swift
[[AppsFlyerTracker sharedTracker] validateAndTrackInAppPurchase:product.productIdentifier price:product.price.stringValue
currency:@"USD"
transactionId:trans.transactionIdentifier
additionalParameters:@{@"test": @"val" , @"test1" : @"val 1"}
success:^(NSDictionary *result){
  NSLog(@"Purchase succeeded And verified!!! response: %@", result[@"receipt"]);
} failure:^(NSError *error, id response) {
  NSLog(@"response = %@", response);
}];

Pour obtenir la liste des valeurs possibles de retour pour la validation des reçus, veuillez vous reporter à la documentation d’Apple ici.

Anonymisation

AppsFlyer vous fournit une méthode permettant d'anonymiser des identifiants utilisateur spécifiques dans les analyses AppsFlyer. Cette méthode est conforme aux dernières exigences de confidentialité ainsi qu'aux politiques de confidentialité des données de Facebook. La valeur par défaut est NON, ce qui signifie qu'aucune anonymisation n'est effectuée par défaut.

Utilisez cette API lors de l'initialisation du SDK pour anonymiser explicitement les installations, les évènements et les sessions d'un utilisateur :

Swift Objective-C
AppsFlyerTracker.shared().deviceTrackingDisabled = true

Il est possible de reprendre le suivi en appelant de nouveau deviceTrackingDisabled, défini sur false.

 Avertissement

L'anonymisation des utilisateurs impacte FORTEMENT vos informations d'attribution.
Utilisez cette option UNIQUEMENT pour les régions dans lesquelles vous êtes légalement tenu de ne pas collecter les informations de vos utilisateurs.

Personnalisation de la durée entre sessions

By default, at least 5 seconds must lapse between 2 app launches to count as separate 2 sessions (more about counting sessions). 
However, you can use the following API to set your custom value for the minimum required time between sessions:

Swift Objective-C
AppsFlyerTracker.shared().minTimeBetweenSessions = <votre_temps_personnalisé_en_secondes>

Note that setting a high value to the custom time between launches may badly impact APIs relying on sessions data, such as deep linking.

Sessions d'arrière-plan pour applications utilitaires

Non disponible pour iOS. 
 

Extensions d'application et WatchKit iOS

L’extension de l’application requiert des autorisations pour utiliser internet :

  1. Allez au fichier info.plist de l’extension de votre application
  2. Dans NSExtension / NSExtensionAttributes définissez l'indicateur RequestsOpenAccess sur YES.

Ajoutez le code suivant au UIViewController de l’extension de l’application viewDidLoad :

Swift Objective-C
override func viewDidLoad() {    
        super.viewDidLoad()
        AppsFlyerTracker.shared().appsFlyerDevKey = "MY_APPSFLYER_KEY"

        // MY_APP_ID below stands for you app ID on iTunes Connect. Should be 9 or 10 digits.
        AppsFlyerTracker.shared().appleAppID = "MY_APP_ID"
                
        AppsFlyerTracker.sharedTracker().trackAppLaunch()
    }

Pour recevoir les données d’attribution sur l’extension de l’application, suivez les instructions ici et implémentez-les sur le UIViewController de votre application au lieu du AppDelegate.

Exclusion

In some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK no longer communicates with our servers and stops functioning.

Il existe différents scénarios d'exclusion d'utilisateurs. Nous recommandons vivement de suivre les instructions exactes du le scénario qui correspond à votre application.

 Avertissement

Utilisez cette API uniquement lorsque vous souhaitez exclure cet utilisateur de tout suivi. L'utilisation de cette API impacte FORTEMENT votre reporting et votre attribution.

Swift Objective-C
AppsFlyerTracker.shared().isStopTracking = true

 Important

N'appelez pas la méthode trackAppLaunch si l'API isStopTracking est définie sur true

Collecte du nom d'appareil

Le SDK AppsFlyer vous permet de collecter le nom de l'appareil pour votre analyse interne. Cette fonctionnalité est désactivée par défaut. Pour l'activer, utilisez l'API suivante :

Swift Objective-C
>AppsFlyerTracker.shared().shouldCollectDeviceName = false`

 Important

Le nom de l'appareil est susceptible d'être considéré comme une donnée personnelle dans certaines régions. Collectez ces informations uniquement si vous savez que vous êtes légalement autorisé à le faire et que vous avez reçu le consentement explicite de l'utilisateur.

Définition des données personnalisées supplémentaires

L'API setAdditionalData est requise pour l'intégration au niveau SDK avec plusieurs plates-formes partenaires externes, dont Segment, Adobe et Urban Airship. Utilisez cette API uniquement si l'article d'intégration de la plate-forme indique spécifiquement que l'API setAdditionalData est requise.
Le code qui suit illustre l'implémentation de setAdditionalData sur iOS pour Objective-C ou Swift

Objective-C Swift
NSDictionary* CustomDataMap = [[NSDictionary alloc] initWithObjectsAndKeys:@"value_of_param_1", @"custom_param_1", nil];
    
[[AppsFlyerTracker sharedTracker] setAdditionalData:CustomDataMap];

10. Tester votre intégration

Pour plus de détails sur la manière de tester votre intégration, cliquez ici.

11. Soumettre une application à l’App Store

Vous pouvez trouver des instructions sur la soumission de votre application à l’App Store ici.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 8 sur 12

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.