Swift 应用程序未拦截从SFSafariViewController中实例化的通用链接

Swift 应用程序未拦截从SFSafariViewController中实例化的通用链接,swift,ios-universal-links,sfsafariviewcontroller,Swift,Ios Universal Links,Sfsafariviewcontroller,我有一个应用程序,可以打开一个SFSafariViewController来处理网上付款。一旦用户完成购买,他们就会出现在带有“下一步”按钮的确认屏幕上。当他们单击该按钮时,它会将他们发送到url/myCallbackURL 该应用程序已配置为支持通用链接。我的场景大使馆中有以下内容 func scene(_: UIScene, continue userActivity: NSUserActivity) { if userActivity.activityType == NSUserA

我有一个应用程序,可以打开一个SFSafariViewController来处理网上付款。一旦用户完成购买,他们就会出现在带有“下一步”按钮的确认屏幕上。当他们单击该按钮时,它会将他们发送到url/myCallbackURL

该应用程序已配置为支持通用链接。我的场景大使馆中有以下内容

func scene(_: UIScene, continue userActivity: NSUserActivity) {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
      let components = url.absoluteURL.pathComponents
      // check the last component and go to the right view
    }
  }
我在这个函数中放置了一个断点,以查看它何时被命中

当我运行
xcrun simctl openurl启动时”https://example.com/myCallbackURL“
在终端中,断点被命中。但是当我从SFSafariViewController中单击时,它不是


SFSafariViewController是否支持通用链接?我很困惑。根据苹果公司的文件,它确实如此,但在我的测试中,它不是。我遗漏了什么吗?

您无法从自己的应用程序中启动指向自己应用程序的通用链接。SFSafariViewController位于您自己的应用程序中。

来自:

当用户在Safari中浏览您的网站时,他们点击与当前网页位于同一域中的URL的通用链接,iOS尊重用户最可能的意图,并在Safari中打开链接。如果用户点击指向不同域中URL的通用链接,iOS将在您的应用程序中打开该链接

您没有收到回调,因为如果从同一域的网站调用universal link,则它不会打开您的应用程序


我建议改为使用
WKWebView
,并使用委托方法来知道何时加载了特定的URL。

但文档中并没有这么说。它表示“如果您实例化SFSafariViewController、WKWebView或UIWebView对象以处理通用链接,iOS将在Safari中打开您的网站,而不是打开您的应用程序。但是,如果用户从嵌入式SFSafariViewController、WKWebView或UIWebView对象中点击通用链接,iOS将打开您的应用程序。”…]TP40016308-CH12-SW1坦率地说,我一个字也不懂那一段。检查一下!看看类似的SO问题,例如。看看苹果的开发者论坛。你会发现我说的是对的。