Я пытаюсь использовать WKWebView
для отображения одной встроенной временной шкалы из Twitter.
Почти все ссылки работают после того, как WKWebView
успешно загрузил встроенный контент, но ссылка перенаправления для каждого твита, отображаемая на временной шкале, не работает.
Вот ссылка на встроенный твит:
https://publish.twitter.com/?query=%40Google&widget=Timeline
Это встроенная временная шкала твиттера:
< a class="twitter-timeline" href="https://twitter.com/Google?ref_src=twsrc%5Etfw">Tweets by Google< /a>
< script async src="https://platform.twitter.com/widgets.js" charset="utf-8">< /script>
Если вы прокрутите его вниз и попробуете щелкнуть один из твитов, вы будете вестина текущий твит, но это не сработает, когда вы отображаете с WKWebView
.
. Во время теста я пытался использовать ту же встроенную временную шкалу и протестировал на работающем устройстве Android.
Я думаю, что встроенная ссылка в порядке, и должно быть что-то не так с тем, как я реализовал WKWebView
, или у самого WKWebView
есть проблемы с отображением встроенной временной шкалы Twitter.
Здесьмой код для использования WKWebView
для отображения встроенной временной шкалы Twitter:
import UIKit
import WebKit
class ViewController: UIViewController {
private var mWebView: WKWebView!
let embeddedTwittContent = "<a class='twitter-timeline' href='https://twitter.com/Google?ref_src=twsrc%5Etfw'>Tweets by Google</a>"
let scriptValue = "<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>"
let redirectLink = "https://twitter.com/Smaforetagarna/status/"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = WKWebsiteDataStore.nonPersistent()
configuration.preferences = preferences
self.mWebView = WKWebView(frame: CGRect.zero, configuration: configuration)
self.mWebView.translatesAutoresizingMaskIntoConstraints = false
self.mWebView.allowsLinkPreview = true
self.mWebView.allowsBackForwardNavigationGestures = true
self.mWebView.navigationDelegate = self
self.view.addSubview(self.mWebView)
// Add Constraints
self.mWebView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100).isActive = true
self.mWebView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true
self.mWebView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0).isActive = true
self.mWebView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0).isActive = true
loadTweetNews()
}
func loadTweetNews(){
let htmlHeader = "<!DOCTYPE html> <html><meta name=\'viewport\' content=\'initial-scale=1.0\'/> <head> \(scriptValue) </head> <body>"
let htmlFooter = "</body> </html>"
let orderHtml = htmlHeader + embeddedTwittContent + htmlFooter
let url: URL = URL(string: "https:")!
self.mWebView.loadHTMLString(orderHtml, baseURL: url)
}
}
extension ViewController: WKNavigationDelegate{
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("page finished load")
}
func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
print("didReceiveServerRedirectForProvisionalNavigation: \(navigation.debugDescription)")
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("didStartProvisionalNavigation")
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
if let url = navigationAction.request.url,
UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
print(url)
decisionHandler(.cancel)
} else {
decisionHandler(.allow)
}
} else {
decisionHandler(.allow)
}
}
}
Если вы запустите этот код, вы сможете нажимать почти все ссылки, но как только вы попытаетесь нажать одну изэти твиты, ничего не произойдет.
Цель развертывания моего проекта 10.0
Моя версия Xcode 10.2.1
Моя версия Swift 4.2