我正在开发作为 BLE 中心的 iOS 应用程序。
我对扫描响应信息有疑问。
我的应用程序在前台工作并每 3 秒重复执行一次 scanForPeripheralsWithService:options() 。
[_centralMgr scanForPeripheralsWithServices:nil
options:nil];
在几乎所有情况下,当 didDiscoverPeripheral() 被调用时,我的应用程序可以使用键 @"kCBAdvDataLocalName" 获取外围设备的本地名称。
(外围设备由其他厂商开发)
下面是带有localName的 didDiscoverPeripheral() 的 NSLog 输出。
[MyApp] <Warning>: (-[MyBleCentralMgr centralManager:didDiscoverPeripheral:advertisementData:RSSI:])
[name:DeviceName], [state:0], [identifier:240FF7D3-45D5-C4EE-2E96-BED578225C56]
[MyApp] <Warning>: (-[MyBleCentralMgr centralManager:didDiscoverPeripheral:advertisementData:RSSI:]) RSSI=-63, advertisementData={
kCBAdvDataChannel = 39;
kCBAdvDataIsConnectable = 1;
kCBAdvDataLocalName = "DeviceName";
kCBAdvDataManufacturerData = <[manufactorer data of peripheral device]>;
}
但有时(在极少数情况下),扫描响应没有localName。
(但它在 [peripheral.name] 中有另一个名称)
下面是没有localName e的 didDiscoverPeripheral() 的 NSLog 。
[MyApp] <Warning>: (-[MyBleCentralMgr centralManager:didDiscoverPeripheral:advertisementData:RSSI:])
[name:DeviceName], [state:0], [identifier:240FF7D3-45D5-C4EE-2E96-BED578225C56]
[MyApp] <Warning>: (-[MyBleCentralMgr centralManager:didDiscoverPeripheral:advertisementData:RSSI:]) RSSI=-63, advertisementData={
kCBAdvDataChannel = 39;
kCBAdvDataIsConnectable = 1;
kCBAdvDataManufacturerData = <[manufactorer data of peripheral device]>;
}
外围设备工程师说“我总是在扫描响应中 包含localName ”。
如果有人有关于我的问题的信息,请告诉我。
- 这种现象可能吗?(localName从扫描响应中消失)
- localName 广告数据和 peripheral.name 有什么区别