在iOS和Android上查找蓝牙外设的共享标识符

时间:2017-09-21 20:31:17

标签: android ios bluetooth

我最近在iOS和Android上开发处理蓝牙BLE设备的原生应用。

对于iOS,我使用 CoreBluetooth 和Android BluetoothDevice

找到BLE设备后,可以使用MAC地址在Android上识别,使用设备的UUID在iOS上识别。

为同一设备返回的示例包如下:

的iOS

    CBPeripheral: 0x1700ff880, 
    identifier = A3D26155-414C-4940-8EB9-C754AD202B64, //UUID
    name = DEVICE01,
    state = disconnected

的Android

    mDevice=00:18:31:84:37:E5, //MAC ADDRESS
    mScanRecord=ScanRecord [mAdvertiseFlags=6,
    mServiceUuids=[0000fff0-0000-1000-8000-00805f9b34fb],
    mManufacturerSpecificData={}, mServiceData={},
    mTxPowerLevel=-2147483648, mDeviceName=DEVICE01],
    mRssi=-58,
    mTimestampNanos=5196365700642

问题在于我无法识别两个平台之间的相同设备,因为在iOS中,标识符是UUID,而在Android中,标识符是MAC地址。

我一直在研究如何访问iOS上的MAC ADDRESS并说它不允许出现安全问题,而Android上的UUID没有类似于iOS的值。

是否有可能在两个平台之间访问某些公共数据?

注意:很明显,设备名称在所有设备上重复,而不是用作标识符的变量。

2 个答案:

答案 0 :(得分:1)

没有。您需要让外围设备通告除蓝牙设备地址之外的一些自定义唯一标识符。

例如,您可以使每个设备具有唯一名称,或使用服务数据或制造商特定数据字段。

答案 1 :(得分:0)

在iOS中将UUID分配给外围设备,因此不同的iOS设备会为外设分配不同的UUID。我们无法在iOS中更改UUID。 Android和iOS中没有任何数据相同用于识别。 尝试RSSI范围。我认为两个设备都获得了外设的相同范围(RSSI)值。