Apple modifie ses paramètres de confidentialité pour iOS6 et désapprouve les UUID de périphérique (UDID). Selon une présentation WWDC et la documentation, il existe deux remplacements pour les UDID, tous deux de la classe UIDevice
:
-identifierForVendor
-identifierForAdvertising
Il me semble que -identifierForVendor
est inférieur à -identifierForAdvertising
puisqu'il serait réinitialisé lors de la dernière désinstallation d'une application chez un fournisseur et par "effacer tout le contenu et les paramètres".
Quels sont les avantages de -identifierForVendor
par rapport à -identifierForAdvertising
?
Note importante:
Apple vient de sortir iOS 6.0 et le NDA a été levé.
Pour les développeurs qui ont inclus de manière préemptive le code référencé
[[UIDevice currentDevice] identifierForAdvertising]
cette méthode PAS a été incluse dans iOS 6. Si vous utilisez la méthode ci-dessus, votre application se plantera (probablement) et sera rejetée!
Au lieu de cela, Apple a créé une nouvelle classe ASIdentifierManager
, qui inclut la méthode advertisingIdentifier
. Voici le Documents Apple dessus:
Les utilisateurs peuvent limiter l'utilisation du suivi des annonces sur leur téléphone. Voir cet article sur le mécanisme de retrait sous Paramètres> Général> À propos de> Publicité.
La nouvelle classe ASIdentifierManager
a une propriété advertisingTrackingEnabled
qui renvoie true ou false selon que l'utilisateur dispose d'un suivi des annonces limité. Même si l'identifiant publicitaire du périphérique est renvoyé par la propriété advertisingIdentifier
indépendamment de l'opt-out, vous n'êtes pas censé utiliser l'identifiant si l'utilisateur a désinscrit.
Donc, identifierForVendor a pour avantage que vous aurez toujours le droit d'utiliser cet identifiant pour le téléphone et ce, que l'utilisateur ait ou non opt-in ou non pour le suivi de la publicité.
Je pense qu'Apple rejettera simplement votre application si vous utilisez identifierForAdvertising
pour tout ce qui n'est pas lié à la publicité (c'est-à-dire si vous envoyez la identifierForAdvertising
à vos propres serveurs même si vous n'êtes pas un réseau publicitaire ou si vous envoyez la identifierForAdvertising
dans le même demande avec d’autres données susceptibles d’identifier une personne).
Si mes soupçons sont corrects, l'avantage de identifierForVendor
par rapport à identifierForAdvertising
est que votre application ne sera pas rejetée.
Il s’agit de deux identifiants différents destinés à deux objectifs différents ... Je pense que ce serait l'identifiantForVendor qui serait utilisé pour effectuer des tâches nécessitant la liaison de l'application à un utilisateur/appareil spécifique, telles que fournir des notifications Push et mettre à jour l'application de l'utilisateur les serveurs de données (comme leur score ou toute autre donnée stockée pour eux).
L'identifiantForAdvertising devrait être utilisé pour des choses telles que la publicité ciblée et également pour vérifier l'efficacité d'une campagne publicitaire particulière (vérifiez quels appareils ont installé des applications en raison d'une publicité particulière).
Utilisez le VendorID. Cet article est très instructif http://www.doubleencore.com/2013/04/unique-identifiers/
Pour créer une chaîne unique basée sur l'identificateur unique du périphérique dans iOS 6:
#import <AdSupport/ASIdentifierManager.h>
NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);
identifierForAdvertising
est probablement supérieur en termes de suivi mais peut être soumis à la désinscription actuelle ou future de l'utilisateur. D'autre part, identifierForVendor
n'est pas aussi susceptible d'être soumis à l'utilisateur.
Ces API sont si mal conçues, qu’elle dit clairement: Apple ne veut pas que nous identifions les appareils des utilisateurs.
Il suffit de regarder la description de identifierForVendor.
Il est effacé si l'utilisateur efface toutes les applications du même fournisseur. : ( Ce n’est pas fiable - peut renvoyer nil (conseils de documentation pour "attendre" quelque temps si cela se produit. :(
Ils n'ont pas utilisé de solution évidente, qui fonctionne à tout moment et ne repose pas sur l'installation/la suppression - renvoie SHA-1 (ou tout autre hachage) d'un ID de périphérique matériel interne concaténé avec l'ID de l'équipe.
L'utilisateur peut modifier identifierForAdvertising à tout moment dans les paramètres., IdentifierForVendor change après la réinstallation de l'application, s'il n'y a plus d'applications sur le périphérique de ce fournisseur.
Voici l'alternative et la meilleure solution pour l'identificateur de périphérique d'installation multiple d'installation persistante ou persistante:
description: https://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/
code: https://Gist.github.com/miguelcma/e8f291e54b025815ca46
La chose importante à savoir est que la sauvegarde de identifierForVendor ne peut être restaurée que sur le même appareil. Si la sauvegarde est restaurée sur un périphérique différent, l'identifiant est effacé.