IOS14 使用 IOS 13 编译的应用程序的跟踪权限
IOS14 tracking permission for apps compiled with IOS 13
在 IOS14 中,为了使用 Advertising Identifier
您需要请求许可,但 AppStore 上已有的应用程序的行为是什么(使用 IOS13 SDK 编译)?
我已将设备更新至 IOS14 Beta 4 并从 AppStore 下载了应用程序。打开应用程序后,它不会自动请求任何跟踪权限,Advertising Identifier
是 00000-0000-0000
。
这是否意味着我必须提交使用 IOS14 SDK 编译的应用程序更新并请求跟踪权限,否则 Advertising Identifier
将不可用?
是的,您需要提交新的应用版本。它不会自动请求跟踪权限,因为它应该通过开发人员实例化。
因此,您需要使用 AppTrackingTransparency
框架并请求用户权限:
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { _ in
}
} else {
// Fallback on earlier versions
}
您必须从 ios 14 实施 AppTrackingTransparency
才能显示跟踪权限。从此实现中,您可以收集 IDFA。
在 AppDelegate 中执行此操作
import AppTrackingTransparency
在didFinishLaunchingWithOptions launchOptions
中写一个这样的函数
if #available(iOS 14, *) {
self.requestIDFAPermission()
}
然后写这个函数
func requestIDFAPermission() {
if #available(iOS 14, *) {
let semaphore = DispatchSemaphore(value: 0)
DispatchQueue.main.async {
ATTrackingManager.requestTrackingAuthorization { (status) in
if (status == .authorized) {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: " + idfa.uuidString)
} else {
print("Failed to get IDFA")
}
semaphore.signal()
}
}
semaphore.wait()
}
}
还有一件事。您应该在 Plist 中添加 Privacy - Tracking Usage Description
。
在 IOS14 中,为了使用 Advertising Identifier
您需要请求许可,但 AppStore 上已有的应用程序的行为是什么(使用 IOS13 SDK 编译)?
我已将设备更新至 IOS14 Beta 4 并从 AppStore 下载了应用程序。打开应用程序后,它不会自动请求任何跟踪权限,Advertising Identifier
是 00000-0000-0000
。
这是否意味着我必须提交使用 IOS14 SDK 编译的应用程序更新并请求跟踪权限,否则 Advertising Identifier
将不可用?
是的,您需要提交新的应用版本。它不会自动请求跟踪权限,因为它应该通过开发人员实例化。
因此,您需要使用 AppTrackingTransparency
框架并请求用户权限:
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { _ in
}
} else {
// Fallback on earlier versions
}
您必须从 ios 14 实施 AppTrackingTransparency
才能显示跟踪权限。从此实现中,您可以收集 IDFA。
在 AppDelegate 中执行此操作
import AppTrackingTransparency
在didFinishLaunchingWithOptions launchOptions
中写一个这样的函数
if #available(iOS 14, *) {
self.requestIDFAPermission()
}
然后写这个函数
func requestIDFAPermission() {
if #available(iOS 14, *) {
let semaphore = DispatchSemaphore(value: 0)
DispatchQueue.main.async {
ATTrackingManager.requestTrackingAuthorization { (status) in
if (status == .authorized) {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: " + idfa.uuidString)
} else {
print("Failed to get IDFA")
}
semaphore.signal()
}
}
semaphore.wait()
}
}
还有一件事。您应该在 Plist 中添加 Privacy - Tracking Usage Description
。