1

我的应用程序已经是手机上当前的“正在播放的应用程序”(即所有必需的信息都已提供给MPNowPlayingInfoCenter),并且它正确显示在锁定屏幕中,包括艺术家姓名、曲目标题、艺术品图像等。

根据文档,填充MPNowPlayingInfoCenter.default().nowPlayingInfo和添加正确的目标/操作MPRemoteCommandCenter 应该足以确保当用户点击Now Playing图标时在 CarPlay 中调用您的应用程序。

在 iOS 14 上,我设法通过推送到堆栈来实现上述目标CPNowPlayingTemplate,这要归功于我在本文中发现的一些巧妙技巧。

不过,在 iOS 13 上,一切都基于可怕的MPPlayableContentManagerAPI,并且没有CPTemplateApplicationSceneDelegate为基于音频的应用程序调用任何方法,我根本找不到方法来检测是否/何时显示“正在播放”屏幕。

MPNowPlayingInfoCenter并且MPRemoteCommandCenter配置正确 - 如上所述 - 但在 iOS 13 上点击 CarPlay 中的“正在播放”图标时,我的应用程序没有被拾取。

我认为这个 API会帮助我,但我不知道如何(它总是返回一个空数组)。

唯一的解决方法似乎是添加<key>UIBrowsableContentSupportsImmediatePlayback</key><true/>到您的Info.plist: Now Playing 得到正确显示,但它立即开始播放,这不是我想要的。

谁能提供一个可行的解决方案?

4

1 回答 1

1

在 iOS 14 之前的 CarPlay 上,我们在开始播放后设置正在播放的标识符(在我们的例子中只有一个,因为我们没有播放列表):

  • MPPlayableContentManager.shared().nowPlayingIdentifiers = ["Some Id"]
  • 此 id 应与MPContentItem启动播放的 id 相同(并且已isPlayable设置为true
于 2021-01-28T11:03:58.663 回答