During the free fall the iphone is supposed to send acceleration values as 0 on all the three axis. So how to detect the distance covered by the iphone?
If your accelerometers are reporting zero, then you have the problem of determining when your motion has completed.
So determine the deceleration upon impact, then determine the maximum speed at the beginning of deceleration, then work backwards from this. Assuming linear movement, the absence of terminal velocity and air resistance, linear deceleration (perhaps), and that your phone still works!