Universal Links跳转App后未触发AppDelegate函数处理DeepLink问题
Universal Links 跳转后
continue userActivity 未调用的排查方案 确认NSUserActivity类型匹配
触发Universal Links时,userActivity.activityType必须为NSUserActivityTypeBrowsingWeb,否则对应方法不会被触发。可在启动方法中先检查启动时的userActivity参数,确认链接触发的活动类型是否符合要求。检查代理类的方法位置
- 若App基于iOS 13+使用SceneDelegate,
continue userActivity逻辑需放在SceneDelegate的scene(_:continue:)方法中,而非AppDelegate。系统会优先调用SceneDelegate的对应方法,AppDelegate中的旧方法不会触发。示例代码:func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL { // 解析URL并处理DeepLink逻辑 print("Received DeepLink URL: \(url)") } }
- 若App基于iOS 13+使用SceneDelegate,
验证apple-app-site-association文件配置
- 确认文件内
paths字段包含目标DeepLink路径,例如链接为https://yourdomain.com/detail/1001,需配置"/detail/*"或具体路径,不能仅写"/"。 - 确保文件托管在HTTPS服务器的根目录或
.well-known目录,无重定向问题,可通过苹果官方验证工具确认文件有效性。
- 确认文件内
区分不同启动场景的逻辑
- 冷启动场景:App完全关闭时点击链接启动,
continue userActivity不会触发,需在application:didFinishLaunchingWithOptions:中通过launchOptions[.userActivityDictionary]获取参数,或在SceneDelegate的scene(_:willConnectTo:options:)中从connectionOptions.userActivities读取。 - 热启动/后台场景:仅当App处于后台或前台时,点击链接才会触发
continue userActivity(或SceneDelegate对应方法)。
- 冷启动场景:App完全关闭时点击链接启动,
检查Xcode项目配置
- 确认
Associated Domains中已添加applinks:yourdomain.com,域名拼写无错误。 - 检查
Info.plist中无禁用Universal Links的冲突配置。
- 确认
重置Universal Links缓存
苹果会缓存关联文件,修改后需重置缓存:- 卸载App,重启设备后重新安装。
- 在Safari中打开目标链接,长按选择“在[你的App]中打开”,强制触发一次跳转更新缓存。
内容的提问来源于stack exchange,提问作者Mahanaz Atiqullah
相关产品推荐
相关产品推荐

