使用 AVPlayer 播放音频时如何在 UIWebView 中暂停音频
Posted
技术标签:
【中文标题】使用 AVPlayer 播放音频时如何在 UIWebView 中暂停音频【英文标题】:How can I pause audio in UIWebView when I play audio use AVPlayer 【发布时间】:2016-06-08 14:04:42 【问题描述】:我有一个UIWebView
播放音乐,当我使用AVPlayer
播放音频时,它们一起播放。
我尝试使用AVAudiosession
来控制它。但不工作。
这是我的代码
- (IBAction)click:(id)sender
NSURL *url = [NSURL URLWithString:@"http://mmmono.qiniudn.com/1c16bee1df0dbfbfea04ae11d8d8d021.mp3"];
self.player = [AVPlayer playerWithURL:url];
[self.player play];
[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryAmbient error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
- (void)viewDidLoad
[super viewDidLoad];
self.webView.mediaPlaybackRequiresUserAction = NO;
NSURL *url = [NSURL URLWithString:@"http://mmmono.com/g/meow/560885/"];
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
【问题讨论】:
复制/粘贴你的代码,不要放截图。链接可能会死掉,而且如果我们只想纠正一两行,我们必须重新输入它,而如果你复制/粘贴它,我们只需复制/粘贴它来修改它。 我认为当 UIWebView 加载页面或站点时,您可以停止播放音乐。否则,根据文档,无法知道是否播放了音乐。 【参考方案1】:永远不要尝试这个,但您可以使用 javascript 和 UIWebView stringByEvaluatingJavaScriptFromString 来查找 WebView 上的所有音频标签,并使用 javascript“pause()”函数设置每个 DOM 停止播放音频。
准备javascript函数。 (如果您有该网站的 html、javascript,您可以直接在 .js 文件或<script>
标记中编写下面的函数)
NSString *pauseScriptString = @"function pauseAllAudio() \
var audios = document.getElementsByTagName(\"audio\");\
if(audios.length > 0)\
for(var i = 0; i< audios.length; i++)\
audios[i].pause();\
\
\
";
将 javascript 加载到 webview,以便稍后调用它执行。
[yourWebview stringByEvaluatingJavaScriptFromString: pauseScriptString];
执行暂停脚本
[youWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"pauseAllAudio()"]];
【讨论】:
以上是关于使用 AVPlayer 播放音频时如何在 UIWebView 中暂停音频的主要内容,如果未能解决你的问题,请参考以下文章