【问题标题】:IOS WKWebview Cache ClearingIOS WKWebview缓存清除
【发布时间】:2020-02-08 02:44:14
【问题描述】:

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

实际网站上有一个缓存插件,我希望每当应用程序在用户设备上加载时 - 让应用程序拉入一个新的 url 副本。这可能吗?

任何人都可以建议从哪里开始或如何调整我当前的代码以开始?

谢谢!

【问题讨论】:

    标签: ios wordpress xcode caching


    【解决方案1】:

    推送通知与 WKWebview 无关。

    首先您需要在后端/wordpress 中处理事件。从移动端,您需要以下内容:
    1- 生成 P12 或 P8 证书并将其放在服务器上以信任 APN
    2- 在 AppDelegate 类中注册推送通知。
    3- 在 AppDelegate 类中也处理接收推送通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-22
      • 2015-05-26
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2012-12-06
      相关资源
      最近更新 更多