According to my tests, yes.
When a disconnection occurs due of device out of range, then you get back to range, eventually, iOS will connect again (emphasising the 'eventually' term).
I've made some tests for this particular scenario - I created a disconnection (by walking away from the device until I've got the disconnection event), then came back to range.
the results are:
out of around 50 test, the device was re-connected to the iPhone at 100% of the times. The issue here was how long did it take it to reconnect.
- Worst case: 125 seconds.
- Best case: 9 seconds.
- Average: 43 seconds.
(I tested it in a few disconnection modes, sometimes for a minute, sometime for a few hours.. but it was always re-connected eventually).
Another thing I tested and looks interesting is connect to device without scanning.
It's not as weird as it sounds:
- After your initial scan, you find your peripheral and hold reference to it.
From now on, you can actually connect to it even without scanning, just by using the 'connectPeriphral' function of the central.
So maybe If your app is in the background, you can start a background task (you have 10 minutes for that) using 'beginBackgroundTaskWithExpirationHandler'
and there you can run a timer that tries to connect to your peripheral every interval (5 seconds lets say).
But it's kind of a long shot, I've never tested it throughly.
Good luck,
Please update with the results.