如何解决使用模拟器测试 CarPlay 音频
我使用 Swift / UIKit 开发了一个 iOS 收音机音频应用,一切正常。
我想与 CarPlay 集成并获得所需的权利。
我相信我已经大部分设置正确,因为我可以看到带有我的 CPListItems 的 CPListTemplate,并且在点击其中一个时,它会转到 CPNowPlayingTemplate 并且音频开始在模拟器中播放。
虽然一切似乎都运行良好,但是有两个问题:
- 我似乎无法与 CPNowPlayingTemplate 播放/暂停按钮交互,我只是一直看到播放按钮,但点击它什么也不做
添加此代码后,我可以在设备的锁定屏幕上和通过命令中心执行此操作:
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
}
}
MPNowPlayingInfoCenter.default().NowPlayingInfo =
[MPMediaItemPropertyTitle: currentlyPlaying.getSongName(),MPMediaItemPropertyArtist: currentlyPlaying.getSongArtist(),MPMediaItemPropertyArtwork: artwork]
我是否需要设置其他任何东西,或者这些只是 CarPlay 模拟器的限制?
谢谢
解决方法
虽然我认为这不是最佳答案,而且有人可能会提出更好的答案,但我相信以下几点可以改善您测试 CarPlay 的方式并解释您可能面临的一些问题:
- 在启动 NowPlayingTemplate 之前添加这两行代码
#if targetEnvironment(simulator)
UIApplication.shared.endReceivingRemoteControlEvents()
UIApplication.shared.beginReceivingRemoteControlEvents()
#endif
- 玩家状态没有准确反映在模拟器上
当您在 CarPlay 模拟器上启动应用程序并显示正在播放的模板时,很可能您的音频正在播放,但播放器的状态将显示,如果你有一个
这里没有什么可担心的,因为它在汽车中运行良好,但是,我建议您只需单击播放按钮,即可在 NowPlayingTemplate 和 CPListTemplate 屏幕中看到活动状态,并带有动画条
- 在真实设备上测试
虽然我认为我们大多数人不会为了测试 CarPlay 而购买汽车,但您可以考虑购买支持 CarPlay 的汽车音响,例如 Sony XAV-AX5500、Sony XAV-AX1005DB 或其他东西lower end like this
您无法在家中使用插头正常为汽车音响供电,因此我建议您在 YouTube 上播放一些视频来为其供电,但是,this was the easiest one I found using a laptop charger - 基本上我认为您需要 12V 或更高电压的电源
祝你好运
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。