2015-12-30 122 views
5

所以我有外围设备BLE设备,我需要一些标识符,以便以后与其他iPhone共享。示例I与iPhone'A'连接到外设。 iPhone'A'将外设的标识符保存到数据库,稍后我可以轻松地将iPhone'B'连接到由此标识符找到的外设。外围BLE设备的唯一标识

现在有UUID每个iPhone-peripheral连接有什么变化,但MAC Address不可用。你能提出什么建议?

+0

是的,这是我在使用iOS 9.0时遇到的一个问题。在iOS 8.0之前,所有设备上的标识符都保持相同。仍在寻找答案。 –

+0

您是否使用EAAccessoryManager来查找外设?如果你确实检查了所有的EAAccessory属性,如果你可以使用其中的一个属性。 (modelNumber,serialNumber,name ....) – LoVo

+0

除非您的外设通过GATT属性提供某种唯一标识符我不认为有任何解决方案 – Paulw11

回答

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设备不同的结果。

因此,假设我的第一个问题是要知道有多少Apple Watch与我的iPhone靠得很近,第二个问题是要知道给定Apple Watch(例如John的Apple Watch)是否与我的iPhone接近。不幸的是,这种方法不起作用,因为用户(例如约翰)或公司可以改变他们的外围设备的名称。

是的我可以依靠名称+服务uuid​​ +特性uuid的组合,但出于同样的原因,如果名称更改它是无用的。 有没有人找到解决方案?

0

如果您不自己制造外围设备,那么您无法在不同的iOS设备上唯一标识外围设备。这正是苹果公司所希望的,因为这意味着开发人员无法根据设备地址来跟踪用户的位置或移动模式。这将是一个隐私问题。

如果你自己制造外设,那么你可以做任何你想做的事情。例如:使用一个自定义的服务uuid​​,将uuid添加到广告中的制造商数据,设置唯一的广告名称等等。但是,如果所有这些的核心目的是跟踪您的用户,那么我猜测苹果可能会拒绝您的提交。