BLE device background (Implicit) sync issue

We have a BLE based peripheral device with which we can sync in two ways, explicit and implicit. The explicit method is quite straight forward, in the case of the our iOS app being in the foreground, but in our use case we also have an implicit method, where the iOS app in the background periodically checks if our device is in the ble range, connects to it and syncs the data.


We found one link on the forum which had a similar problem (link posted below), but the given solution suggested that the peripheral device should be the initiator of the transfer and should only advertise when it is ready to give data and the app should use the state preservation mechanism. In our case the peripheral device will be advertising at regular intervals so that the iOS app can sync with it whenever the user wants, so the solution given in the forum wont work for us.


THREAD we found: https://forums.developer.apple.com/thread/5789


What would be the proper mechanism for implementing the use case where the iOS app needs to periodically connect with the BLE device. There is another link on Stackoverflow which suggested to use the "setMinimumBackgroundFetchInterval" function. Even if that is not exactly periodic but it will still serve our purpose. Does Apple have any restrictions on way the BLE connection is established, in order for the app to be approved.?


Possibly relevant non-Apple Dev thread that doesn't quite solve the problem:

http://stackoverflow.com/questions/19694978/corebluetooth-in-background-at-scheduled-time


Thanks and Regards


Neil

BLE device background (Implicit) sync issue
 
 
Q