developer apple ios iphone tvos idfa

apple - idfa ios



¿Cómo recuperar el iPhone IDFA de la API? (9)

A partir de iOS 10, cuando un usuario habilita "Limitar seguimiento de anuncios", el sistema operativo enviará a lo largo del identificador de publicidad con un nuevo valor de "00000000-0000-0000-0000-000000000000".

Según este artículo: https://fpf.org/2016/08/02/ios-10-feature-stronger-limit-ad-tracking/

Me gustaría obtener el dispositivo IDFA . ¿Cómo obtener esta información de la API oficial de iOS?


Ante todo:

#import <AdSupport/ASIdentifierManager.h>

Si desea obtenerlo como NSString, use:

[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

Entonces tu código podría verse así:

NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];


Aquí hay una clase de ayudante comentada en Swift que le dará un objeto nil para el identificador si el usuario ha desactivado el seguimiento de publicidad:

import AdSupport class IDFA { // MARK: - Stored Type Properties static let shared = IDFA() // MARK: - Computed Instance Properties /// Returns `true` if the user has turned off advertisement tracking, else `false`. var limited: Bool { return !ASIdentifierManager.shared().isAdvertisingTrackingEnabled } /// Returns the identifier if the user has turned advertisement tracking on, else `nil`. var identifier: String? { guard !limited else { return nil } return ASIdentifierManager.shared().advertisingIdentifier.uuidString } }

Solo agréguelo a su proyecto (por ejemplo, en un archivo llamado IDFA.swift ) y vincule AdSupport.framework en su destino a través de la sección "Marcos vinculados y bibliotecas" en la pestaña Configuración general.

Entonces puedes usarlo así :

if let identifier = IDFA.shared.identifier { // use the identifier } else { // put any fallback logic in here }


Obtener IDFA en Swift:

import AdSupport ... let myIDFA: String? // Check if Advertising Tracking is Enabled if ASIdentifierManager.sharedManager().advertisingTrackingEnabled { // Set the IDFA myIDFA = ASIdentifierManager.sharedManager().advertisingIdentifier.UUIDString } else { myIDFA = nil }


Primero debe verificar si el usuario usuario ha decidido excluirse del seguimiento de anuncios . Solo si él lo permite puedes usar el IDFA .

Puede verificarlo llamando isAdvertisingTrackingEnabled método ASIdentifierManager de ASIdentifierManager .

isPublicidadTrackingEnabled

Compruebe el valor de esta propiedad antes de realizar cualquier seguimiento de publicidad. Si el valor es NO , use el identificador de publicidad solo para los siguientes propósitos: limitación de frecuencia, eventos de conversión, estimación del número de usuarios únicos, detección de fraudes y seguridad, y depuración.

El siguiente fragmento de código muestra cómo obtener un valor de cadena 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; }

Rápido

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 }


Solo para extender la respuesta Swift de Amro, aquí hay un código similar envuelto en un método:

import AdSupport ... func provideIdentifierForAdvertisingIfAvailable() -> String? { if ASIdentifierManager.sharedManager().advertisingTrackingEnabled { return ASIdentifierManager.sharedManager().advertisingIdentifier?.UUIDString ?? nil } else { return nil } }


Un enfoque más agradable para obtener el IDFA o nil si el seguimiento está deshabilitado a través de iOS La configuración está utilizando una extensión (privada):

import AdSupport class YourClass { func printIDFA() { print(ASIdentifierManager.shared().advertisingIdentifierIfPresent) } } private extension ASIdentifierManager { /// IDFA or nil if ad tracking is disabled via iOS system settings var advertisingIdentifierIfPresent: String? { if ASIdentifierManager.shared().isAdvertisingTrackingEnabled { return ASIdentifierManager.shared().advertisingIdentifier.uuidString } return nil }


ASIdentifierManager es la forma oficial de obtener el Número de Identificación de Publicidad de un dispositivo con iOS 6+. Puede usar -[[ASIdentifierManager sharedManager] advertisingIdentifier]; para conseguirlo.


Swift 3 y 4

var IDFA = String() if ASIdentifierManager.shared().isAdvertisingTrackingEnabled { IDFA = ASIdentifierManager.shared().advertisingIdentifier }