我想要设备的IDFA。如何从iOS官方接口获取此信息?
发布于 2013-10-04 03:50:31
首先:
#import <AdSupport/ASIdentifierManager.h> 如果您希望将其作为NSString获取,请使用:
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]因此,您的代码可能如下所示:
NSString *idfaString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];发布于 2014-04-22 18:18:03
如果用户决定退出广告跟踪,首先必须检查。只有他允许,你才能使用IDFA。
可以通过调用ASIdentifierManager的isAdvertisingTrackingEnabled方法进行查看。
isAdvertisingTrackingEnabled
在执行任何广告跟踪之前,请检查此属性的值。如果值为NO,则仅将广告标识符用于以下目的:频率上限、转换事件、估计唯一用户数、安全性和欺诈检测以及调试。
下面的代码片段显示了如何获取字符串值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;
}斯威夫特
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
}发布于 2020-09-21 22:57:34
IDFA -用于广告的标识符
isAdvertisingTrackingEnabled -> trackingAuthorizationStatus来自iOS v14的苹果弃用了isAdvertisingTrackingEnabled,并将逻辑转移到了AppTrackingTransparency Framework中。现在用户必须授予读取idfa的权限(与位置权限相同)
用户可以通过以下方式进行控制:
#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 实现
import AppTrackingTransparency
import AdSupportfunc 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
}https://stackoverflow.com/questions/12944504
复制相似问题