Swift 应用程序未拦截从SFSafariViewController中实例化的通用链接
我有一个应用程序,可以打开一个SFSafariViewController来处理网上付款。一旦用户完成购买,他们就会出现在带有“下一步”按钮的确认屏幕上。当他们单击该按钮时,它会将他们发送到url/myCallbackURL 该应用程序已配置为支持通用链接。我的场景大使馆中有以下内容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
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问题,例如。看看苹果的开发者论坛。你会发现我说的是对的。