在委托方法中无法检测到 IOS 通用链接

Posted

技术标签:

【中文标题】在委托方法中无法检测到 IOS 通用链接【英文标题】:IOS Universal Link can not be detected in delegate method 【发布时间】:2020-11-02 14:47:48 【问题描述】:

我目前正在我的应用上测试通用链接。我已上传 apple-app-site-association,编辑我的应用程序的权利文件。当我单击 Note 中的链接(例如:domain.com/test/id12345)时,可以打开该应用程序。

但是,它只打开应用程序,而是从应用程序本身打开。不调用获取信息的委托方法。

项目为ios 13 SwiftUI项目,生命周期为UIKit App Delegate。

在 AppDelegate.swift 下:

    func application(_ application: UIApplication,
                     continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool 
  
      print("Test: this is never called:\(userActivity)")
      
      guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let url = userActivity.webpageURL,
        let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else 
          return false
      
      return false
    

有人知道如何检测被点击的通用链接吗?我应该如何调试它,链接确实打开了应用程序,但我无法处理其余的。

【问题讨论】:

这是否回答了您的问题***.com/a/63940149/12299030? 【参考方案1】:

如果您的应用程序支持多窗口或者您没有销毁 SceneDelegate,则需要在 SceneDelegate 中实现此方法

// SceneDelegate.swift

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) 
    _ = LoginManager.shared.application(.shared, open: URLContexts.first?.url)

【讨论】:

以上是关于在委托方法中无法检测到 IOS 通用链接的主要内容,如果未能解决你的问题,请参考以下文章

iOS 通用链接打开应用程序,不触发应用程序委托方法

如何弱链接 iOS 应用程序委托方法?

UITouch 不适用于 ios8

使用 iOS 和 Swift 3 在委托方法中未接收到 xmpp 存在

无法在 IOS Swift 中使用委托方法关闭侧边菜单

didBeginContact 委托方法未触发 ARKit 碰撞检测