My iOS app is communicating with a BTLE device through a proprietary SDK (i.e. non core bluetooth framework). The pairing also takes place through this SDK (PnP code). The SDK services has many non-standard Bluetooth services & characteristics.
As soon as the user switches to another app, i.e the main app is running in the background, I can't access the SDK services anymore. However, it is vital that I keep receiving data from the device, even when my app is running in the background.
As per my research, Apple only allows few Background Modes, listed here https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html (Search the page for "UIBackgroundModes"), e.g. audio, location,voip,fetch,remote-notification,newsstand-content,external-accessory,bluetooth-central,bluetooth-peripheral
As the SDK is using its own bluetooth framework and many non-standard Bluetooth Services, what option, if any, do I have to allow my app to keep hitting the services at continuous intervals even when the app is running in the background?
I was thinking about using a location service in background. there I have a doubt:
If Apple sees that Location service has little or no use within my app then they may reject it?
If my iPhone is on plan surface then Its not going to call didUpdateLocation method & in this case I am not able to communicate with SDK?
Please suggest, what is the best way to run my application in background so that I will not face any problem.