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

Universal Links跳转App后未触发AppDelegate函数处理DeepLink问题

  • 确认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)")
          }
      }
      
  • 验证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对应方法)。
  • 检查Xcode项目配置

    • 确认Associated Domains中已添加applinks:yourdomain.com,域名拼写无错误。
    • 检查Info.plist中无禁用Universal Links的冲突配置。
  • 重置Universal Links缓存
    苹果会缓存关联文件,修改后需重置缓存:

    • 卸载App,重启设备后重新安装。
    • 在Safari中打开目标链接,长按选择“在[你的App]中打开”,强制触发一次跳转更新缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:39:53