当我播放音频使用AVPlayer时,如何在UIWebView中暂停音频

时间:2016-06-08 14:04:43

标签: ios objective-c avplayer avaudiosession avplayeritem

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

1 个答案:

答案 0 :(得分: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];

执行pausescript

[youWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"pauseAllAudio()"]];