We are currently developing an application that runs in the background and continuously scans for other nearby devices via peer-to-peer networking. Generally, the high-level goals are:
- Scan for nearby devices while the app is in the background state. We only need to discover devices that are also running our app.
- Read a small token of data from each peer device found (no need for full-duplex connection)
- Submit this token to our server via a background network request
On Android we have demonstrated this functionality using both Bluetooth LE and WifiDirect service discovery, and background operation is easily achieved with Android services. We are currently trying to expand our application to support cross-platform compatibility between IOS and Android, including IOS<-->IOS and IOS<-->Android discovery (in the background). Is there a way to achieve this desired functionality on IOS?
On the other hand Bluetooth LE does indeed provide a solution for this. You would be able to scan for nearby advertising BLE accessories (including an app running on an iOS device) continuously whether your app is in the background or not running (except in cases like user killing the app or turning off Bluetooth).
You can read more about the details and implementation pointers at Core Bluetooth Background Processing for iOS Apps
Argun Tekant / DTS Engineer / Core Technologies