BackGround:
我用 wix.com 做了一个网站,就是这个[https://www.igparrot.com]。我在Xcode的iOS应用程序中嵌入了这个网站。当我从浏览器访问网站时,重定向到网站外部其他 URL 的任何链接或按钮都可以正常工作,但是当我从应用程序打开它们时,这些链接按钮无法导航到指定的 URL。基本上不采取任何行动。
法典:
这是我传递网站 URL 的代码:
if indexPath.row == 0
{
return ("Support".localized(), "https://www.igparrot.com")
}
else if indexPath.row == 1
{
return ("Rate the App".localized(), "https://apps.apple.com/app/id1522248373")
}
我假设您正在使用WKWebView
来展示您的网页,该网页已显示并且此页面上的链接不起作用。您是否实施了WKNavigationDelegate
(文档)。处理链接?也许您实现委托的方式出了问题。从WKWebView
文档中:
当用户单击内容中的链接时,Web 视图的行为类似于 浏览器,并在该链接上显示内容。要禁止导航, 或者,要自定义 Web 视图的导航行为,请提供 Web 具有导航委托的视图,即符合
WKNavigationDelegate
协议。使用导航委托 修改 Web 视图的导航行为,或跟踪加载 新内容的进度。
具体来说,webView(_:decidePolicyFor:decisionHandler:)
对您来说应该很有趣,因为这使您能够决定是否访问WKWebView
中的页面。
例:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let host = navigationAction.request.url?.host {
if host.contains("example.com") {
decisionHandler(.allow)
return
}
}
decisionHandler(.cancel)
}
另外,请查看此页面以获取更多信息。
也可能是您链接到的页面http://
而不是https://
。默认情况下,具有前者的站点将被阻止(出于安全原因)。如果要启用它们(不推荐),可以通过将其添加到Info.plist
文件中来执行此操作:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
另一个原因可能是您配置WKWebViewConfiguration
的方式只允许链接到所谓的应用绑定域的页面。然后,limitsNavigationsToAppBoundDomains
设置设置为true
,它只允许您在Info.plist
中列出的域(见下文)。如果页面链接不在其中一个域中,它将不起作用。如果设置为false
,则无需将它们添加到应用绑定域。
<key>WKAppBoundDomains</key>
<array>
<string>example1.com</string>
<string>example2.org</string>
...
</array>