As i'm sure you know,More than 20 bytes sent to ble_write() require a call to ble_do_events() to flush the buffer.
Requests like analog mapping, capability query, etc, are all greater and error when hooked up to a proper ios firmata implementation like I've been working on:
https://github.com/jacobrosenthal/iosFirmata
I've forked firmata fresh firmata standard from Firmata and created a redbear branch for now with a hacked implementation Im not entirely happy with, but so far is working for me
https://github.com/jacobrosenthal/arduino/tree/redbear-ble