BLE Периферийные Не Реклама - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь создать простое периферийное устройство Bluetooth LE для подключения к ранее существовавшему центральному устройству.Из того, что я могу сказать, мой Периферийный менеджер настроен правильно, и звонок для начала рекламы на месте с правильным UUID службы.Однако, когда я запускаю проверку, чтобы убедиться, что мое периферийное устройство действительно рекламирует, я получаю отрицательный результат

Я дважды проверил свой UUID и убедился, что Bluetooth на моем тестовом устройстве включен.Я также использую физическое устройство для тестирования, а не симулятор.

Вот код, используемый для настройки моей периферийной рекламы:

func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
    if peripheral.state == CBManagerState.poweredOn {
        service = CBMutableService.init(type: SERVICE_UUID, primary: true)

        characteristic = CBMutableCharacteristic.init(type: CHARACTERISTIC_UUID, properties: .read, value: nil, permissions: .readable)
        service?.characteristics = [characteristic!]

        peripheralManager?.add(service!)
        peripheralManager?.delegate = self

        let adData = [CBAdvertisementDataLocalNameKey : "MackJohn_Bluetooth_On_iOS", CBAdvertisementDataServiceUUIDsKey : SERVICE_UUID] as [String : Any]

        peripheralManager?.startAdvertising(adData)
    }
}

Здесь я проверяю, чтобы увидетьесли мой код действительно рекламный и дает ложный результат:

func peripheralManagerDidStartAdvertising(_ peripheral: CBPeripheralManager, error: Error?) {
    print(peripheral.isAdvertising)
}

Я также заметил, что эта функция вообще не вызывается:

func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
    print("Added Service")
}

1 Ответ

0 голосов
/ 08 февраля 2019

Вы допустили одну небольшую ошибку;значение для CBAdvertisementDataServiceUUIDsKey должно быть массивом из CBUUID с, а не одним CBUUID;

let adData = [CBAdvertisementDataLocalNameKey : "MackJohn_Bluetooth_On_iOS", CBAdvertisementDataServiceUUIDsKey : [SERVICE_UUID]] as [String : Any]
...