iOS6 UDID: ¿qué ventajas tiene identifierForVendor sobre identifierForAdvertising?
udid swift (10)
Apple está cambiando su configuración de privacidad para iOS6 y está desaprobando los UUID (UDID) del dispositivo. Según una presentación WWDC y los documentos, hay dos reemplazos para los UDID, ambos en la clase UIDevice
:
-identifierForVendor
- ID que es idéntico entre las aplicaciones del mismo desarrollador.
- Borrado con la eliminación de la última aplicación para esa ID de equipo.
- Respaldado.
-identifierForAdvertising
- Único para el dispositivo.
- Disponible para todas las aplicaciones; utilizado para publicidad: iAd ha convertido desde UDID para iOS 6 y versiones posteriores.
- Restablecer con "Borrar todo el contenido y la configuración".
- Respaldado.
Me parece que -identifierForVendor
es inferior a -identifierForAdvertising
ya que se restablecería en la última desinstalación de una aplicación de un proveedor y en "borrar todos los contenidos y configuraciones".
¿Qué ventajas tiene -identifierForVendor
over- -identifierForAdvertising
?
El usuario puede cambiar el identificador para publicitar en cualquier momento en la configuración, identifierForVendor cambia después de reinstalar la aplicación, si no hay más aplicaciones en el dispositivo de este proveedor.
Aquí hay una alternativa y la mejor solución para obtener o persistir, identificador de dispositivo de instalación cruzada:
descripción: https://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/
código: https://gist.github.com/miguelcma/e8f291e54b025815ca46
Esas API están mal diseñadas, eso dice claramente: Apple no quiere que identifiquemos los dispositivos de los usuarios.
Solo mira la descripción de identifierForVendor.
Se borra si el usuario borra todas las aplicaciones del mismo proveedor. :( No es confiable - puede devolver nil (consejos de documentación para "esperar" por algún tiempo si esto sucede. :(
No usaron la solución obvia, que funciona en cualquier momento y no depende de las instalaciones / eliminaciones: devuelva SHA-1 (o cualquier otro hash) del ID del dispositivo de hardware interno concatenado con la ID del equipo.
Lo importante es saber que la copia de seguridad de identifierForVendor solo se puede restaurar en el mismo dispositivo. Si la copia de seguridad se restaura a un dispositivo diferente, el identificador se borra.
Los usuarios pueden limitar el uso del seguimiento de anuncios en sus teléfonos. Consulte este artículo sobre el mecanismo de exclusión voluntaria en Configuración> General> Acerca de> Publicidad.
La nueva clase ASIdentifierManager
tiene una propiedad advertisingTrackingEnabled
, que devuelve verdadero o falso dependiendo de si el usuario tiene un seguimiento de anuncios limitado. Aunque el identificador publicitario del dispositivo es devuelto por la propiedad advertisingIdentifier
independientemente de la opción de exclusión voluntaria, no debe usar el identificador si el usuario ha optado por no participar.
Por lo tanto, la ventaja de identifierForVendor es que siempre tendrá acceso y tendrá derecho a usar esta identificación para el teléfono, independientemente de la aceptación o no del usuario para el seguimiento de publicidad.
Para crear un UniqueString basado en el identificador único del dispositivo en iOS 6:
#import <AdSupport/ASIdentifierManager.h>
NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);
Son dos identificadores diferentes destinados a dos propósitos diferentes. Creo que el identifierForVendor sería el que usaría para hacer cosas que requieran que la aplicación se vincule a un usuario / dispositivo específico, como proporcionar notificaciones push y actualizar el servidor de datos de la aplicación del usuario (como su puntaje o cualquier otro dato que se esté almacenando) ellos).
El identificador para publicidad debe usarse para cosas como la publicidad dirigida y también para verificar la eficacia de una campaña publicitaria en particular (verifique qué dispositivos instalan aplicaciones debido a un anuncio en particular).
Sospecho que Apple simplemente rechazará su aplicación si usa identifierForAdvertising
para cualquier cosa que no esté relacionada con la publicidad (es decir, si envía el identifierForAdvertising
para publicidad a sus propios servidores aunque no sea una red publicitaria o si envía el identifierForAdvertising
para publicidad en el misma solicitud con otros datos que podrían identificar a un individuo).
Si mi sospecha es correcta, la ventaja de identifierForVendor
sobre identifierForAdvertising
es que no se rechazará tu aplicación.
Use el VendorID . Este es un artículo muy esclarecedor http://www.doubleencore.com/2013/04/unique-identifiers/
identifierForAdvertising
es probablemente superior en términos de seguimiento, pero podría estar sujeto a la exclusión presente o futura por parte del usuario. Por otro lado, identifierForVendor
no es tan probable que sea sujeto del usuario.
Nota importante :
Apple acaba de lanzar iOS 6.0 y el NDA ha sido levantado.
Para los desarrolladores que incluyeron de forma preventiva el código al que se hace referencia
[[UIDevice currentDevice] identifierForAdvertising]
este método NO se ha incluido en iOS 6. Si usa el método anterior, su aplicación (muy probablemente) se bloqueará y será rechazada.
En cambio, Apple ha creado una nueva clase ASIdentifierManager
, que incluye el método advertisingIdentifier
. Aquí están los documentos de Apple :