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"
即使该行实际上做了任何事情,您也会 获取 nowPlayingInfo
的 copy 作为单独的字典然后写入那个单独的字典。您不会写入 实际正在播放的信息,这是您想要做的。
正确的做法是形成一个字典,然后将MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo
设置为那个字典。
例如:
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo =
[MPMediaItemPropertyTitle : "Title"]
(当然字典可以有更多词条。)
我正在开发一个 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"
即使该行实际上做了任何事情,您也会 获取 nowPlayingInfo
的 copy 作为单独的字典然后写入那个单独的字典。您不会写入 实际正在播放的信息,这是您想要做的。
正确的做法是形成一个字典,然后将MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo
设置为那个字典。
例如:
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo =
[MPMediaItemPropertyTitle : "Title"]
(当然字典可以有更多词条。)