Пользовательский интерфейс зависает, когда AVPlayer воспроизводит аудио в фоновом режиме - PullRequest
1 голос
/ 31 октября 2019

У меня есть 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.

Спасибо.

...