如何在 CarPlay 模拟器上测试 iOS 应用程序

How to test an iOS application on the CarPlay simulator

我正在尝试开发与 CarPlay 兼容的 iOS 应用程序。

根据此 post Is iOS CarPlay API Public? How to Integrate CarPlay?,我必须注册 Apple 的 MFi 程序,但我注意到可以使用带有 Xcode 的 CarPlay 模拟器:启动模拟器,然后 硬件 -> 外部显示器 -> CarPlay(我使用 Xcode 8). 打开它后,您会看到 Message App 正在 CarPlay 模拟器中运行,所以我想有可能在这个模拟器中尝试自定义应用程序,而无需在 MFi 程序中注册。 我想知道是否有人尝试在 CarPlay 模拟器上启动应用程序,如果得到肯定的回答,他可以解释他是如何做到的。

我也看过 WWDC 2016(https://developer.apple.com/videos/play/wwdc2016/722/ 用 Safari 打开),它解释了 CarPlay 系统及其工作原理。在本演示文稿的最后,他们说您必须在 SupportExternalAccessoryProtocols 键中声明一个字符串协议名称(如 com.brand)在 Info.plist 文件中,但我不明白如何获取字符串协议名称。

我也没有找到任何关于模拟器以及如何开发与其兼容的应用程序的信息。

如果有人对此有所了解,那将是一个很大的帮助。

提前致谢。

您无需为模拟器中的 运行 基本 CarPlay 应用程序的 SupportExternalAccessoryProtocols 键添加任何内容。这是为了声明可能特定于一组特定主机的功能的协议。

您可能缺少的是可播放内容权利。如果您没有权利文件,则需要为您的应用程序创建它;-

然后为 com.apple.developer.playable-content 键添加一个布尔值 YES

这现在应该会在模拟器的 CarPlay 主屏幕上显示您的应用程序。正如您所提到的,您将无法 运行 在物理设备上使用该应用程序,除非您可以让 Apple 将该权利添加到您的帐户中

自 iOS 12 起,基于导航的应用程序现在有 com.apple.developer.carplay-maps 的权利,其工作方式与 com.apple.developer.playable-content 相同,因此您可以在模拟器中测试您的应用程序。您可能需要使用终端命令 defaults write com.apple.iphonesimulator CarPlay -bool YES 启用 CarPlay 模拟器才能显示它。