ios – 核心蓝牙的问题

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

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

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

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

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

点赞