ios - 当应用程序处于后台时,核心蓝牙框架不会向 iOS 应用程序发送数据
问题描述
我已经构建了一个 iOS 应用程序,它使用蓝牙低功耗 (BLE) 与设备交换数据,这是一个核心蓝牙框架。
当应用程序处于后台时,即使设备已向 iPhone 发送数据,BLE 框架也不会将此数据发送到应用程序。
当应用程序进入前台时,它会接收应用程序在后台时发送的所有数据。这意味着 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。
解决方案
推荐阅读
- android - 当我使用自定义工具栏并使用材料库设置其主题时,文本视图和图像视图未显示在 android studio 布局中
- python - Prometheus 计数器未在自定义收集器中产生
- arrays - 如何渲染 React 组件的嵌套数组
- spring - 如何在后续调用中从 flatMap 返回 Mono 值
- c++ - 谁能帮我实现在 C++ 中使用 stl list 的程序
- regex - REGEXP_EXTRACT String 以 AG 或 TS 开头,然后捕获所有内容
- python - 如何确保所有用户和所有项目都出现在我的推荐系统的训练集中?
- webapi - 我正在寻找带有文本和音频的励志名言 API。有人可以建议免费使用的 Web API 吗?
- do-while - 每个do while循环都可以转换成for循环吗?
- android - 请求后台权限后,如何在 onRequestPermissionsResult 方法中查看 use 是否只接受了前台权限?