Как я могу приостановить звук в UIWebView при воспроизведении звука с помощью AVPlayer

У меня есть 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 ответ

Никогда не пытайтесь сделать это, но вы можете использовать javascript и UIWebView stringByEvaluatingJavaScriptFromString, чтобы найти все аудио-теги в вашем WebView и установить каждую остановку воспроизведения DOM-аудио, используя функцию javascript "pause()", например, так.

Подготовьте функцию 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()"]];
Другие вопросы по тегам