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

Unable to make Background API call in IOS at regular intervals to push data received in app from a BLE device

我有一个来自 Acaia(外围设备) 的体重秤,它在 5 points/sec 时发出体重数据。我使用 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

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

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