Ios CBCentralManager连接是否超时?
我知道答案名义上是“不”,但我的意思是,如果应用程序进入后台(启用BTLE后台处理),该怎么办?24小时?通过应用程序更新 在标题“重新连接到外围设备”下,描述了一个重新连接工作流,该工作流首先尝试重新连接到通过Ios CBCentralManager连接是否超时?,ios,core-bluetooth,btle,Ios,Core Bluetooth,Btle,我知道答案名义上是“不”,但我的意思是,如果应用程序进入后台(启用BTLE后台处理),该怎么办?24小时?通过应用程序更新 在标题“重新连接到外围设备”下,描述了一个重新连接工作流,该工作流首先尝试重新连接到通过检索外围设备标识:找到的先前配对的外围设备,然后在连接失败时再次开始扫描。如果没有正式超时,您如何知道何时放弃连接以前找到的外设?如果您的想法是在移动回BTLE设备附近时重新连接到以前找到的BTLE设备,而用户不必与您的应用程序交互,那么您如何知道何时开始/保持扫描 此外,该页下方的一条
检索外围设备标识:
找到的先前配对的外围设备,然后在连接失败时再次开始扫描。如果没有正式超时,您如何知道何时放弃连接以前找到的外设?如果您的想法是在移动回BTLE设备附近时重新连接到以前找到的BTLE设备,而用户不必与您的应用程序交互,那么您如何知道何时开始/保持扫描
此外,该页下方的一条注释指出,某些BTLE设备可能会在每次通电时为自己发明一个随机标识符,因此即使您从
retrieveperipheralswithindicatiers:
中找到一些以前配对的外围设备,您可能无法连接到它们,因为它们的名称已更改。在实践中有没有BTLE设备可以做到这一点?真是疯了 这是一个很难回答的问题。CoreBluetooth框架本身在连接请求上没有正式超时。事实上,它将尽可能长时间地连接外围设备。但那要多长时间
不幸的是,这并不是很明确的定义。你可以非常自信,当应用程序在前台时,连接不会超时,但一旦你在后台加入连接,事情就不再那么有趣了。显然,正如您所提到的,在手机重新启动后,挂起的连接将不会保留,等等。。这很好,因为不管怎样,用户都不会期望应用程序在重新启动后仍在运行。关于长时间运行的挂起连接,您会在苹果的文档中发现,他们告诉您选择状态保留和恢复,以确保挂起的连接在应用程序挂起并最终终止时得到正确保留。这将是好的,如果它的工作广告,但不幸的是,它没有。经过多年的研究,我发现在iOS上建立一个可靠的后台连接几乎是不可能的。我已经报告了很多关于这个主题的bug,但是到目前为止还没有一个得到解决
我认为有几个问题需要特别注意: