ios - 无法定期在 IOS 中进行后台 API 调用以推送应用程序从 BLE 设备接收到的数据

标签 ios bluetooth-lowenergy background-process

我有一个来自 Acaia(Peripheral) 的体重秤,它以 5 点/秒的速度发出体重数据。我使用 Acaias iOS SDK 制作了一个可以连接到它以接收数据点的应用程序。

即使在background 状态下我也想保持连接,因此我在 Capabilities for Bluetooth 中启用了Background State 模式。现在应用程序使用 NSNotifications 继续接收数据。

Requirement and my work

I have to push this data to our servers for that I am storing the Data in an array and at every 10 seconds, I am making an API POST call to push the content available in array to our servers, and then I am resetting the array.

  1. 它在应用程序的前台状态下按预期工作。
  2. 当屏幕锁定或应用程序处于后台状态时,API 日志不规律,这意味着数据不会定期推送。
  3. 将应用程序从后台转到前台时,比方说 30 分钟后,应用程序卡住并且连接断开。

我已阅读 Apple 开发人员指南,其中说如果数据点不断出现,可以在后台永久保持与外围设备的连接。现在我如何确保我不会丢失那些权重数据?是否可以将所有这些推送到服务器中,也许是在批处理 API 调用中?

引用:

https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

https://acaia.co/blogs/news/new-ios-sdk-api-release

Sending BLE device data to server in background

最佳答案

在 IOS 中可以进行后台处理。但它应该只做它从暂停状态到后台状态的工作。 此外,我发现不断向 IOS 应用程序推送数据的 BLE 外围设备会阻止应用程序进入挂起状态,因此应用程序可能永远处于后台,除非 IOS 试图因内存和其他问题而终止它.

  1. 有一个选项可以让应用程序在后台状态下运行 能力部分。
  2. 还要确保处理正确的外设委托(delegate)方法。
  3. API 调用是分批进行的。我宁愿保存捕获的数据 在后台和应用程序进入时从本地存储中的 BLE 前台并连接到互联网,将为用户提供选项 推送到服务器。

关于ios - 无法定期在 IOS 中进行后台 API 调用以推送应用程序从 BLE 设备接收到的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56352855/

相关文章:

ios - 在屏幕锁定的情况下运行 TriggerIO iOS 应用程序?

ios - DZNEmptyDataSet 与 RxSwift 中的 tableview 绑定(bind)不兼容。有人能够使它工作吗?

ios - 通过委托(delegate)关闭其呈现的模态视图 Controller 后刷新 UIViewController 中的数据

ios - iOS 上的应用程序可以实现 BLE 设备信息服务中的固件版本字符串特征吗

java - 使用小米手环和 BLE 测量心率

ruby - Bash - 如何从后台 ruby​​ 脚本获取 STDOUT

mysql - 批量插入resque

ios - 如何从 WKWebView 完成加载获取标题

javascript - React Native 输入字段占位符在 iOS 中不起作用

android - 如何在 Android 中为 BLE 设备设置蜂鸣器