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
}