ios - WKWebView 在后台应用程序时停止音频

标签 ios swift html5-video wkwebview

我有一个正在播放 HTML5 视频的 WKWebView。当我点击主页按钮并且应用程序进入后台时,我仍然可以听到音频播放。如何暂停 HTML 5 视频以停止播放背景音频。我尝试在应用程序进入后台时加载一个空白页面,这是可行的,

let url = URL(string: "about:blank")
let request = URLRequest(url:url!)
self.webView.load(request) 

但我希望能够在用户从后台返回时的同一点开始播放视频,因此这不是一个可行的解决方案,因为它只是在我重新打开应用程序时加载空白页面。

最佳答案

我能够通过在应用进入后台时注入(inject) JavaScript 来实现这一点,这会暂停正在播放的任何视频元素。

NotificationCenter.default.addObserver(self, selector: #selector(enteredBackground(notification:)), name: UIApplication.didEnterBackgroundNotification, object: nil)

@objc func enteredBackground(notification: Notification) {
    let script = "var vids = document.getElementsByTagName('video'); for( var i = 0; i < vids.length; i++ ){vids.item(i).pause()}"
    self.webView.evaluateJavaScript(script, completionHandler:nil)
}

关于ios - WKWebView 在后台应用程序时停止音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44827834/

相关文章:

ios - 用户控制的围绕球体运行的 SceneKit 对象在两极表现异常

iphone - 如何在collectionView中重新加载补充 View

ios - Applovin 识别广告类型(IOS, Objective-C )

iOS:在实时流式传输 (HLS) 中是否可以进行缓冲

swift - 以编程方式限制 UICollectionViewCell 的动态高度?

ios - 确保 ScrollView 和 View 始终具有相同的高度

用于播放和暂停视频的 Javascript 函数

html - Firefox 8 支持 mp4 吗?

javascript - 在javascript/jquery中获取当前视频帧

iphone - 创建将由 Mac 和 iOS 代码共享的颜色