J'aimerais obtenir le dispositif IDFA
. Comment obtenir cette information à partir de l'API officielle d'iOS ?
Réponses
Trop de publicités?Tout d'abord, vous devez demander à l'utilisateur l'autorisation d'utiliser son IDFA :
#import <AppTrackingTransparency/AppTrackingTransparency.h>
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// Tracking authorization completed. Start loading ads here.
}];
Ce flux de permissions ne s'exécutera qu'une seule fois, la première fois qu'il sera appelé, même si vous redémarrez l'application et/ou l'appelez à nouveau. Si vous souhaitez répondre différemment, vous devrez supprimer complètement l'application de l'appareil ou du simulateur et la réinstaller. Notez que les simulateurs iOS renvoient des IDFA vides (tous les zéros) quelle que soit la réponse au flux de permission. Voir https://developer.apple.com/documentation/apptrackingtransparency pour plus de détails, notamment sur la manière de personnaliser le message affiché aux utilisateurs lorsqu'on leur demande de les suivre. Notez que de nombreux SDK publicitaires ont leurs propres appels de flux de consentement que vous pouvez utiliser.
Pour obtenir l'IDFA une fois que vous avez obtenu l'autorisation :
#import <AdSupport/ASIdentifierManager.h>
Si vous souhaitez l'obtenir sous forme de NSString, utilisez :
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]
Votre code pourrait donc ressembler à ceci :
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog (@"IDFA: %@", idfaString);
Vous devez d'abord vérifier si l'utilisateur a décidé de ne pas participer au suivi de la publicité . Ce n'est que s'il l'a autorisé que vous pouvez utiliser le IDFA
.
Vous pouvez le vérifier en appelant le isAdvertisingTrackingEnabled
méthode de ASIdentifierManager
.
isAdvertisingTrackingEnabled
Vérifier la valeur de cette propriété avant d'effectuer un suivi publicitaire. de la publicité. Si la valeur est
NO
utiliser l'identifiant publicitaire les objectifs suivants : plafonnement de la fréquence, événements de conversion, l'estimation du nombre d'utilisateurs uniques, la sécurité et la détection des fraudes, et débogage.
L'extrait de code suivant montre comment obtenir une valeur de chaîne de caractères de IDFA
.
ObjC
@import AdSupport;
- (NSString *)identifierForAdvertising {
// Check whether advertising tracking is enabled
if([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSUUID *identifier = [[ASIdentifierManager sharedManager] advertisingIdentifier];
return [identifier UUIDString];
}
// Get and return IDFA
return nil;
}
Swift
import AdSupport
func identifierForAdvertising() -> String? {
// Check whether advertising tracking is enabled
guard ASIdentifierManager.shared().isAdvertisingTrackingEnabled else {
return nil
}
// Get and return IDFA
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
IDFA
- Identifiant pour la publicité
isAdvertisingTrackingEnabled -> trackingAuthorizationStatus
En iOS v14 Apple est obsolète isAdvertisingTrackingEnabled
et a déplacé la logique dans AppTrackingTransparency
Le cadre . L'utilisateur doit maintenant obtenir l'autorisation de lire idfa
(de la même manière que pour l'autorisation de localisation)
L'utilisateur peut le contrôler via :
#iOS 13
#AdSupport
#ASIdentifierManager.shared().isAdvertisingTrackingEnabled
Settings -> Privacy -> Advertising -> Limit Ad Tracking
#iOS 14
#AppTrackingTransparency
#ATTrackingManager.trackingAuthorizationStatus
#a global flag
Settings -> Privacy -> Tracking -> `Allow Apps to Request to Track`
#or select an app from list to control every app separately
#a local flag
Settings -> <app_name> -> Allow Tracking
Mise en œuvre
import AppTrackingTransparency
import AdSupport
func getIDFA() -> String? {
// Check whether advertising tracking is enabled
if #available(iOS 14, *) {
if ATTrackingManager.trackingAuthorizationStatus != ATTrackingManager.AuthorizationStatus.authorized {
return nil
}
} else {
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled == false {
return nil
}
}
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
ASIdentifierManager est le moyen officiel d'obtenir le numéro d'identification publicitaire d'un appareil fonctionnant sous iOS 6+. Vous pouvez utiliser -[[ASIdentifierManager sharedManager] advertisingIdentifier];
pour l'obtenir.
- Réponses précédentes
- Plus de réponses