0

我有一个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]];
}
4

1 回答 1

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()"]];
于 2016-06-08T14:38:22.933 回答