BLE 기기의 기기 이름을 변경해도 iOS에서 보이는 기기 이름이 변경되지 않음
BLE 기기의 디바이스명을 변경했는데, 변경전의 이름이 되어 있다
확실히 변경했을 것이라고 생각해, 자신의 iOS 앱을 의심한다.
그래서, 가지고 있던 BLExplr 로 스캔해 보았더니, 보이고 있던 정보가 엇갈리고 있는 것을 깨닫는다.
※이하 캡쳐 화상의 표시는 일부 마스크 하고 있습니다
iOS, 기기 정보 캐시
저것 이것 조사한 바, 데이터를 취하는 방법에 따라서는 iOS가 가지고 있는 캐시의 디바이스명을 꺼내 버리는 모양.
(BLE의 UUID와 끈을 붙이고 있는 것 같다?)
당초의 코드에서는 didDiscoverPeripheral에 건너온 CBPeripheral의 name을 참조했다.
- (void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
// キャッシュからデバイス名を取り出す場合がある
NSLog(@"Device name: %@", peripheral.name);
}
한 번 다시 연결 등으로 캐시를 다시 쓸 수도 있지만, 이대로는 BLE 기기의 디버깅이 번거롭기 때문에 다른 수단으로하고 싶은 곳.
대책
peripheral이 아니라 advertisementData의 kCBAdvDataLocalName에 들어있는 이름을 꺼내 사용한다.
이런 느낌.
- (void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
// キャッシュじゃないところからデバイス名を取り出し
NSLog(@"Device name: %@", advertisementData[@"kCBAdvDataLocalName"]);
}
생각한 것 등
저것 이것 조사한 바, 데이터를 취하는 방법에 따라서는 iOS가 가지고 있는 캐시의 디바이스명을 꺼내 버리는 모양.
(BLE의 UUID와 끈을 붙이고 있는 것 같다?)
당초의 코드에서는 didDiscoverPeripheral에 건너온 CBPeripheral의 name을 참조했다.
- (void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
// キャッシュからデバイス名を取り出す場合がある
NSLog(@"Device name: %@", peripheral.name);
}
한 번 다시 연결 등으로 캐시를 다시 쓸 수도 있지만, 이대로는 BLE 기기의 디버깅이 번거롭기 때문에 다른 수단으로하고 싶은 곳.
대책
peripheral이 아니라 advertisementData의 kCBAdvDataLocalName에 들어있는 이름을 꺼내 사용한다.
이런 느낌.
- (void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
// キャッシュじゃないところからデバイス名を取り出し
NSLog(@"Device name: %@", advertisementData[@"kCBAdvDataLocalName"]);
}
생각한 것 등
- (void) centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
// キャッシュじゃないところからデバイス名を取り出し
NSLog(@"Device name: %@", advertisementData[@"kCBAdvDataLocalName"]);
}
Reference
이 문제에 관하여(BLE 기기의 기기 이름을 변경해도 iOS에서 보이는 기기 이름이 변경되지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shuheni/items/42328ab2c68585de7f75텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)