У меня есть UIWebView, который только создается и URL загружается, но этот WebView не назначен никакому представлению. Я получаю HTML-контент каждые 5 секунд из UIWebView, используя Timer. Это прекрасно работает до тех пор, пока я не играю аудио в фоновом режиме. Когда звук воспроизводится в фоновом режиме, для получения содержимого HTML из UIWebView требуется некоторое время, и мой пользовательский интерфейс останавливается на 4–5 секунд, а непрерывный вызов для получения HTML приводит к зависанию приложения.
Пользовательский интерфейс зависает при воспроизведении звука вфон и получить HTML-контент формы WebView. Не в состоянии нажать даже кнопку на экране.
Я использую библиотеку RadioKit для воспроизведения аудио.
1) Я попробовал AVPlayer play () в глобальной очереди.
2) Загрузите WebView в AppDelegate.
3) Вызовите методы делегирования WebView - webViewDidFinishLoad () и получите там HTML.
4) Получить HTML-контент в AppDelegate и уведомлять после получения HTML-контента.
let webView = UIWebView()
//Load URL request.
if let url = URL(string: "Some string here") {
let urlRequest = URLRequest(url: url)
self.webView.loadRequest(urlRequest)
}
webView.delegate = self
//WebView Delegate
func webViewDidFinishLoad(_ webView: UIWebView) {
self.loadWebpageTimer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(self.loadWebPage), userInfo: nil, repeats: true)
}
//loadWebPage
@objc func loadWebPage(){
DispatchQueue.main.async {
self.interfaceType = self.webView.stringByEvaluatingJavaScript(from: "document.getElementById('Interface_Type').value")
NotificationCenter.default.post(name: NSNotification.Name("WebViewUpdate"), object: nil, userInfo: nil)
}
//In Other view for update the UI add observer
Интерфейс пользователя останавливается при воспроизведении звука в фоновом режиме и получает HTML-контент из WebView. Я хочу, чтобы мой пользовательский интерфейс не зависал, пока я получаю HTML-форму WebView.
Спасибо.