3

BLE セントラルとして動作する iOS アプリケーションを開発しています。
スキャン応答情報について質問があります。

私のアプリケーションはフォアグラウンドで動作し、scanForPeripheralsWithService:options() を 3 秒ごとに繰り返し実行しています。

[_centralMgr scanForPeripheralsWithServices:nil
                                        options:nil];

ほとんどの場合、didDiscoverPeripheral() が呼び出されると、アプリケーションは@"kCBAdvDataLocalName" キーを使用して周辺機器のlocalNameを取得できます。
(周辺機器は他社開発)

以下は、 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なしの 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. ローカル名のadvertisedataとperipheral.nameの違いは何ですか
4

0 に答える 0