核心蓝牙存在的问题

4
我正在开发一款应用程序,其中一个iOS设备需要同时作为外围设备和中心设备。当它发现一个外围设备时,有时设备名称是模型(例如iPhone),而不是实际名称(例如我的iPhone)。在这种情况下,UUID通常会出现在那里(当名称是实际名称时,通常是(null))。我已经在startAdvertising:中正确设置了名称,但当发生这种情况时,advertisementData中相应的键不提供真正的名称。
如何确保始终有真正的名称?
以下是我设置名称的方式:
[self.peripheralManager startAdvertising:@{ CBAdvertisementDataLocalNameKey : [[UIDevice currentDevice] name], CBAdvertisementDataServiceUUIDsKey : @[SERVICE_UUID] }];
1个回答

2

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


你是否已经在广告字典中正确设置了CBAdvertisementDataLocalNameKey键? - Tommy Devoy
我正在正确地设置它。 - Macro206
1
哈哈,你看吧。这确实有所不同。 - Tommy Devoy
1
我指的是CBAdvertisementDataLocalNameKey键。 - Tommy Devoy
1
哦,是的。我肯定设置了! - Macro206
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接