4

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

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

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

会有什么问题?

4

3 回答 3

7

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,pauseAudionextTapped是我的视图控制器中的所有方法,它们调用相应的方法来控制我的AVPlayer实例。要启用操作,您必须显式设置enabled并提供带有YES target的命令selector

如果需要禁用特定操作,除了添加目标外,还必须显式设置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];
于 2015-10-16T02:50:35.880 回答
4

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

MPRemoteCommandCenter无论出于何种原因,iOS 上的 AdMob 视频广告似乎都在使用。这可能会干扰您的应用程序对命令中心的使用。这是我想出的潜在解决方法:https ://gist.github.com/ekilah/e74683291d3e7fafb947

解决方法的“要点”是在从 AdMob 获取广告并播放后重置所有sharedCommandCenters 侦听器和' 信息字典。MPNowPlayingInfoCenter解决方法是重置所有命令的方式不太漂亮,但这就是我想出的。也许有人有更好的方法?

这种方法也可能有助于 OP。在不同用途之间重置东西可能是一个解决方案。

于 2015-12-10T22:05:12.183 回答
1

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

于 2015-10-15T06:09:41.333 回答