我在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位值制造商数据也发生了变化。
最诚挚的问候, Dezmond