以前は didFinishLaunching でATT許可ダイアログ出してもいけましたが、iOS15からはアプリがアクティブな状態でないとダイアログが出なくなりました。
そこでSwiftUIでATTダイアログを出す方法です。
struct MainView: View {
var body: some View {
VStack {
Text("Hello!")
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
if ATTrackingManager.trackingAuthorizationStatus == .notDetermined {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in })
}
}
}
}
.onReceive で UIApplication.didBecomeActiveNotification を受け取って処理しています。