WKWebViewでバックグランド再生をしたい
WKWebViewを利用したアプリを開発しております
「WKWebViewでバックグランド再生をしたい」のですが、
アプリをバックグラウンドにした時に停止してしまい、アプリをバックグラウンドにした後も再生を続けることができません。
詳しい方がいれば教えて頂きたいです。
実際に試した実装は以下です。
Appのバックグラウンドモードをオンにする
private func setupAudioSession() { do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) } catch { print(error) } }
Appがバックグラウンドに行った時に、Webviewへメッセージ送信
... NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationDidEnterBackground, object: nil, queue: nil, using: didEnterBackground) ... internal func didEnterBackground(notification: Notification) { playVideo() } func playVideo() { guard let js: String = Bundle.main.path(forResource: "PlayVideo", ofType: "js") else { return } webView.evaluateJavaScript(js, completionHandler: nil) print("play video") }
PlayVideo.js
(function() { var videos = document.getElementsByTagName('video'); for(var i = 0; i < videos.length; i++) { videos[i].play(); } })();
コントロールセンターからの操作に対応する
private func setupRemoteControl() { MPRemoteCommandCenter.shared().playCommand.isEnabled = true MPRemoteCommandCenter.shared().playCommand.addTarget { [weak self] (event) -> MPRemoteCommandHandlerStatus in self?.playVideo() print("MPRemoteCommandCenter playCommand") return .success } UIApplication.shared.beginReceivingRemoteControlEvents() self.becomeFirstResponder() }
実装したコードはこちらにあげております。