播放/暂停下一个/上一个button在控制中心呈灰色
在我的应用程序中,播放由控制中心控制。 在AVPlayer中播放时(此时播放控件在控制中心工作正常),我正在使用其他stream式URL加载webview。
一旦stream再次完成,我开始从AVPlayer播放。 之后,播放控制在控制中心变灰。
我正在使用[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo
在控制中心启用播放控制。
会有什么问题?
我遇到了这个问题以及使用AVPlayer
实例。 您可以使用MPRemoteCommandCenter
在锁屏和指挥中心上设置控件。
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter]; commandCenter.previousTrackCommand.enabled = YES; [commandCenter.previousTrackCommand addTarget:self action:@selector(previousTapped:)]; commandCenter.playCommand.enabled = YES; [commandCenter.playCommand addTarget:self action:@selector(playAudio)]; commandCenter.pauseCommand.enabled = YES; [commandCenter.pauseCommand addTarget:self action:@selector(pauseAudio)]; commandCenter.nextTrackCommand.enabled = YES; [commandCenter.nextTrackCommand addTarget:self action:@selector(nextTapped:)];
previousTapped:
, playAudio
, pauseAudio
和nextTapped
是我的视图控制器中的所有方法,它们调用相应的方法来控制我的AVPlayer
实例。 要启用某个动作,必须明确将enabled
设置为YES
并提供一个包含target
和selector
的命令。
如果您需要禁用特定操作,则除了添加目标之外 ,还必须将enabled
属性显式设置为NO
。
commandCenter.previousTrackCommand.enabled = NO; [commandCenter.previousTrackCommand addTarget:self action:@selector(previousTapped:)];
如果您没有为该命令设置enabled
,该项目根本不会出现在locking屏幕或指挥中心。
另外,请记住将您的应用设置为后台播放(将UIBackgroundModes
audio
值添加到您的Info.plist文件中),将播放器设置为活动状态,并检查错误:
NSError *setCategoryError; NSError *setActiveError; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError]; [[AVAudioSession sharedInstance] setActive:YES error:&setActiveError];
Google把我带到了这里,因为我在使用AdMobvideo广告时遇到了指令中心的问题,并对引用了OP的AdMob发表了评论。 在这里发帖给其他人也有这些问题。
iOS上的AdMobvideo广告无论出于何种原因似乎都使用MPRemoteCommandCenter
。 这可能会干扰您的应用程序对命令中心的使用。 下面是我想出了一个潜在的解决方法: https : //gist.github.com/ekilah/e74683291d3e7fafb947
解决方法的“主旨”是在AdMob中的广告被抓取并播放之后,重置所有的sharedCommandCenter
监听器和MPNowPlayingInfoCenter
的信息词典。 解决方法是重置所有的命令的方式不是很好,但这是我想出的。 也许有人有更好的方法?
这种方法也可能有助于OP。 在不同用途之间重置事物可能是一个解决scheme。
最后我解决了这个问题,通过加载使用AVplayer的MP3url,而不是加载到UIWebview 。 当前播放时间 ,可以从AVPlayer获取总时间 ,也可以使用滑块查找播放。
- Swift:当设备被locking时继续播放声音
- video暂停时,AVPlayer Fairplay HLS不会停止audio播放
- 如何使用AVURLAssetstream式传输video并将caching的数据保存到磁盘
- AVPlayer失败,AVPlayerItemStatusFailed(OSStatus错误-12983)
- 使用AVPlayer将实时stream的音轨静音
- 如何使用AVPlayer以不同于系统音量的iPod音乐库播放音轨
- iOS AVPlayer在播放图标上显示交叉线的屏幕
- 在iPhone上从stream中获取ID3标签
- iOS8中的AVPlayerItem addobserver问题