4 C
London
Friday, April 26, 2024

ios – My web site edits not exhibiting/loading in webview


Please, I’ve embedded webpages within the app to make it simpler to replace and such.

However, every time I replace the web site that’s embeded and publish it, I am unable to see the modifications within the app till I uninstall and reinstall the app.

Can anybody kindly assist me?

Many thanks.

That is the code I exploit for the Webview:

   struct Webview: UIViewControllerRepresentable {
        let url: URL
        func makeUIViewController(context: Context) -> WebviewController {
            let webviewController = WebviewController()
            let request = URLRequest(url: self.url, cachePolicy: .returnCacheDataElseLoad)
            webviewController.webview.load(request)
            return webviewController
        }
        func updateUIViewController(_ webviewController: WebviewController, context: Context) {
            //
        }
    }
    
    class WebviewController: UIViewController, WKNavigationDelegate {
        lazy var webview: WKWebView = WKWebView()
        lazy var progressbar: UIProgressView = UIProgressView()
        deinit {
            self.webview.removeObserver(self, forKeyPath: "estimatedProgress")
            self.webview.scrollView.removeObserver(self, forKeyPath: "contentOffset")
        }
        override func viewDidLoad() {
            tremendous.viewDidLoad()
            self.webview.navigationDelegate = self
            self.view.addSubview(self.webview)
            self.webview.body = self.view.body
            self.webview.translatesAutoresizingMaskIntoConstraints = false
            self.view.addConstraints([
                self.webview.topAnchor.constraint(equalTo: self.view.topAnchor),
                self.webview.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
                self.webview.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
                self.webview.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
            ])
            self.webview.addSubview(self.progressbar)
            self.setProgressBarPosition()
            webview.scrollView.addObserver(self, forKeyPath: "contentOffset", choices: .new, context: nil)
            self.progressbar.progress = 0.1
            webview.addObserver(self, forKeyPath: "estimatedProgress", choices: .new, context: nil)
        }
        func setProgressBarPosition() {
            self.progressbar.translatesAutoresizingMaskIntoConstraints = false
            self.webview.removeConstraints(self.webview.constraints)
            self.webview.addConstraints([
                self.progressbar.topAnchor.constraint(equalTo: self.webview.topAnchor, constant: self.webview.scrollView.contentOffset.y * -1),
                self.progressbar.leadingAnchor.constraint(equalTo: self.webview.leadingAnchor),
                self.progressbar.trailingAnchor.constraint(equalTo: self.webview.trailingAnchor),
            ])
        }
        // MARK: - Internet view progress
        override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
            change keyPath {
            case "estimatedProgress":
                if self.webview.estimatedProgress >= 1.0 {
                    UIView.animate(withDuration: 0.3, animations: { () in
                        self.progressbar.alpha = 0.0
                    }, completion: { completed in
                        self.progressbar.setProgress(0.0, animated: false)
                    })
                } else {
                    self.progressbar.isHidden = false
                    self.progressbar.alpha = 1.0
                    progressbar.setProgress(Float(self.webview.estimatedProgress), animated: true)
                }
            case "contentOffset":
                self.setProgressBarPosition()
            default:
                tremendous.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
            }
        }
    }

Latest news
Related news

LEAVE A REPLY

Please enter your comment!
Please enter your name here