在后台

时间:2015-07-22 11:48:16

标签: ios objective-c iphone bluetooth

我在iOS应用程序上工作,充当蓝牙外设。我需要从非iOS中心实现搜索我的iOS外设。我的iOS应用程序在后台模式下做广告时遇到了问题。当它在前台广告时,我的中心可以从广告数据中读取主要服务UUID,但是当它在后台广告时,我看不到外围设备的名称或UUID - 广告包中只有Apple制造商数据。 / p>

问题的实质在于我的非iOS中心无法确定 - 它是在背景中广告我的外围设备还是在后台播放任何其他外围设备。我必须在后台为每个iOS设备连接广告,枚举其服务以查找我的服务UUID。

文档说在后台广告期间,所有服务UUID都会转到特殊的“溢出”区域,只有iOS设备才能读取它,并在CBCentralManager的scanForPeripherialWithServices方法中指定服务。看起来Apple有能力检查服务UUID的后台广告数据包数据。

搜索SO后,我发现了一些有关服务哈希UUID的有趣信息。背景模式广告包始终包含Apple制造商数据(14 FF 4c 00 01)和未记录的128位值,其中128位中的一个等于1.我尝试多次更改我的服务UUID并发现Apple之后的这个128位值制造商数据也发生了变化。

  1. 我想使用此值来过滤外围设备并减少 连接到错误的(不是我的)外围设备。谁能给任何人 信息该值如何取决于服务UUID?有没有 在指定的服务UUID中使用的散列函数 scanForPeripherialWithServices方法?
  2. 我可以确定后台广告包对于永不改变的不可变服务UUID总是相同的吗?
  3. 还有其他方法可以发送我的自定义信息 在后台模式广告?也许我可以将我的数据添加到BLE中 SCAN RESPONSE包?
  4. 最诚挚的问候, Dezmond

0 个答案:

没有答案