I use PLX Devices Kiwi, which is a wifi solution. It plugs into the OBD II port and and creates a wifi signal that you connect with the phone.
You have to connect manually each time, it's a bit cumbersome. I would recommend any of the Bluetooth solutions instead over the manual wifi options for that reason.
The app I use is FuzzyCar, it has a lot of great features without the price of the other apps (some are $50 plus!). FuzzyCar will not only show you the code, but also the definition, and allow you to turn off the Check Engine Light.
Hope this helps.