1

我使用 Swift / UIKit 开发了一个 iOS 广播音频应用程序,一切正常。

我想与 CarPlay 集成并获得所需的权利。

我相信我大部分都设置正确,因为我可以看到带有我的 CPListItems 的 CPListTemplate 并且在点击其中一个时,它会转到 CPNowPlayingTemplate 并且音频开始在模拟器中播放。

虽然一切似乎都运行良好,但是,有两个问题:

  1. 我似乎无法与 CPNowPlayingTemplate 播放/暂停按钮进行交互,我只是一直看到播放按钮,但点击它什么也没做

CarPlay 模拟器

添加此代码后,我可以在设备的锁定屏幕上和通过命令中心执行此操作:

func setupNowPlayingInfoCenter(){
    UIApplication.shared.beginReceivingRemoteControlEvents()
    MPRemoteCommandCenter.shared().playCommand.isEnabled = true
    MPRemoteCommandCenter.shared().playCommand.addTarget { [weak self] event in
      self?.reliableRadioPlayer?.play()
      return .success
    }
    
    MPRemoteCommandCenter.shared().pauseCommand.isEnabled = true
    MPRemoteCommandCenter.shared().pauseCommand.addTarget { [weak self] event in
      self?.reliableRadioPlayer?.pause()
      return .success
    }
  }
  1. 第二个问题再次出现在同一个屏幕上,我看不到任何元数据,例如艺术作品、歌曲名称和艺术家姓名 - 借助这些代码行,这些再次显示在设备的锁定屏幕和命令中心:
MPNowPlayingInfoCenter.default().nowPlayingInfo = 
[MPMediaItemPropertyTitle: currentlyPlaying.getSongName(),
MPMediaItemPropertyArtist: currentlyPlaying.getSongArtist(),
MPMediaItemPropertyArtwork: artwork]

我是否需要设置其他任何东西,或者这些仅仅是 CarPlay 模拟器的限制?

谢谢

4

1 回答 1

2

虽然我不认为这会是最佳答案,而且有人可能会想出更好的方法,但我认为这里有一些东西可以改进您测试 CarPlay 的方式并解释您可能面临的一些问题:

  1. 在启动 NowPlayingTemplate 之前添加这两行代码
#if targetEnvironment(simulator)
    UIApplication.shared.endReceivingRemoteControlEvents()
    UIApplication.shared.beginReceivingRemoteControlEvents()
#endif

我立即看到模拟器显示的元数据有一些改进 Swift CarPlay NowPlayingTemplate

  1. 玩家状态无法准确反映在模拟器上

当您在 CarPlay 模拟器上启动应用程序并显示正在播放的模板时,很可能您的音频正在播放,但播放器的状态将显示,如果您有一个,这将不会在您的 CPListTemplate 中准确显示 isPlaying 状态

Swift CarPlay NowPlayingTemplate 状态已停止 Swift CarPlay CPListTemplate CPListItem isPlaying false

这里没有什么可担心的,因为它在车上运行良好,但是,我建议只需单击播放按钮,这样您就可以在 NowPlayingTemplate 和 CPListTemplate 屏幕中看到活动状态以及动画条

Swift CarPlay NowPlayingTemplate 播放状态 Swift CarPlay CPListTemplate CPListItem isPlaying true

  1. 在真机上测试

虽然我认为我们大多数人不能仅仅为了测试 CarPlay 而购买汽车,但您可以考虑购买支持 CarPlay 的汽车音响,例如 Sony XAV-AX5500、Sony XAV-AX1005DB 或类似的低端产品

你不能用家里的插头正常给汽车音响供电,所以我建议你在网上播放一些视频来给它供电,但是,这是我发现使用笔记本电脑充电器最简单的一个——基本上我相信你需要 12V 或更高的电压

祝你好运

于 2021-06-11T07:51:09.907 回答