0

我正在使用一个使用 AVPlayer 播放由 AVPlayerItems 代表的歌曲的 iOS 应用程序。

我尝试设置 MPNowPlayingInfoCenter.defaultCenter() 的 nowPlayingInfo 属性,但似乎该信息会立即被 AVPlayer 覆盖,因为它需要更新其他信息,如 elapsedTime 和 PlaybackDuration。

即使在程序执行后立即

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo?[MPMediaItemPropertyTitle] = "Title"

的打印输出MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo

Info: ["MPNowPlayingInfoPropertyElapsedPlaybackTime": 34.89555007300078, "AVNowPlayingInfoControllerIdentifierKey": <__NSConcreteUUID 0x13778e9b0> 9141DD1C-FD09-4210-B3C7-B948522E3AF6, "playbackDuration": 198.2516666666667, "MPNowPlayingInfoPropertyPlaybackRate": 1]

我究竟做错了什么?是否可以在 AVPlayerItem 中存储其他元数据,例如标题/专辑名称,以便显示在信息中心?

另外,什么是 AVNowPlayingInfoControllerIdentifierKey?似乎没有任何名为 AVNowPlayingInfoController 的类。

4

1 回答 1

2

问题是这条线什么都不做:

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo?[MPMediaItemPropertyTitle] =
    "Title"

即使该行实际上做了任何事情,您也会将的副本作为单独的字典获取,然后写入该单独的字典。您不会写入实际正在播放的信息,这是您想要做的。nowPlayingInfo

正确的做法是形成一个字典,然后设置MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo 到那个字典

例如:

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = 
    [MPMediaItemPropertyTitle : "Title"]

(当然字典可以有更多条目。)

于 2015-11-29T00:39:46.803 回答