播放/暂停下一个/上一个按钮在控制中心显示为灰色

时间:2015-10-08 10:37:16

标签: ios avplayer mpnowplayinginfocenter

在我的应用程序中,播放是从控制中心控制的。 当在AVPlayer中进行播放时(此时播放控件在控制中心正常工作),我正在加载带有其他流媒体URL的webview。

再次完成流式传输后,我将从AVPlayer开始播放。 在此之后,播放控件在控制中心显示为灰色。

我正在使用[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo在控制中心启用播放控制。

会出现什么问题?

3 个答案:

答案 0 :(得分:6)

我遇到了这个问题以及使用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:playAudiopauseAudionextTapped都是我的视图控制器中调用各个方法来控制AVPlayer实例的方法。要启用操作,您必须明确将enabled设置为YES ,然后提供包含targetselector的命令。

如果您需要停用特定操作,除了添加目标外,您还必须明确将enabled属性设置为NO

commandCenter.previousTrackCommand.enabled = NO;
[commandCenter.previousTrackCommand addTarget:self action:@selector(previousTapped:)];

如果您没有为命令设置enabled,则该项目将不会出现在锁定屏幕或命令中心。

此外,请记住将应用设置为后台播放(将UIBackgroundModes audio值添加到Info.plist文件中。),将播放器设置为活动状态,并检查错误:

NSError *setCategoryError;
NSError *setActiveError;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
[[AVAudioSession sharedInstance] setActive:YES error:&setActiveError];

答案 1 :(得分:2)

谷歌把我带到这里,因为我在使用AdMob视频广告时遇到了指挥中心的问题,以及对OP引用的AdMob的评论。在这里张贴给其他也有这些问题的人。

iOS上的AdMob视频广告似乎无论出于何种原因使用MPRemoteCommandCenter。这可能会影响您应用对指挥中心的使用。以下是我提出的可能的解决方法:https://gist.github.com/ekilah/e74683291d3e7fafb947

"要点"解决方法是在获取AdMob的广告之后以及播放之后重置所有sharedCommandCenter个侦听器和MPNowPlayingInfoCenter的信息字典。解决方法重置所有命令的方式不是很好,但这就是我提出的。也许某人有更好的方法?

这种方法也可能对OP有所帮助。在不同用途之间重置事物可能是一种解决方案。

答案 2 :(得分:1)

最后,我通过使用 AVplayer 加载mp3网址而不是在 UIWebview 中加载来解决此问题。可以从 AVPlayer 检索当前播放时间,t 总时间,也可以使用滑块搜索播放。