我有一个来自 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.
- 它在应用程序的前台状态下按预期工作。
- 当屏幕锁定或应用程序处于后台状态时,API 日志不规律,这意味着数据不会定期推送。
- 将应用程序从后台转到前台时,比方说 30 分钟后,应用程序卡住并且连接断开。
我已阅读 Apple 开发人员指南,其中说如果数据点不断出现,可以在后台永久保持与外围设备的连接。现在我如何确保我不会丢失那些权重数据?是否可以将所有这些推送到服务器中,也许是在批处理 API 调用中?
引用:
最佳答案
在 IOS 中可以进行后台处理。但它应该只做它从暂停状态到后台状态的工作。 此外,我发现不断向 IOS 应用程序推送数据的 BLE 外围设备会阻止应用程序进入挂起状态,因此应用程序可能永远处于后台,除非 IOS 试图因内存和其他问题而终止它.
- 有一个选项可以让应用程序在后台状态下运行 能力部分。
- 还要确保处理正确的外设委托(delegate)方法。
- API 调用是分批进行的。我宁愿保存捕获的数据 在后台和应用程序进入时从本地存储中的 BLE 前台并连接到互联网,将为用户提供选项 推送到服务器。
关于ios - 无法定期在 IOS 中进行后台 API 调用以推送应用程序从 BLE 设备接收到的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56352855/