CarPlay - 在 iOS 13 中显示正在播放屏幕
CarPlay - Show Now Playing screen in iOS 13
我的应用程序已经是 phone 上的当前“正在播放的应用程序”(即所有必需的信息都已提供给 MPNowPlayingInfoCenter
)并且它在锁定屏幕中正确显示,带有艺术家姓名、曲目标题、艺术作品图片等
根据文档,填充 MPNowPlayingInfoCenter.default().nowPlayingInfo
并将正确的 target/actions 添加到 MPRemoteCommandCenter
应该足以 以确保您的应用当用户点击 Now Playing
图标时在 CarPlay 中调用。
在 iOS 14 我设法通过将 CPNowPlayingTemplate
压入堆栈来实现上述目标,这要归功于我发现的一些巧妙的技巧 in this article.
在 iOS 13 上,一切都基于可怕的 MPPlayableContentManager
API,并且 没有 CPTemplateApplicationSceneDelegate
方法被调用 audio-based 应用程序 我根本找不到检测 if/when 正在播放屏幕的方法。
MPNowPlayingInfoCenter
和 MPRemoteCommandCenter
已正确配置 - 如上所述 - 但在 iOS 13.[=24 上点击 CarPlay 中的“正在播放”图标时我的应用程序未被启动=]
我认为 this API 会帮助我,但我不知道如何(它总是 returns 一个空数组)。
唯一的解决方法似乎是将 <key>UIBrowsableContentSupportsImmediatePlayback</key><true/>
添加到您的 Info.plist
:正在播放可以正确显示,但它会立即开始播放,这不是我想要的。
谁能提供可行的解决方案?
在 iOS14 CarPlay 之前,我们在开始播放后设置正在播放的标识符(在我们的例子中只有一个,因为我们没有播放列表):
MPPlayableContentManager.shared().nowPlayingIdentifiers = ["Some Id"]
- 此 ID 应与启动播放的
MPContentItem
相同(并且 isPlayable
设置为 true
我的应用程序已经是 phone 上的当前“正在播放的应用程序”(即所有必需的信息都已提供给 MPNowPlayingInfoCenter
)并且它在锁定屏幕中正确显示,带有艺术家姓名、曲目标题、艺术作品图片等
根据文档,填充 MPNowPlayingInfoCenter.default().nowPlayingInfo
并将正确的 target/actions 添加到 MPRemoteCommandCenter
应该足以 以确保您的应用当用户点击 Now Playing
图标时在 CarPlay 中调用。
在 iOS 14 我设法通过将 CPNowPlayingTemplate
压入堆栈来实现上述目标,这要归功于我发现的一些巧妙的技巧 in this article.
在 iOS 13 上,一切都基于可怕的 MPPlayableContentManager
API,并且 没有 CPTemplateApplicationSceneDelegate
方法被调用 audio-based 应用程序 我根本找不到检测 if/when 正在播放屏幕的方法。
MPNowPlayingInfoCenter
和 MPRemoteCommandCenter
已正确配置 - 如上所述 - 但在 iOS 13.[=24 上点击 CarPlay 中的“正在播放”图标时我的应用程序未被启动=]
我认为 this API 会帮助我,但我不知道如何(它总是 returns 一个空数组)。
唯一的解决方法似乎是将 <key>UIBrowsableContentSupportsImmediatePlayback</key><true/>
添加到您的 Info.plist
:正在播放可以正确显示,但它会立即开始播放,这不是我想要的。
谁能提供可行的解决方案?
在 iOS14 CarPlay 之前,我们在开始播放后设置正在播放的标识符(在我们的例子中只有一个,因为我们没有播放列表):
MPPlayableContentManager.shared().nowPlayingIdentifiers = ["Some Id"]
- 此 ID 应与启动播放的
MPContentItem
相同(并且isPlayable
设置为true