swift - 核心蓝牙:如果重新安装应用程序而没有在应用程序中正确断开BLE设备,则无法再次在应用程序中找到BLE设备
问题描述
当我在不断开 BLE 设备的情况下重新安装应用程序时,手机会保持连接,因此当我重新安装应用程序并扫描 BLE 设备时,最后一个连接将出现在操作系统级别,而不是应用内级别。如果之前未在应用程序上正确断开连接,这将导致我无法发现 BLE 设备。我的测试人员坚持认为,如果我重新安装应用程序,无论如何我都不应该看到连接并发现 BLE 设备。
如果我知道 UUID 和服务,我可以在应用程序中检索 BLE 设备连接,但正如我在文档中看到的那样,没有这些是不可能的。有没有其他方法可以解决这个问题?
解决方案
这正是retrieveConnectedPeripherals(withServices:)
目的。这将返回已经连接(在操作系统级别)的外围设备,这些外围设备宣传特定的服务列表。
您仍然需要调用connect
返回的外围设备。在这种情况下,“连接”是指“连接到应用程序”,而不是“连接到设备”。文档将这些“应用程序”连接称为“本地”。
推荐阅读
- elasticsearch - 按字段聚合,然后对另一个字段的值求和
- ios - 在 Xcode 10 中设计 viewcontroller 后如何添加导航控制器?
- ios - 带有 MSAL 的本机 iOS 应用程序需要第二次登录 Webview 才能到 Sharepoint Online
- android - 如何在新活动中获取通知的标题和消息并在文本视图上显示
- python - 创建能够从给定参数生成函数对象(在这种情况下为分段函数)的脚本
- mongodb - 使用 $addFields 时如何将值合并到一个数组中?
- python - numpy int64 不可迭代
- python - psycopg2:如何从 excel 文件动态创建表并将值插入 postgresql db
- java - 在 netbeans 中运行 Java 代码没有任何问题。虽然表没有出现在 Mysql Workbench
- reactjs - 在 React 和饼图中使用 setState 的多个获取请求