感谢您注意到这个问题。我正在使用单身人士通过AVPlayer
在我的应用中播放音乐,就像这样:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
[session setActive:YES error:nil];
AVURLAsset *musicAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:musicAsset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:_playerItem];
player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
[player play];
工作正常。但我的应用程序有一些音乐页面(HTML5),因此用户也可以访问网页,并在那里播放音乐。 UIWebView
和AVPlayer
的音乐可以在同一时间播放,似乎很奇怪。有没有办法检测UIWebView
是否会播放音乐,所以我可以停止原生AVPlayer
?谢谢!
答案 0 :(得分:2)
您是否尝试过侦听AVPlayerItemBecameCurrentNotification?当您的网页启动媒体文件(视频或音频)时,将触发此操作。您可以按如下方式拦截它:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(avPlayerItemBecameCurrent:)
name:@"AVPlayerItemBecameCurrentNotification"
object:nil];
现在(我意识到我教你在这里吮鸡蛋 - 道歉。这只是为了完整)你需要avPlayerItemBecameCurrent:
-(void)avPlayerItemBecameCurrent:(NSNotification*)notification
{
// Your code goes here to stop your native AVPlayer from playing.
}
警告 - 我还没有对此进行测试,但它应该有效。
(写完这篇文章后,经过深入挖掘后,我发现了这个Detecting and intercepting video playback in UIWebView)