MPNowPlayingInfoCenter始终处于播放状态

9
我已经启用并运行了我的 MPNowPlayingInfoCenter,但是还存在一个问题。无论我实际的播放状态如何,MPNowPlayingInfoCenter 总是处于“播放”状态,并显示“暂停”按钮。按下该按钮会触发暂停事件。
当我的播放器改变状态时(例如暂停),我通过 MPNowPlayingInfoPropertyPlaybackRate 键更新 MPNowPlayingInfoCenter。
是否有其他方法将 MPNowPlayingInfoCenter 的状态设置为暂停?
感谢任何提示!
2个回答

0
试试这个:
 NSMutableDictionary *currentlyPlayingTrackInfo = [NSMutableDictionary dictionaryWithCapacity:7];
 currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @((Float64)[player currentTime]);
    if (!SYSTEM_VERSION_OF_DEVICE_LESS_THAN(@"7.0"))
    {
        currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyPlaybackRate] = [NSNumber numberWithDouble:_isHere == NO?1:0];
    }
    else
    {
        currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyPlaybackRate] = [NSNumber numberWithDouble:1];
    }
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:currentlyPlayingTrackInfo];

1
抱歉回复晚了。我在使用你的代码时遇到了问题。_isHere变量是什么(当前玩家状态?),为什么版本小于7.0的playbackRate总是设置为1?除此之外,InfoCenter仍然始终显示“playing”状态。 - Maximilian Körner
我认为设置MPNowPlayingInfoPropertyPlaybackRate是正确的方向,但要解决这个问题肯定还有更多工作要做。 - Warpling

0
发现问题是当第二个音频输出源正在播放时,我的媒体播放器通过nowplayingcenter进行控制,它会忽略我手动设置的播放速率并检测到正在播放的音频。
所以对我来说解决方案就是暂停第二个音频。 在我的情况下这是可能的,但是如果第二个音频对于应用程序非常重要,我不知道该如何克服这个问题。 我很乐意接受任何更优雅地解决此问题的答案。

我遇到了类似的问题。我有一个FeedViewController,其中包含许多视频,但它不播放始终播放的音频。如果您在FeedViewController中选择其中一个视频,则会出现PlayerViewController并播放带有音频的完整视频。我注意到,如果在进入PlayerViewController之前没有暂停FeedViewController中的每个视频,则“播放/暂停”按钮将无法相应更新。在我的情况下,您认为有没有一种方法可以使其正常工作而不必暂停PlayerViewController内部的视频? - JEL
我发布了一个问题,我的更新显示了一个类似于你的解决方案——但在我的情况下仍然不完美。: ) https://dev59.com/I1gQ5IYBdhLWcg3wIASb - JEL
我认为根本问题在于iOS在幕后跟踪音频播放并检测是否仍在播放。如果您经常使用音频,例如一次只需要一首歌曲,那么这是有意义的,但是如果在后台静音音频则会使事情混乱。我认为不会有完美的解决方案,因为您无法100%手动控制现在正在播放的中心。 - Maximilian Körner
我知道你的意思,不过有什么建议吗?音频必须在背景中静音,或者我可以播放没有音频的视频。 - JEL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接