I've a WiFi OBD Reader and use the DashCmd application regularly. It can read only what the car supplies, but I've used it to clear codes in my car and in a friend's E46 M3.

EDIT: Just tried the lite version of the BMWhat app and whilst it connected fine, I got the following warning when using the PLX Kiwi WiFi 2 dongle:

"For the connected BMW you may inspect the codings. However the WIFI communication quality required to write the codings into the ECUs is not sufficient for this vehicle. Unfortunately, coding can therefore not be provided via WIFI. You may code this car only via USB-OBD cable which is unfortunately not available on iPhone (but on Android)"