我制作了一个非常简单的 WKWebview IOS 应用程序,嵌入了我的 Wordpress 网站......
import UIKit
import WebKit
class ViewController: UIViewController {
private lazy var url = URL(string: "http://www.myblog.com")!
private weak var webView: WKWebView!
init (url: URL, configuration: WKWebViewConfiguration) {
super.init(nibName: nil, bundle: nil)
self.url = url
navigationItem.title = ""
}
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }
override func viewDidLoad() {
super.viewDidLoad()
initWebView()
webView.loadPage(address: url)
}
private func initWebView() {
let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
view.addSubview(webView)
self.webView = webView
webView.navigationDelegate = self
webView.uiDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false
webView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
webView.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
webView.leftAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor).isActive = true
}
}
extension ViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
guard let host = webView.url?.host else { return }
navigationItem.title = host
}
}
extension ViewController: WKUIDelegate {
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
guard navigationAction.targetFrame == nil,
let url = navigationAction.request.url else { return nil }
let vc = ViewController(url: url, configuration: configuration)
if let navigationController = navigationController {
navigationController.pushViewController(vc, animated: false)
return vc.webView
}
present(vc, animated: true, completion: nil)
return nil
}
}
extension WKWebView {
func loadPage(address url: URL) { load(URLRequest(url: url)) }
func loadPage(address urlString: String) {
guard let url = URL(string: urlString) else { return }
loadPage(address: url)
}
}
实际网站上有一个缓存插件,我希望每当应用程序在用户设备上加载时 - 让应用程序提取网址的新副本。这可能吗?
任何人都可以建议从哪里开始或者我如何调整当前的代码来开始吗?
谢谢!
最佳答案
推送通知与 WKWebview 无关。
首先您需要处理后端/wordpress 中的事件。从移动端,您需要以下内容:
1-生成P12或P8证书并将其放在服务器上以信任APN
2- 在 AppDelegate 类中注册推送通知。
3- 也在 AppDelegate 类中处理接收推送通知。
关于IOS WKWebview缓存清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58326558/