Search code examples
iosswiftbluetoothcore-bluetooth

CoreBluetooth: How to Identify bluetooth devices like BlueScope app?


In my centralManager, how can I go about identifying bluetooth devices like this Bluescope app.

https://apps.apple.com/us/app/bluescope/id1530096924

I see the Bluetooth spec has a device info service defined, but it only covers vendor / manufacturer info.

org.bluetooth.service.device_information "0x180A"

I couldn't find any related info or APIs in CoreBluetooth programming guide and Apple developer forums.

Any ideas how can I get the device information?


Solution

  • I strongly suspect that they've compiled a large database to identify popular products. Much of what's displayed on that screen is not trivially available in a uniform way. In particular, note the icons (and especially the AppleTV icon). There's nothing in the common BLE services that will return a display icon for the device. They have some lookup table, and a bunch of icons of their own.

    Also, strings like "MacBook Pro 13-inch 2020" are generally not advertised. Instead you get an identifier like "MacBookPro11,5" and you need a table to work out what that means. (Here's another example table for MacBooks.)

    I suggest trying nRF Connect to see what the raw data looks like.