IOS WKWebview缓存清理

标签 ios wordpress xcode caching

我制作了一个非常简单的 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/

相关文章:

ios - swift : How do I pass the same text and image form tableVC to a detailVC using the same tableviewcell?

ios - 属性需要定义一个方法

wordpress - 如何从管理员更改 wordpress 默认 Logo ?

php - Wordpress 一页网站使用 wp_is_mobile() 加载缓慢

ios - iTunes Connect 上的无效签名(无效二进制文件)

swift - 如何从 swift 3 将 x-www-form-urlencoded 发布到 REST api

ios - 圆形顶部的UIView

ios - "Before/after slider"UIKit中的效果

ios - 将 mergeChangesFromContextDidSaveNotification 触发 fetchedResultsController 的 objectsChanged : delegate methods?

html - <p> 的 padding-top 和 height 在上面的两个 sibling 下面消失了