首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppTrackingTransparency...对话框仅显示一次

AppTrackingTransparency...对话框仅显示一次
EN

Stack Overflow用户
提问于 2020-12-11 03:42:39
回答 2查看 1.3K关注 0票数 1

从2021年开始,苹果要求显示一个对话框来同意用户跟踪,因此,如果用户没有接受该对话框,那么即使是广告sdks (肯定会跟踪大量用户内容)也无法启用。

https://developer.apple.com/app-store/user-privacy-and-data-use/ https://developer.apple.com/documentation/apptrackingtransparency

苹果提供了这个函数来显示对话框:requestTrackingAuthorization()

问题是这个函数只显示一次,所以如果用户没有接受它,它就不会永远被接受。我们的意图是,如果对话框不被接受,则关闭应用程序,并在下次打开应用程序时再次显示,但requestTrackingAuthorization()不再显示该对话框。

如何解决这种情况?如何能够多次调用该函数?

假设用户取消了广告,那么您将永远不能显示该用户的广告,因为广告sdks会跟踪用户内容。

EN

回答 2

Stack Overflow用户

发布于 2021-01-29 16:20:57

我们不能再请求许可了。苹果通常会限制这种行为,如果使用失控,这可能会让用户非常恼火。

但如果你的应用程序真的需要这样做,一个解决方案是导航用户到Settings,指示他们打开应用程序的授权:

代码语言:javascript
复制
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)
}
票数 3
EN

Stack Overflow用户

发布于 2020-12-11 04:22:51

这是意料之中的事情,而且iOS中的所有权限请求对话框的行为方式都是相同的;您只有一次机会直接询问用户。用户随后可以在应用程序设置中修改他们的选择,但您不能一直向他们显示对话框。

如果用户拒绝跟踪,并不意味着你不能展示广告。这只意味着你不能使用用户跟踪数据来关联他们在你的应用程序和其他属性中的活动,也不能分享他们的位置数据(如果你有的话)。显示的广告不会针对用户,他们在应用程序中的活动也不会影响他们在其他地方看到的广告。

我很确定你的计划无论如何都会导致你的应用程序被拒绝。无论用户采取何种用户跟踪决策,应用程序都必须正常运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65241253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档