Ios CoreBluetooth:外围设备管理器如何知道中央设备接收到指示?
我试图解决的基本问题如下。我有两个iOS设备,一个配置为中央设备,另一个配置为外围设备。我想让外设知道是否由于某种原因(例如,运行中央设备的设备已关闭)中央设备移开或处于非活动状态 在正常情况下,我将其设置为,当中央移动到外围设备附近时,中央设备可以使用信标区域和测距,在其处于紧邻位置时(CLProximityImmediate)通过特征写入通知外围设备,然后在其仍在范围内但距离较远时(CLProximityFar)再次通知外围设备。这很有效 然而,当中央设备从CLProximityImmediate变为未知状态时,为了捕捉一个拐弯情况,我计划使用中央设备可以响应的外围设备的周期性指示。如果没有对指示的响应,则外围设备可以假定中央设备不再处于紧邻位置。但是,我无法找到通知外围设备管理器指示失败的回调或委托方法 当底层传输队列已满时,updateValue:forCharacteristic:onSubscribedCentrals:方法返回NO——这并不是因为中心没有响应,我的理解是这样的 我是不是漏掉了什么明显的东西?外围设备管理器是否有办法告知中央设备未收到指示?或者CoreBluetooth中是否缺少此案例的回调Ios CoreBluetooth:外围设备管理器如何知道中央设备接收到指示?,ios,core-bluetooth,bluetooth-lowenergy,Ios,Core Bluetooth,Bluetooth Lowenergy,我试图解决的基本问题如下。我有两个iOS设备,一个配置为中央设备,另一个配置为外围设备。我想让外设知道是否由于某种原因(例如,运行中央设备的设备已关闭)中央设备移开或处于非活动状态 在正常情况下,我将其设置为,当中央移动到外围设备附近时,中央设备可以使用信标区域和测距,在其处于紧邻位置时(CLProximityImmediate)通过特征写入通知外围设备,然后在其仍在范围内但距离较远时(CLProximityFar)再次通知外围设备。这很有效 然而,当中央设备从CLProximityImmedi
谢谢你的帮助 有两个问题需要让外围设备知道与失去联系的位置:
CLBeacon
不会将基础BTLE外围设备公开为,因此您无法让BTLE外围设备知道您的位置监视器在范围内cb外围设备
,其中广告数据
包含ProximityUID
cb外围设备
,并获得特征值更改的通知虽然问题中没有明确说明这一点,但我的意思是,外围设备正在为具有两个特征的服务做广告。这是除了明确的iBeacon广告,我同意这是“被动的”。当中心收到信标区域的通知时,它发现并写入其中一个特征,并且外围设备可以知道中心在范围内 我的基本问题不是关于信标的被动性质,而是关于“指示”如何与蓝牙协同工作。我认为,如果外围设备使用
updateValue:forCharacteristic:onSubscribedCentrals:
通知订阅了定义为CBCharacteristicPropertyIndicate
的特征的中心设备,则可以相当安全地说,没有定义回调来捕获对应该从中心设备返回的指示的确认(每个间隙)
对于这个缺失的API,一个解决方法是将第三个特征定义为“确认”特征,并施加一个协议,即每当中央接收到订阅的指示时,中央应对此特征进行虚拟读取。这将产生对外围设备上的外围设备管理器:didReceiveReadRequest:
,以确认e收到指示
这是更多的工作,并不是最优雅的方式,但考虑到没有用于指示确认的API,这可能是最好的方式。如果您使用通知和计时器,会怎么样?不过,这是一个好问题。您的回答确实有帮助,而且似乎是一个体面的工作。因此,如果灯塔广告是被动的,就没有wa我们可以在一个特定的信标和一个中央设备之间有一个类似于
会话的东西?或者有吗?一个可以在一个外围设备和一个中央设备之间有一个会话。但是,为了实现这一点,中央设备必须位于前台,以连接到一个设备,并发现其他服务。在bac中kground,这目前不起作用。请参阅我对另一个有关背景和核心蓝牙的相关问题的回答:谢谢你的评论和链接。我阅读了你的其他答案。但是我现在仍然确定如何实现会话。按会话,你是否试图说出上述答案的建议?即写信给不同的租用特征以告知会话状态…是的,除了信标之外,您还可以实现一组不同的读/写特征并建立会话。