【问题标题】:MPNowPlayingInfoCenter info being overwritten by AVPlayerMPNowPlayingInfoCenter 信息被 AVPlayer 覆盖
【发布时间】:2015-11-29 00:20:37
【问题描述】:

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

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

甚至在程序执行后立即

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

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

的信息:[ “MPNowPlayingInfoPropertyElapsedPlaybackTime”:34.89555007300078, “AVNowPlayingInfoControllerIdentifierKey”:<__ nsconcreteuuid> 9141DD1C-FD09-4210-B3C7-B948522E3AF6, “playbackDuration”:198.2516666666667, “MPNowPlayingInfoPropertyPlaybackRate”:1] P>

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

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

【问题讨论】:

标签: ios swift avplayer mpnowplayinginfocenter


【解决方案1】:

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

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

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

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

例如:

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

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

【讨论】:

  • 你确定我的代码行什么都不做吗?我可以看到标题在它消失在正在播放的信息屏幕上之前短暂弹出。
  • 使用MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyTitle : "Title"] 会覆盖已经存在于由AVPlayer 提供的nowPlayingInfo 中的其他数据,这些数据需要显示歌曲已播放了多长时间。我想在当前词典中添加更多信息。
  • “MPNowPlayingInfoPropertyElapsedPlaybackTime”是如何自动设置的呢?我没有使用 MPMediaPlayer。
  • @matt 我也有同样的问题,默认设置以下 3 个属性:MPNowPlayingInfoPropertyElapsedPlaybackTimeMPNowPlayingInfoPropertyPlaybackRatetitle 即使我使用字典设置了 NowPlayinfo,当我从控制中心播放 n 暂停时,它仍然会用 AVPlayer 数据覆盖。谁能帮我解决这个问题?
  • @Andrew : 你有解决覆盖 AVPlayer 数据的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多