Как читать характеристики в фоновом режиме BLE с помощью CoreBluetooth - PullRequest
1 голос
/ 02 мая 2019

Я разрабатываю приложение, которое читает конкретные характеристики в фоновом режиме.Может ли это быть достигнуто в фоновом режиме с выбором фонового режима как "Uses Bluetooth LE Accessories" в списке.Есть ли вероятность отклонить приложение в фоновом режиме, если мы прочитаем определенные характеристики известного сервиса?Чтение характеристик должно происходить непрерывно.Если мы setNotify to "True" будем работать в фоновом режиме.Пожалуйста, предоставьте некоторые ценные предложения / обходные пути, если кто-нибудь знает об этом.Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 15 июня 2019

1) Этого можно достичь в фоновом режиме, выбрав в списке фоновый режим как "Использование Bluetooth LE Accessories".

Да, вы определенно можете прочитать характеристики вашего приложения, когда ваше приложениенаходится в фоновом режиме настройки фонового режима «Использование Bluetooth LE» на вкладке возможностей

2) Есть ли шансы отклонить приложение в фоновом режиме, если мы прочитаем определенные характеристики известного сервиса?

Если вашему приложению нужен фоновый режим и правильно объявите его на вкладке возможностей, приложение не будет отклонено

3) Считывание характеристик должно происходить непрерывно.Если для TrueNotify установлено значение «True», это будет работать в фоновом режиме

Чтобы получать уведомления каждый раз, когда характеристика вашего периферийного устройства меняет свое значение, вы можете правильно setNotify истинно по желаемой характеристике.Каждый раз, когда характеристика меняет свое значение, будет вызван обратный вызов периферийный (_: didUpdateStateFor: Error) , и вы сможете получить обновленное значение.При правильной настройке фонового режима этот обратный вызов будет запущен, даже если ваше приложение работает в фоновом режиме, а ваш телефон заблокирован.

0 голосов
/ 02 мая 2019

функциональное периферийное устройство (_ периферийное устройство: CBPeripheral, didUpdateValueДля характеристики: CBCharacteristic, error: Error?) {

    print("characteristic: ", characteristic)

    guard let string = String(bytes: characteristic.value!, encoding: .utf8) else {
        return
    }


}
0 голосов
/ 02 мая 2019
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService,
                    error: Error?) {
        guard let characteristics = service.characteristics else { return }

        for characteristic in characteristics {
            print(characteristic)
            if characteristic.properties.contains(.read) {
                print("\(characteristic.uuid): properties contains .read")

                peripheral.readValue(for: characteristic)
            }
            if characteristic.properties.contains(.notify) {
                print("\(characteristic.uuid): properties contains .notify")

            }
        }
    }
...