无法定期在 IOS 中进行后台 API 调用以推送应用程序中从 BLE 设备接收的数据
Posted
技术标签:
【中文标题】无法定期在 IOS 中进行后台 API 调用以推送应用程序中从 BLE 设备接收的数据【英文标题】:Unable to make Background API call in IOS at regular intervals to push data received in app from a BLE device 【发布时间】:2019-05-29 03:50:01 【问题描述】:我有一个来自 Acaia(Peripheral) 的体重秤,它以 5 磅/秒的速度发出体重数据。我使用 Acaias ios SDK 制作了一个可以连接到它以接收数据点的应用程序。
我希望即使在 后台 状态下也能建立连接,因此我在蓝牙功能中启用了后台状态模式。现在,该应用继续使用 NSNotifications 接收数据。
需求和我的工作
我必须将此数据推送到我们的服务器,因为我正在存储数据 在一个数组中,每 10 秒,我进行一次 API POST 调用 将数组中可用的内容推送到我们的服务器,然后我 重置数组。
-
它在应用程序的前台状态下按预期工作。
当屏幕被锁定或应用程序处于后台状态时,API 日志不规则,这意味着数据没有定期推送。
在将应用从后台转移到前台时,假设 30 分钟后,应用冻结并且连接丢失。
我已阅读 Apple 开发人员指南,该指南说如果数据点不断出现,可以在后台永久保持与外围设备的连接。现在我如何确保我不会丢失这些重量数据?是否可以在服务器中推送所有这些,也许在 Batch API Call 中?
参考:
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
【问题讨论】:
【参考方案1】:在 IOS 中可以进行后台处理。但它应该只做从挂起状态保持在后台状态的工作。 另外,我发现,不断将数据推送到 IOS 应用程序的 BLE 外围设备会阻止应用程序进入挂起状态,因此应用程序可能永远处于后台,除非 IOS 试图将其杀死以解决内存和其他问题.
-
有一个选项可以让应用程序在后台状态下运行
功能部分。
还要确保处理正确的外围代理方法。
API 调用是批量进行的。我宁愿保存捕获的数据
从后台本地存储中的BLE以及每当应用程序进入时
前台并连接到互联网,将为用户提供选项
推送到服务器。
【讨论】:
以上是关于无法定期在 IOS 中进行后台 API 调用以推送应用程序中从 BLE 设备接收的数据的主要内容,如果未能解决你的问题,请参考以下文章
PayPal API 调用以获取所有经常性付款资料“支付”我的帐户