From what I’ve seen, there are a few ways for an iPhone to passively communicate with a BLE device when it comes in range:
- Use iBeacon
- Lower power, iOS takes care of the details including app being killed
- Can take a while to discover (up to 15 minutes)
- No way to transmit any data with the peripheral – from what I’ve heard on this list there is no way to make an iBeacon that is also discoverable/connectable via CoreBluetooth
- Example use case: indoor location or advertising beacons
- Use long-running connections
- Lower power, iOS takes care of the details including app being killed
- Need to discover the device first (unless there is a way to have all devices ‘pretend’ to be the same device?)
- From what I’ve heard, doesn’t work well with multiple devices.
- Example use case: a door lock or other single device you need to talk to
- Use long-running scans
- Higher power, iOS takes care of the details including app being killed
- Higher latency.
- Must scan for specific UDIDs but does work with multiple devices
- Canonical use case: Not sure. Has anyone used this approach?
- Have the iPhone act as a peripheral, always advertising.
- Lower power, iOS takes care of the details including app being killed
- Pretty fast, or at least as fast as you can afford to scan with your central
- iOS rotates UDIDs so you have to always scan versus reconnect
- This essentially off loads the power responsibility to the other side, which means your central is going to need a big battery or an intelligent way to limit scanning.
- Example use case: Knock uses this approach
Anyone care to expand on these strategies or maybe know of one I missed? I’m specifically interested in approaches that can passively (in the background) communicate with a large number of BLE 1st party peripherals (similar to iBeacon but with the ability to transmit data).
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Bluetooth-dev mailing list (
email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to
email@hidden