IOS WKWebview Cache Clearing - PullRequest
       6

IOS WKWebview Cache Clearing

0 голосов
/ 10 октября 2019

Я сделал очень простое приложение 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. Возможно ли это?

Кто-нибудь может посоветовать, с чего начать или как мне настроить свой текущий код для начала работы?

Спасибо!

1 Ответ

0 голосов
/ 11 октября 2019

Push-уведомления не имеют ничего общего с WKWebview.

Сначала необходимо обработать события в бэкэнде / wordpress. С мобильной стороны вам необходимо следующее:
1- Генерация сертификата P12 или P8 и размещение его на сервере для доверия APN
2- Регистрация для push-уведомлений в классе AppDelegate.
3- Обработка полученияpush-уведомление и в классе AppDelegate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...