所以我有外围BLE
设备,我需要一些标识符,以便以后与另一部分iPhone共享。示例I与iPhone
' A'到外围。 iPhone
' A'将外围设备的标识符保存到数据库中,以后我可以轻松地将iPhone
' B'并连接到此标识符找到的外围设备。
现在每个UUID
连接都有iPhone-peripheral
次更改,但MAC
Address
不可用。你有什么建议吗?
答案 0 :(得分:0)
我有类似的问题,许多线程如this表示你无法通过CoreBluetooth获取MAC地址。我想连接到BLE外围设备(我的意思是开放和可连接的外围设备)并在数据库上存储一些信息,以便不同的iPhone可以读取相同的数据库,并在连接到同一种BLE外设时使用这些信息。现在我依赖于设备名称,如下所示:
-(void)addDiscoveredDevice:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
NSString * name = [peripheral name];
}
因为NSString * uuid = [[peripheral identifier] UUIDString];
在不同的iOS设备上给出了不同的结果。
因此,假设我的第一个问题是要知道我的iPhone附近有多少Apple Watch,第二个问题是要知道给定的Apple Watch(例如John的Apple Watch)是否接近我的iPhone。不幸的是,这种方法不起作用,因为用户(例如John)或公司可以更改其外围设备的名称。
是的我可以依赖名称+服务uuid +特征uuid的组合,但出于同样的原因,如果名称更改它是无用的。 有没有人找到解决方案?
答案 1 :(得分:0)
如果您不自行制造外围设备,则无法在不同的iOS设备上唯一识别外围设备。这正是Apple想要的,因为这意味着开发人员无法根据设备地址跟踪用户的位置或移动模式。这将是一个隐私问题。
如果您自己制造外围设备,那么您可以随心所欲地做任何事情。例如:使用自定义服务uuid,将uuid添加到广告中的制造商数据,设置唯一的广告名称等等。但如果所有这一切的核心目的是跟踪您的用户,那么我猜猜Apple可能会否认您的提交。