在 iOS 14 中,它可以在 SwiftUI 中启动应用程序时显示 ATT(App Tracking Transparency)对话框,如下所示。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
// loadAd()
})
} else {
// loadAd()
}
return true
}
但是,在 iOS 15.0 中,它不起作用。苹果文档描述如下。
仅当应用程序状态为:UIApplicationStateActive 时才提示调用 API。通过应用扩展调用 API 不会提示。 https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorization
当应用程序在 iOS 15 中启动时如何显示 ATT 对话框?
2021/9/28 更新 我解决了如下。
struct HomeView: View {
var body: some View {
VStack {
Text("Hello!")
}.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in })
}
}
}