如何通过CarPlay音频应用程序中的实时URL集成音频



我想有音频集成到carplay应用程序。我已经用CPListItems创建了一个CPListTemplate,点击它,我正在推送一个正在播放的模板。音频似乎不播放,我无法与正在播放的屏幕交互。

问题:

  1. 我如何将音频URl传递给现在正在播放的模板,以便它至少可以播放声音?
  2. 如何与播放器交互并在屏幕上显示专辑插图和文本?

注意:我正在模拟器上测试这个,我有mp3格式的音频URL。

var listItems: [CPListItem] = []
for playListItem in PlayListItems {
let item = CPListItem(text: playListItem.title, detailText: "")
item.handler = {listItem, completion in 
let nowPlayingTemplate = CPNowPlayingTemplate.shared
nowPlayingTemplate.add(self)
nowPlayingTemplate.isAlbumArtistButtonEnabled = true
self.interfaceController?.pushTemplate(nowPlayingTemplate, animated: true)
}
listItems.append(item)
}
let sectionPlayList = CPListSection(items: listItems)
self.interfaceController?.pushTemplate(CPListTemplate(title: “Tab 1”, sections: [sectionPlayList]), animated: true)   
  1. 我如何将音频URl传递给现在正在播放的模板,以便它至少可以播放声音?

没有办法在正在播放的模板中传递url。使用AVPlayer播放音频url。在项目处理程序上添加setPlayer()方法,并传递您的音频url来代替"stationurl"。

var player = AVPlayer()
func setPlayer() {
let playerItem = AVPlayerItem(url: URL(string: stationUrl)!)
player = AVPlayer(playerItem: playerItem)
player.rate = 1.0
player.play()
self.setPlayerNowPlayingInformation()
}
  1. 我如何与播放器交互并在屏幕上显示专辑插图和文本?

在MPNowPlayingInfoCenter中显示当前播放模板中的专辑图版图像和文本。

func setPlayerNowPlayingInformation() {
var nowPlayingInfo: [String: Any] = [:]

nowPlayingInfo = [MPMediaItemPropertyTitle: "Media Title"]

if let image = UIImage (named: "carplay_app_icon") {
nowPlayingInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(boundsSize: image.size, requestHandler: { size -> UIImage in
return image
})
}          
MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
}

最新更新