【问题标题】:How to safely use iOS advertisingIdentifier?如何安全使用 iOS 广告标识符?
【发布时间】:2019-09-20 11:10:39
【问题描述】:

根据Apple's documentation

在执行任何广告跟踪之前检查此属性的值。如果值为false,则仅将广告标识符用于以下目的:频次上限、归因、转化事件、估计唯一用户数、广告欺诈检测和调试。

因此,基于此,下面的代码应该可以安全运行并遵循 Apple 的文档:

var advertisingID: String? {
    if ASIdentifierManager.shared().isAdvertisingTrackingEnabled == true {
        return nil
    } else {
        return ASIdentifierManager.shared().advertisingIdentifier.uuidString
    }
}

基本上检查它是否为假,然后,如果是则使用它。当然,该代码可以简化,但我试图尽可能详细地回答这个问题。

根据 Apple 的文档,该代码对我来说似乎是正确的。

话虽如此,它确实不适合该属性的名称,也不适合 GitHub 上的开源项目。

以下是一些开源项目,其中的链接以不同的方式实现。

DeviceInfo:

return ASIdentifierManager.shared().isAdvertisingTrackingEnabled ? ASIdentifierManager.shared().advertisingIdentifier.uuidString : ""

drifter:

// Check whether advertising tracking is enabled
guard ASIdentifierManager.shared().isAdvertisingTrackingEnabled else {
    return nil
}
// Get and return IDFA
return ASIdentifierManager.shared().advertisingIdentifier.uuidString

如您所见,如果isAdvertisingTrackingEnabledtrue,这些解决方案不会返回false 的值,而是返回advertisingIdentifier。这不是 Apple 的文档所述。但考虑到属性名称,它确实有意义。


所以我的问题是,哪个是正确的?苹果的文档有错吗?还是这些开源项目做错了?还是我只是遗漏了一些明显的东西,而那些开源项目和 Apple 的文档都是正确的?

【问题讨论】:

  • 嗯,它们在我看来都一样。 libs 方法有什么问题?
  • @paivaalan 它们有何相同之处?如果isAdvertisingTrackingEnabled 为真,库将返回该值。如果isAdvertisingTrackingEnabled 为false,我刚才根据Apple 的文档编写的代码将返回该值。真假,大不同,完全不一样。
  • 是的,只是误读了。检查我的答案。

标签: ios cocoa-touch


【解决方案1】:

如果值为false,您可以执行所有这些操作。但是,只有在值为true 时才应使用广告定位的常见用法。因此,图书馆的做法是正确的。

【讨论】:

  • 那么为什么在这个page 上会说“在iOS 10.0 及更高版本中,当用户的广告跟踪受限时,advertisingIdentifier 的值全为零。”。您的回答听起来像是无论布尔值是什么都可以访问该值。
  • 问题是它确实归零,但没有什么能阻止你以某种方式存储该值(理想情况下你也不应该这样做)。我认为这真的很简单。当isAdvertisingTrackingEnabled 为真时,uuidString 不是全零,您可以将其用于广告跟踪。否则uuidString 全部为零,如果您存储了旧值,则不应使用旧值。另外,用户可以重置广告标识符,所以不要存储它。
  • 好的,那么苹果不应该在他们的文档中说false。那是完全错误的。在提交您的应用程序以供审核时,Apple 会询问您有关您围绕此功能的实施的具体问题。他们对使用此功能非常严格。这就是为什么至少它非常具有误导性。您的回答与苹果所说的有些矛盾。我不是说这是错误的。但我确保我们在同一页面上。
  • 嗯,这有点主题,但对我来说,它清楚地说明了我所说的。它说在执行广告跟踪之前检查该值。否则(即false 值)你只能做那些其他的事情。总而言之,如果您将该价值发送给第三方,请特别尊重用户隐私。
  • and honors a user's Limit Ad Tracking setting in iOS and, when it is enabled by a user, this app does not use Advertising Identifier, and any information obtained through the user of the Advertising Identifier, techcrunch.com/2014/04/11/…。对不起,但我认为现实情况是,如果它是假的,你就不能访问它,而你只能做那些事情是真的。或反之亦然。问题是,它是哪一个。当它是真或假时,你是否允许访问它?
猜你喜欢
  • 1970-01-01
  • 2014-11-11
  • 2013-11-26
  • 2015-10-05
  • 2014-05-23
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多