我正在开发一个应用程序,其中 iOS 设备必须同时是外围设备和中心设备。当它发现外围设备时,有时它的名称是型号(例如 iPhone),而不是实际名称(例如我的 iPhone)。在这种情况下,UUID 在那里(通常是 (null)
当名称是实际名称时)。我已在 startAdvertising:
中正确设置名称,当发生这种情况时,advertisementData
如何确保真实姓名始终存在?
这就是我设置名称的方式:
[self.peripheralManager startAdvertising:@{ CBAdvertisementDataLocalNameKey : [[UIDevice currentDevice] name], CBAdvertisementDataServiceUUIDsKey : @[SERVICE_UUID] }];
最佳答案
除非正在转换广告的应用一直在前台显示,否则无法保证广告数据(您正在搜索的特定服务除外)可见。当应用程序移动到后台时,adv 数据被放入哈希中,以便在使用 corebluetooth 同时运行多个应用程序时获得与单个应用程序相同的体验(因为 iPhone 本身只能公布有限数量的数据)。但是,我注意到一旦在前台看到设备,如果应用程序移到后台,您仍然可以看到大部分广告数据。如果您有任何问题,请告诉我。
关于ios - 核心蓝牙的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999438/