名前が変えられたBluetoothデバイスを検出したい


Bluetooth LEなデバイスのローカルネームを変更して、その後に再び  
CBCentralManager scanForPeripheralsWithServices:options: と  
CBCentralManagerDelegate
centralManager:didDiscoverPeripheral:advertisementData:RSSI:  
を使って検索すると、見つかったデバイスの名前が変更前のままになっています。

iOS 8で、変更後の名前を取得する方法はありますか?




デバイスが見つかったときに呼ばれるメソッド、

[code]

    - (void)centralManager:(CBCentralManager *)central
     didDiscoverPeripheral:(CBPeripheral *)peripheral
         advertisementData:(NSDictionary *)advertisementData
                      RSSI:(NSNumber *)RSSI
    
[/code]

の peripheral.name にはOSがキャッシュしている名前が入っているようですが、  
`advertisementData[@"kCBAdvDataLocalName"]`にはアドバタイズパケットの  
ローカルネームが入っているようです。

ちなみに、接続に成功するとperipheral.nameは変更後の名前に更新されるようです。




デバイスが見つかったときに呼ばれるメソッド、

[code]

    - (void)centralManager:(CBCentralManager *)central
     didDiscoverPeripheral:(CBPeripheral *)peripheral
         advertisementData:(NSDictionary *)advertisementData
                      RSSI:(NSNumber *)RSSI
    
[/code]

の peripheral.name にはOSがキャッシュしている名前が入っているようですが、  
`advertisementData[@"kCBAdvDataLocalName"]`にはアドバタイズパケットの  
ローカルネームが入っているようです。

ちなみに、接続に成功するとperipheral.nameは変更後の名前に更新されるようです。

