I am planning to manufacture hardware device that would connect to iOS Devices through iOS Application using lightning port, Below would be the protocols back and forth:
- USB Audio for audio data transfer from hardware to iPhones which would be ISOCHRONOUS.
- USB HID/CDC for commands/requests from iPhone to hardware device.
I have been around the web for a long time and Here are the findings:
- I need to register for Apple MFi program to manufacture hardware device.
- I need to use ExternalAccessory framework to work with hardware within my application.
- I need to use Protocol String within
, same should be there in hardware.Info.plist
Now here are my questions for which I haven't find any clean answers yet:
- Do I need to register for MFi for testing purpose also? as I am having a sample hardware device which keep sending an audio tone isochronously. It is being detected in MacBook Pro and I am able to listen that tone using QuickTime Player. But It is not being detected in my Application using
. Also it is not showing in Apple's Official EADemo. I am using Lightning to USB Camera Adapter to connect the hardware to iPhone.[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]
- Do I need to have Protocol String in
for detection of device also, I am asking for only detection not communication?Info.plist
- My hardware device would not be having inbuilt battery and it would draw the battery from iPhones but it would require very small amount of power. Will it be OK for Apple to withdraw a small amount of power?
- Is it allowed from Apple to send ISOCHRONOUS audio buffer to iPhones from External Accessory? as it is restricted in Android.
- Is there a way to find the protocol string of any hardware device?