从2021年开始,苹果要求显示一个对话框来同意用户跟踪,因此,如果用户没有接受该对话框,那么即使是广告sdks (肯定会跟踪大量用户内容)也无法启用。
https://developer.apple.com/app-store/user-privacy-and-data-use/ https://developer.apple.com/documentation/apptrackingtransparency
苹果提供了这个函数来显示对话框:requestTrackingAuthorization()
问题是这个函数只显示一次,所以如果用户没有接受它,它就不会永远被接受。我们的意图是,如果对话框不被接受,则关闭应用程序,并在下次打开应用程序时再次显示,但requestTrackingAuthorization()不再显示该对话框。
如何解决这种情况?如何能够多次调用该函数?
假设用户取消了广告,那么您将永远不能显示该用户的广告,因为广告sdks会跟踪用户内容。
发布于 2021-01-29 16:20:57
我们不能再请求许可了。苹果通常会限制这种行为,如果使用失控,这可能会让用户非常恼火。
但如果你的应用程序真的需要这样做,一个解决方案是导航用户到Settings,指示他们打开应用程序的授权:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
checkTrackingAuthorization(ATTrackingManager.trackingAuthorizationStatus)
}
private func checkTrackingAuthorization(_ status: ATTrackingManager.AuthorizationStatus) {
switch status {
case .authorized: break
// Access is grantted
case .notDetermined: requestTrackingAccess()
// The permission was not asked before
case .denied, .restricted: displayTrackingAccessAlert()
default: break
// Unexpected status (there may be additional unknown values added in the future)
}
}
private func requestTrackingAccess() {
ATTrackingManager.requestTrackingAuthorization { [weak self] status in
self?.checkTrackingAuthorization(status)
}
}
private func displayTrackingAccessAlert() {
let alert = UIAlertController(title: "Tracking access is required", message: "Please turn on access to tracking on the settings", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default, handler: { action in
// Open the Settings app
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
})
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alert.addAction(settingsAction)
alert.addAction(cancelAction)
alert.preferredAction = settingsAction
present(alert, animated: true, completion: nil)
}发布于 2020-12-11 04:22:51
这是意料之中的事情,而且iOS中的所有权限请求对话框的行为方式都是相同的;您只有一次机会直接询问用户。用户随后可以在应用程序设置中修改他们的选择,但您不能一直向他们显示对话框。
如果用户拒绝跟踪,并不意味着你不能展示广告。这只意味着你不能使用用户跟踪数据来关联他们在你的应用程序和其他属性中的活动,也不能分享他们的位置数据(如果你有的话)。显示的广告不会针对用户,他们在应用程序中的活动也不会影响他们在其他地方看到的广告。
我很确定你的计划无论如何都会导致你的应用程序被拒绝。无论用户采取何种用户跟踪决策,应用程序都必须正常运行。
https://stackoverflow.com/questions/65241253
复制相似问题