You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 15下SwiftUI项目如何在应用启动时弹出ATT授权弹窗

iOS 15+ SwiftUI项目启动弹出ATT授权弹窗解决方案

问题背景

在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不会触发弹窗。

实现方案

监听应用进入活跃状态的系统通知,待应用完全启动进入活跃状态后再调用ATT授权接口即可。SwiftUI项目可以直接在根视图的onReceive修饰符中监听UIApplication.didBecomeActiveNotification通知触发授权请求,对应实现代码如下:

struct HomeView: View {
    var body: some View {
        VStack {
            Text("Hello!")
        }.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
            ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in })
        }
    }
}

内容的提问来源于stack exchange,提问作者donchan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:36:04