iOS CoreBluetooth scanForPeripherals, кажется, получает меньше пакетов, чем аналог Android - PullRequest
0 голосов
/ 28 января 2019

Моя команда разрабатывает приложение, использующее BLE для iOS / Android, и я отвечаю за приложение для iOS.Приложению необходимо максимально точно отслеживать временную дисперсию полученного RSSI, поэтому я выполняю сканирование BLE методом CBCentralManager scanForPeripherals.

Результат не совсем плохой, поскольку он получаеттранслировать пакеты на определенной частоте.Но количество полученных пакетов явно меньше, чем в Android.

Ниже приведен код iOS для сканирования периферийных устройств.Нет ничего особенного, кроме указания идентификатора службы Eddystone.

private func startScanningSynchronized() {
    let services = [CBUUID(string: "FEAA")] // Scan for Eddystone beacon
    let options = [CBCentralManagerScanOptionAllowDuplicatesKey : true]
    self.centralManager.scanForPeripherals(withServices: services, options: options)
}

И делегата для получения пакета.Функция для определения типа фрейма помещена в черный ящик в приведенном ниже коде, но я уверен, что из-за него не исчезнет ни один пакет.Приложение отправило более 1000 пакетов за 5 минут, что кажется разумным, поскольку оно получает около 1 из 3 пакетов от маяка.С другой стороны, версия iOS получает только 100 ~ 200 пакетов за 5 минут.

Это ограничение устройства iOS?Или есть какие-либо настройки для настройки интервала сканирования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...