In Apple's documentation for Background Execution it is explained that 'Any app that supports the background processing of Bluetooth data must be session-based. ... Apps must provide an interface that allows the user to start and stop the delivery of Bluetooth events. That interface should then open or close the session as appropriate.'
Our iOS application acts as a CBPeripheralManager in communication with a CBCentralManager on OS X. We have problems preventing the app from becoming suspended and becoming unresponsive to communications from the Central Manager.
We are declaring UIBackgroundModes key with the bluetooth-peripheral value in the app’s Info.plist file, which should get iOS to allow us to operate in background with reduced limitations. While in background our app processes communications from the central and replies as expected for many hours, but eventually gets suspended.
The documentation implies we should be managing a session, perhaps in the way that NSURLSession manages a session, but there is no such thing as NSSession, nor CBSession, and I can find no other mention of Session in releationship to Core Bluetooth in the documentation.
Any ideas?