![](/img/trans.png)
[英]Xcode Swift 4 Facebook & Twitter sharing no longer working?
[英]Sharing web content on Facebook and Twitter not working - WebKit iOS Swift
在將網頁加載到WebKit的基礎上,我無法將應用程序的Web內容共享到Facebook和Twitter。 在網頁中,我有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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.