【发布时间】:2019-09-20 11:10:39
【问题描述】:
在执行任何广告跟踪之前检查此属性的值。如果值为
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
如您所见,如果isAdvertisingTrackingEnabled 是true,这些解决方案不会返回false 的值,而是返回advertisingIdentifier。这不是 Apple 的文档所述。但考虑到属性名称,它确实有意义。
所以我的问题是,哪个是正确的?苹果的文档有错吗?还是这些开源项目做错了?还是我只是遗漏了一些明显的东西,而那些开源项目和 Apple 的文档都是正确的?
【问题讨论】:
-
嗯,它们在我看来都一样。 libs 方法有什么问题?
-
@paivaalan 它们有何相同之处?如果
isAdvertisingTrackingEnabled为真,库将返回该值。如果isAdvertisingTrackingEnabled为false,我刚才根据Apple 的文档编写的代码将返回该值。真假,大不同,完全不一样。 -
是的,只是误读了。检查我的答案。
标签: ios cocoa-touch