Я создал приложение для iOS, которое обменивается данными с устройством с использованием Bluetooth Low Energy (BLE), который является базовой платформой Bluetooth.
Когда приложение работает в фоновом режиме, даже если устройство отправило данные на iPhone, платформа BLE не отправляет эти данные в приложение.
Когда приложение выходит на передний план, оно получает все данные, которые были отправлены, когда приложение находилось в фоновом режиме. Это означает, что слой Bluetooth iPhone получил данные, но он просто сохранил данные и доставил их в приложение, когда приложение вышло на передний план.
Это не всегда проблема. Это происходит в случайном порядке.
// application went to background
2019/04/13 11:54:38:174 BLEManager# applicationDidEnterBackground
2019/04/13 11:54:38:176 BLEBackgroundTaskManager# applicationDidEnterBackground
// application receives data when it comes to foreground although this data was sent from device at 11:54:40:256
2019/04/13 12:39:36:149 CentralManager# Value received is <02>
Ожидаемый результат: didUpdateValueForCharacteristic
будет вызываться при получении данных, но когда приложение работает в фоновом режиме, этот API не вызывается. Этот API вызывается, когда приложение выходит на передний план.