MPNowPlayingInfoCenter 信息被 AVPlayer 覆盖

MPNowPlayingInfoCenter info being overwritten by AVPlayer

我正在开发一个 iOS 应用程序,它使用 AVPlayer 播放由 AVPlayerItems 表示的歌曲。

我已经尝试设置 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 中存储其他元数据,如 title/album 名称,以便它显示在信息中心?

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

问题是这一行什么都不做:

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

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

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

例如:

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

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