🤖️ SwiftUI ATTrackingManager 跟踪权限弹窗
2023/11/29iOS 14 广告追踪
iOS 14 追踪权限一般用于广告追踪,例如用户授权 ATTracking 权限可能使得广告收入增多。info.plist
配置了追踪权限时,APP 内必须有弹窗授权,不然直接被拒审~😯
Privacy - Tracking Usage Description : 描述文本
多语言可以配置
"NSUserTrackingUsageDescription" = "描述文本";
解决方案:
当 iOS 追踪授权弹窗遇到其他弹窗执行时(如网络授权)将无法被执行弹出。以下有两种方案:
方案一: 当用户首次进入程序,且是活跃状态 didBecomeActiveNotification
时异步执行弹出。在 SwiftUI 应用入口,可以在 ContentView onReceive 中监听程序进入活跃状态,执行 ATTrackingManager.requestTrackingAuthorization
,此时应该是异步执行,建议延迟 1s。
import AppTrackingTransparency
import AdSupport
ContentView()
.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
self.setupGAD() // 同时加载广告
}
// 广告
private func setupGAD() {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
ATTrackingManager.requestTrackingAuthorization { status in
GADMobileAds.sharedInstance().start()
#if DEBUG
print("IDFA: \(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
#endif
}
}
}
方案二: 在登录等按钮,执行授权 API。