iosios-simulatormfiwwdccarplay

How to test an iOS application on the CarPlay simulator


I am trying to develop an iOS application compatible with CarPlay.

According to this post Is iOS CarPlay API Public? How to Integrate CarPlay?, I have to be enrolled with Apple’s MFi program, but I have noticed that there’s the possibility to use a CarPlay simulator with Xcode: launch the Simulator, then Hardware -> External Displays -> CarPlay (I use Xcode 8). Once you have opened it, you see that the Message App is working in the CarPlay simulator so I imagine that there is the possibility to try custom application in this simulator without being enrolled in the MFi program. I wonder if anyone has tried to launch an application on the CarPlay simulator and, in case of positive answer, he can explain how he did.

I have also watched the WWDC 2016 (https://developer.apple.com/videos/play/wwdc2016/722/ open it with Safari) that explains the CarPlay system and how it works. At the end of this presentation, they say that you have to declare a string protocol name (like com.brand) in the SupportExternalAccessoryProtocols key in the Info.plist file, but I don't understand how to get the string protocol name.

I also don’t find any information about the simulator and how to develop application compatible with it.

If someone knew something concerning it, it would be a great help.

Thanks in advance.


Solution

  • You don't need to add anything for the SupportExternalAccessoryProtocols key to run a basic CarPlay app in the simulator. This is for declaring protocols for functionality that might be specific to a particular set of head units.

    What you are probably missing is the playable content entitlement. If you don't have an entitlements file, you'll need to create it for your app;-

    xcode navigator

    Then add a boolean value of YES for the com.apple.developer.playable-content key

    entitlements file

    This should now show your app on the CarPlay home screen in the simulator. As you allude, you won't be able to run that app on a physical device unless you can get Apple to add that entitlement to your account