Talking to hardware with iOS is actually a lot more difficult than you might expect. I needed to simply pull some data from a connected device. My expectation was that it would be a simple IO that I could probably parse pretty easily. Turns out that Apple has locked down the device ports and without jailbreaking you can only talk to a device with a whitelisted VID/PID.
Talk to a bluetooth device with iOS
It is actually quite easy to talk to a device over bluetooth as outlined in this excellent tutorial. I was up and running with my arduino in no time with this method. However, you don’t always have the luxury of choosing this option. If you have to instead talk over a physical connection, continue reading.
Talk to a device over usb or serial
USB sucks for iOS. Give up now, because Apple is really strict on approving USB interfaces. You will need a product plan and months of waiting Apple to approve your device if you absolutely must interface over USB. Believe it or not, it is actually much easier to work with serial. I had a great chat with Mike at RedPark and learned a lot about Apple’s approval of interfaces. RedPark makes a great Serial Adapter that will also power the device while communicating. They also have a stellar SDK for talking over serial. Mind you, this is only acceptable for privately distributed apps and you will have to submit a product plan still for a public app.