我在从我的应用程序中将网页内容共享到 facebook 和 twitter 时遇到问题,该应用程序基于将网页加载到 WebKit 中。在网页中,我有 5 个按钮:Facebook、Twitter、WhatsApp、Viber 和 SMS。除 Facebook 和 Twitter 之外的所有按钮都运行良好。当用户点击 WhatsApp、Viber 和 SMS 时,方法“decidePolicyFor”就会被调用,我可以决定会发生什么。点击 Facebook 和 Twitter 按钮不会产生任何影响。没有结果,也没有错误。
我还尝试将新的 QueriesSchemes 实现到 info.plist 文件中,但没有结果。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>twitter</string>
<string>fb</string>
<string>sms</string>
<string>viber</string>
<string>whatsapp</string>
</array>
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
print("user click")
if let newURL = navigationAction.request.url,
let host = newURL.host , !host.hasPrefix("-mywebsite-") && UIApplication.shared.canOpenURL(newURL) && UIApplication.shared.openURL(newURL) {
print(newURL)
print("Redirected to browser. No need to open it locally")
decisionHandler(.cancel)
} else {
print("Open it locally")
let url = navigationAction.request.url?.absoluteString
let url_elements = url!.components(separatedBy: ":")
if url_elements[0] == "sms" {
print("sms")
openCustomApp(urlScheme: "sms://", additional_info: url_elements[1])
decisionHandler(.cancel)
} else if url_elements[0] == "whatsapp"{
print("whatsapp")
openCustomApp(urlScheme: "whatsapp://", additional_info: url_elements[1])
decisionHandler(.cancel)
} else if url_elements[0] == "viber"{
print("viber")
openCustomApp(urlScheme: "viber://", additional_info: url_elements[1])
decisionHandler(.cancel)
} else {
print("unknown")
decisionHandler(.allow)
}
}
} else {
print("not a user click")
decisionHandler(.allow)
}
}
最佳答案
试试这个,效果很好..
func webView(_ webView: WKWebView, createWebViewWith configuration:
WKWebViewConfiguration, for navigationAction: WKNavigationAction,
windowFeatures: WKWindowFeatures) -> WKWebView? {
NSLog("Test method call from another class", "")
if (navigationAction.targetFrame == nil) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(navigationAction.request.url!, options: [:],
completionHandler: nil)
} else {
UIApplication.shared.openURL(navigationAction.request.url!)
}
return nil
}
return nil;
}
关于ios - 在 Facebook 和 Twitter 上共享网页内容不起作用 - WebKit iOS Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47962475/