如何处理App Tracking Authorization的预授权提示?

问题描述

我正在为 2021 年初的 iOS 14 App Tracking Transparency 实施做准备,并在致电前创建了一个预许可提示

ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in

  //do something based on status

})

以便我有更好的机会向我的用户解释选择个性化广告和非个性化广告之间的区别。

我的逻辑是,如果用户选择退出个性化广告,我不会通过调用 ATTrackingManager.requestTrackingAuthorization 提示获得跟踪授权许可,而是让 Admob 意识到 IDFA == 0000,因此就像它未经授权。

这是一个例子:

enter image description here

我有两个问题需要澄清。

1:按照 Apple 的标准,这是否合法?我没有发现任何说这是非法的,一旦强制执行,认情况下 IDFA 将是 0000,因此基本上认情况下不会授予权限。所以我认为就好像开发者只是认非个性化广告一样。

2:Apple 没有设置具体的强制执行日期,因此(在此强制执行期间),如果没有调用官方许可提示,该应用程序将可以访问 IDFA &认情况下,拥有跟踪权限,直到强制执行。这给在此非强制执行期间选择退出我的预许可提示用户带来了问题。解决这个问题的方法是什么?在 Apple 强制执行之前,我可以为这些用户手动禁用 IDFA 吗?

对于已经在预许可提示中选择退出个性化广告的用户调用 requestTrackingAuthorization 似乎有违直觉。

解决方法

请务必在显示此提示之前检查 ATTrackingManager.trackingAuthorizationStatus == .notDetermined,因为某些用户可能已启用“允许应用程序请求跟踪”开关 switch

,

第一个答案,您可以在显示提示之前提供上下文。来自Apple's Docs

理想情况下,人们已经知道您为什么根据上下文请求他们的许可,但如果必须提供更多详细信息,您可以在警报出现之前显示自定义消息。

第二个答案,这将在使用 iOS 14.5 的设备上强制执行。来自Apple's Docs

从 iOS 14.5 和 iPadOS 14.5 开始,如果您想跟踪用户或访问他们设备的广告标识符,您必须使用 AppTrackingTransparency 框架来请求用户的许可。要了解详情,请参阅用户隐私和数据使用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...