【发布时间】:2015-09-29 03:18:58
【问题描述】:
我正在使用 scanForPeripheralsWithServices 按服务 UUID 扫描设备。当我使用一些标准的服务 UUID 值时,它有时会起作用。
当我尝试使用自定义服务 UUID 时,它通常找不到任何设备,但如果我将 nil 用于服务 UUID 列表,它会找到在我使用他们的服务 UUID 时找不到的相同设备。
发生了什么事?难道是因为设备的广告包只能广告它的部分服务?
【问题讨论】:
-
外设通告的集合服务通常小于外设提供的服务。这是因为广告中的空间有限,因此宣传“主要”服务是有意义的。例如,心率设备可能会提供心率服务、设备信息服务和电池服务,但它只会宣传心率服务,因为这是其他设备会“感兴趣”的服务。一旦他们识别了设备并连接到它,他们就可以根据需要发现设备信息和电池服务
-
这个应用程序是一个有用的测试工具 - itunes.apple.com/au/app/lightblue-explorer-bluetooth/… 如果它可以找到您的设备,那么您可能会怀疑您的代码。
-
谢谢。我在想这可能是广告包的大小有限。我将试用该实用程序并查看它报告的内容。请发表您的评论作为答案,以便我将其标记为答案。