Universal link访问URL成功但未触发对应操作问题求助
你的AASA配置本身没有问题,paths: ["*"]已经匹配所有路径,根路径可正常唤起应用说明AASA已经生效,回调不触发的常见原因及解决方法如下:
- 未适配iOS13+的SceneDelegate回调
iOS13引入SceneDelegate后,默认使用SceneDelegate管理生命周期的项目,Universal Link唤起回调不会走AppDelegate的对应方法,需要在SceneDelegate中添加如下代码处理即可:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL, let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else { return } if components.path.contains("callback") { print("callback hit...") // 后续添加跳转到CallbackViewController的业务逻辑 } }
如果需要兼容iOS13以下版本,保留你原有AppDelegate中的代码无需删除,两种回调方法同时存在不会产生冲突。
- 冷启动场景覆盖不全
如果测试时应用处于完全杀死的状态,Universal Link唤起应用时会先触发application(_:didFinishLaunchingWithOptions:),你可以在该方法中通过UIApplication.LaunchOptionsKey.userActivityDictionary获取对应的userActivity,避免冷启动场景下逻辑遗漏。 - SwiftUI项目适配
如果是基于SwiftUI的App结构开发的项目,可通过onOpenURLmodifier直接处理链接即可:
@main struct YourApp: App { var body: some Scene { WindowGroup { ContentView() .onOpenURL { url in guard url.path.contains("callback") else { return } print("callback hit...") } } } }
- 清除AASA缓存
如果之前修改过AASA配置,系统会缓存旧版本配置,卸载应用后重装即可触发系统重新拉取最新的AASA配置。
内容的提问来源于stack exchange,提问作者Jon Nicholson
相关产品推荐
相关产品推荐

