3

我正在开发作为 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 ”。

如果有人有关于我的问题的信息,请告诉我。

  1. 这种现象可能吗?(localName从扫描响应中消失)
  2. localName 广告数据和 peripheral.name 有什么区别
4

0 回答 0