在执行任何广告跟踪之前,请检查此媒体资源的价值。如果值为
false
,请仅将广告标识符用于以下目的:频次上限,归因,转化事件,估算唯一身份用户数,广告欺诈检测和调试。
因此,基于此,下面的代码应该安全地工作并遵循Apple的文档:
var advertisingID: String? {
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled == true {
return nil
} else {
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
}
基本上检查它是否是假的,然后,如果是这样的话。当然,代码可以简化,但我想尽可能地解决这个问题。
根据Apple的文档,该代码对我来说似乎是正确的。
话虽如此,它确实不适合该属性的名称,也不适合GitHub上的开源项目。
下面是一些开源项目,其链接以不同的方式执行。
return ASIdentifierManager.shared().isAdvertisingTrackingEnabled ? ASIdentifierManager.shared().advertisingIdentifier.uuidString : ""
// Check whether advertising tracking is enabled
guard ASIdentifierManager.shared().isAdvertisingTrackingEnabled else {
return nil
}
// Get and return IDFA
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
正如你所看到的,如果它是false
而不是返回那个值,如果advertisingIdentifier
是isAdvertisingTrackingEnabled
,这些解决方案将返回true
。这不是Apple的文档所述。但鉴于属性名称,它确实有意义。
所以我的问题是,哪个是正确的? Apple的文档错了吗?或者这些开源项目是否做错了?或者我只是遗漏了一些明显的东西,这些开源项目和Apple的文档都是正确的吗?
如果值为false
,则可以执行所有操作。但是,只有在值为true
时,才应该使用广告定位的常用用法。因此,图书馆的方法是正确的。