내 CoreBluetooth 코드 중 일부를 iOS에서 OS X로 이식하려고합니다. 다음과 같이 공유되는 CoreBluetooth 래퍼 집합을 설정했습니다. iOS 앱과 OS X 앱 모두 동일한 BLE 장치를 사용하는 것과 똑같습니다. 주변CBPeripheral advertisingData OSX vs iOS (GAP/GATT)에서 주변 장치를 검색 할 때 다른 경우
검색 : 내 iOS 앱에
override init() {
super.init()
let queue = DispatchQueue.global(qos: .background)
centralManager = CBCentralManager(delegate: self, queue: queue)
}
func startScanning() {
let options: [String: Any] = [CBCentralManagerScanOptionAllowDuplicatesKey: true]
let deviceUUID = CBUUID(string: Project.Service.Device)
let recoveryUUID = CBUUID(string: Project.Service.DFURecovery)
centralManager?.scanForPeripherals(withServices: [deviceUUID, recoveryUUID], options: options)
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){
// Inspect advertisementData here to decipher what kind of device
}
는 didDiscoverPeripheral가 발생합니다. 나는 광고 데이터를 검사 할 때 그리고 내가 기대하고 모든 키/값을 얻을 :이 같은 코드는 OS의 X 응용 프로그램에서 (같은 장치에 대한 검사)를 실행하지만
{
kCBAdvDataIsConnectable = 1;
kCBAdvDataLocalName = "My Device";
kCBAdvDataManufacturerData = <34045254 5877f283 43fdd12d ff530978 45000000 000050c2 6500>;
kCBAdvDataServiceData = {
Battery = <64>;
};
kCBAdvDataServiceUUIDs = (
"My Inforamtion"
);
}
을, 광고 데이터입니다 일부 필드가 누락되었습니다.
{
kCBAdvDataIsConnectable = 1;
kCBAdvDataManufacturerData = <34045254 5877f36e 43fdd12d ff530978 45000000 000050c2 6500>;
}
다음 키/값 쌍이 advertisedData에서 누락되었습니다. 나는 scanForPeripherals에 그 열쇠를 추가하려고했습니다
kCBAdvDataLocalName
kCBAdvDataServiceData
kCBAdvDataServiceUUIDs
은과 같이 전화 :
let options: [String: Any] = [CBCentralManagerScanOptionAllowDuplicatesKey: true,
CBAdvertisementDataLocalNameKey: true,
CBAdvertisementDataServiceDataKey: true,
CBAdvertisementDataServiceUUIDsKey: true]
let deviceUUID = CBUUID(string: Nightlight.Service.Device)
let recoveryUUID = CBUUID(string: Nightlight.Service.DFURecovery)
centralManager?.scanForPeripherals(withServices: [deviceUUID, recoveryUUID], options: options)
을 전혀 효과.