gpt4 book ai didi

ios - 当应用程序终止时,BLE 设备如何调用应用程序

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:12 24 4
gpt4 key购买 nike

我有一个 BLE 设备(外围设备)和 iOS 应用程序,它们使用 CoreBluetooth.framework(连接、断开连接、订阅、通知服务)相互通信。以下是几个场景:

  1. 应用在前台 -> 我很容易连接到 BLE 设备。
  2. 应用程序在后台 -> 我收到回调并连接到 BLE 设备
  3. 该应用程序已从后台删除(终止该应用程序) -> 即使我从 iPhone 设备连接设备,我也没有收到任何回调 -> 设置 -> 蓝牙开启 -> 选择 Ble 设备-> 连接。

我用谷歌搜索并得到 State Preservation and Restoration 将调用该应用程序。深度驾驶后: enter image description here enter image description here enter image description here

这也显示 App Force Quit by the user ,应用程序将不会重新启动或使用状态保存和恢复激活。

我读自this , thisthis , 有几点:

“如果您需要在您的应用程序未运行时执行代码,根据您尝试执行的操作,有多种选择可供您选择。 - Background fetch 会让您的应用按预定时间间隔在后台运行约 30 秒。这样做的目的是获取数据并为应用程序下次运行时准备 UI。 - 推送通知 让您的应用从服务器获取最新数据。如果需要,您可以在设备上显示一条消息,但这不是必需的——静默推送通知让您跳过该部分。 - 本地通知让您可以向用户显示提醒,以及您想要的任何媒体附件和一些供用户选择的选项。如果他们选择这些选项,那么您的应用程序可以在前台或后台启动以处理它们。”

我尝试使用 Background Fetch,但在应用程序终止时它也没有唤醒。

我要实现的唯一目标是“当应用程序已被用户终止或终止时,无论何时连接 BLE 设备,都应在前台/后台调用应用程序,以便我执行一些操作,如 get来自 BLE 设备的数据并保存它”

在项目中使用背景模式: enter image description here

其他 BackgroundModes 也没有给出任何线索: enter image description here

如何在不使用推送通知或静默通知的情况下实现这一点?如果应用程序在终止后唤醒的 CoreBluetooth 框架中有任何问题,请告诉我?

最佳答案

简短的回答是,你不能
文档明确指出,当您的应用被用户明确终止时,您的应用将不会重新启动。
对于静默通知也是如此 - 如果用户强制终止了您的应用程序(或者设备电池状态低于 20%,顺便说一句),这些通知不会唤醒您的应用程序。
您对此的选择是有限的,可能包括建议用户不要强行终止您的应用,或使用基于位置的区域检测来重新启动您的应用。
One of the tutorials you've linked显示了一个 iBeacon 示例来检测进入和超出 iBeacons 范围,当与后台权限结合使用时可以重新启动您的应用程序,但同样 - 这不是您明确要求的,也不是您问题的真正解决方案描述。
Apple 的逻辑很简单——如果用户杀死了你的应用程序,用户就不想让它再次运行,这是有道理的。
问题是,许多用户认为关闭应用程序是让他们的设备响应更快的标准方法,对此有很大的争论(更糟糕的是?让操作系统冷启动应用程序或允许应用程序在后台通过无声通知做有趣的事情, 等等)我不会参与这场辩论,事情就是这样。

关于ios - 当应用程序终止时,BLE 设备如何调用应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53958303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com