核心蓝牙的问题

时间:2013-08-01 16:21:21

标签: ios objective-c core-bluetooth

我正在创建一个应用程序,其中iOS设备必须同时是外围设备和中心设备。当它发现外围设备时,有时它的名称是模型(例如iPhone)而不是实际名称(例如我的iPhone)。在这种情况下,UUID就在那里(当名称是实际名称时,通常是(null))。我在startAdvertising:中正确设置了名称,当发生这种情况时,advertisementData

中的相应键未给出真实姓名

如何确保真实姓名始终存在?

这就是我设置名称的方式:

[self.peripheralManager startAdvertising:@{ CBAdvertisementDataLocalNameKey : [[UIDevice currentDevice] name], CBAdvertisementDataServiceUUIDsKey : @[SERVICE_UUID] }];

1 个答案:

答案 0 :(得分:2)

除非广告中的应用始终位于前台,否则无法保证广告数据(您正在搜索的特定服务除外)将可见。当应用程序移动到后台时,adv数据被放入哈希值,以便在使用corebluetooth同时运行多个应用程序与单个应用程序时具有相同的体验(因为iPhone本身只能通告有限数量的数据)。但是,我注意到一旦在前台看到设备,如果应用程序移动到后台,您仍然可以看到大部分的adv数据。如果您有疑问,请告诉我。