1

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

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

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

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

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

假设用户取消了它,那么您永远不允许为该用户展示广告,因为广告 sdks 会跟踪用户内容。

4

2 回答 2

3

我们不能再次请求许可。苹果通常会限制这种行为,如果使用失控,可能会让用户非常恼火。
但是,如果您的应用程序确实需要这样做,那么解决方案是将用户导航到设置,指示他们为应用程序打开授权:

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)
}
于 2021-01-29T08:20:57.087 回答
1

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

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

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

于 2020-12-10T20:22:51.223 回答