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

12
我正在尝试开发一款与CarPlay兼容的iOS应用程序。
根据这篇帖子(iOS CarPlay API是否公共?如何集成CarPlay?),我必须注册Apple的MFi计划,但我注意到有可能使用CarPlay模拟器与Xcode配合使用:启动模拟器,然后选择 硬件 -> 外部显示器 -> CarPlay(我使用Xcode 8)。 打开后,您会看到消息应用程序在CarPlay模拟器中工作,因此我想在未注册MFi计划的情况下尝试在此模拟器中编写自定义应用程序。 我想知道是否有人尝试在CarPlay模拟器上启动应用程序,如果是,请问他可以解释如何做到。
我还观看了WWDC 2016 (https://developer.apple.com/videos/play/wwdc2016/722/),其中解释了CarPlay系统及其工作原理。在这个演示的结尾处,他们说您必须在Info.plist文件的SupportExternalAccessoryProtocols键中声明一个字符串协议名称(例如com.brand),但我不知道如何获取字符串协议名称。
我也没有找到有关模拟器及如何开发与其兼容的应用程序的任何信息。
如果有人知道相关信息,那将是一个很大的帮助。
提前致谢。
2个回答

17

在模拟器中运行基本的CarPlay应用程序,您不需要添加任何内容到SupportExternalAccessoryProtocols键。这是为了声明特定于特定头单元组的功能而指定协议。

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

xcode navigator

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

entitlements file

现在应该可以在模拟器的CarPlay主屏幕上显示您的应用程序。正如您所暗示的那样,除非您能够让苹果在您的帐户中添加该授权,否则您将无法在物理设备上运行该应用程序。


我也发现,如果我想开发一个与CarPlay兼容的音频应用程序,我必须使用一些“特殊”的类,比如这个链接,并且指定了“没有正确授权的应用程序将不会出现在CarPlay主屏幕上。” - F. DePa
密钥应该放在entitlements文件中,而不是Info.plist中。这对我上周起作用。 - deftangel
2
不幸的是,这就是我在答案的最后一段所提到的问题。除非Apple授予您可播放内容资格证书,以便在开发者账户中使用配套文件,否则您将无法对包含该资格认证的应用程序构建进行签名或在设备上运行。与您可能添加到应用程序ID的许多其他功能(如推送通知、iCloud等)不同,您不能自己添加此功能,必须通过向MFi计划申请获得Apple的批准。 - deftangel
1
谢谢你的帮助 :) 如果你想开发一些与CarPlay兼容的音频应用程序,这是一个可能有用的链接 [link] (https://www.slideshare.net/yuujihato/carplay) - F. DePa
我选择了你答案附近的向上箭头,这样对吗?我是 Stack Overflow 的新手。 - F. DePa
显示剩余6条评论

9

自iOS 12起,导航类应用程序现在具有名为com.apple.developer.carplay-maps的权限,它与com.apple.developer.playable-content相同,因此您可以在模拟器中测试您的应用。您可能需要使用终端命令defaults write com.apple.iphonesimulator CarPlay -bool YES启用CarPlay模拟器并使其显示出来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接