当前位置: 首页 > 知识库问答 >
问题:

如何使用iOS CoreBooth同时扫描多个BLE服务

南宫正阳
2023-03-14

我正在尝试为我的iOS应用程序找到一种好方法来扫描三种不同类型的蓝牙LE外围设备,每种外围设备都由一个唯一的服务/UUID表示。CBCentralManager scanFor外围文件与服务:选项方法采用服务UUID数组,当提供时,留档状态为“中央管理器仅返回宣传您指定的服务的外围设备”。然而,我发现这实际上意味着,如果您指定3个服务UUID,您将只获得宣传所有三个服务的外围设备。即它是一个AND而不是一个OR:它不会返回在数组中宣传任何这些服务的所有外围设备。

我看到的唯一其他选择是为服务UUID数组传递“nil”,并根据留档“返回所有发现的外围设备,无论其支持的服务(不推荐)如何”。然后我可以过滤我正在寻找的三个服务UUID中的任何一个。但Apple似乎在劝阻我不要这样做,告诉我不推荐这样做。有人知道为什么吗?

共有1个答案

焦驰
2023-03-14

Apple不建议使用nil,因为它效率不高并且会影响电池寿命。

解决方案只需创建三个CBCentralManager实例,并让每个实例扫描不同的服务。您甚至可以使用相同的委托实例,因为CBCentralManager实例被传递给委托方法。

 类似资料:
  • 我可以在Android 10上使用前台服务在后台进行工作BLE扫描。我的应用程序具有in-manifest Foreground\u服务,并在启动时从用户那里获得premissions ACCESS\u FINE\u位置和ACCESS\u background\u位置。然后用BLE扫描启动前台服务。当屏幕在服务上执行扫描和查找设备时,但当屏幕离开前台时,服务停止工作,扫描停止。 正在启动服务: 使

  • 我正在创建一个Android应用程序,该应用程序使用Android Studio扫描所有附近的BLE(蓝牙低功耗)设备。 我想我已经实施了所有这些文件: https://developer.android.com/guide/topics/connectivity/bluetooth/ble-overview https://developer.android.com/guide/topics/c

  • 我有3台Android设备,三星Galaxy S3手机,三星Tab4和Verizon OEM平板电脑。Verizon OEM平板电脑不支持BLE、API 17。我从android开发者网站安装了“BLE设备扫描”,并在Galaxy S3上运行。它只显示Verizon平板电脑是找到的设备。当我在三星Tab4上运行相同的应用程序时,它只显示Galaxy S3作为找到的设备。如果我只看Galaxy S3

  • 问题内容: 我正在使用Spring 3.1,并使用和属性引导应用程序。 实际的开始是 该配置类带有注释 而且效果很好。但是,我想更详细地说明我扫描的软件包,所以我尝试了。 但是,此操作失败,并显示错误消息,提示我找不到使用注释指定的组件。 做我追求的正确方法是什么? 谢谢 问题答案: @ComponentScan使用字符串数组,如下所示: 当您仅在一个字符串中提供多个包名称时,Spring会将其解

  • 我使用Spring 3.1和无融资创业应用程序使用和属性。 实际启动是用 此配置类的注释为 这个很好用。然而,我想更具体地介绍我扫描的软件包,所以我尝试了。 然而,这失败了,错误告诉我它找不到使用注释指定的组件。 做我想做的事的正确方法是什么? 谢啦

  • 我试图扫描BLE设备与 (我知道它在新版本中已经过时了,但我只是想看看它是否能与我的手机配合使用[4.4],我正在使用它)。因此,它开始扫描,然后继续,没有给出错误,但没有检测到设备。也会触发OnLEScan事件,但其中的设备参数为null。我的LE设备就在那里并已连接。 在Google上,我发现如果BluetoothAdapter没有UUID,就会发生这种情况。如何设置UUID?何时调用/启动O