Core Bluetooth:了解设备是否可用于重新连接
Core Bluetooth: Find out if device is available for reconnection
我正在尝试使用 retrievePeripheralsWithIdentifiers:
方法尝试连接到之前连接的外围设备。只有当外围设备在 iOS 设备附近时,连接尝试才会成功。
现在,我如何确定已知外围设备是否在附近并因此在不久的将来可以连接?
如果您查看 Core Bluetooth 指南 here 并向下滚动到图 5.1,Apple 描述了可能的重新连接流程。在该图的第一列中,有一个条件“设备可用?”什么方法或成员反映了这种可用性?
"Device available?" 框指的是 centralManager(_:didConnect:)
已被调用。如果您查看上面的框,它是 "Try to connect." 如果成功,则设备可用。
这几乎总是正确的方法。不要问 "is this likely to succeed?" 试试看。如果有效,那就有效。
如果您真的想了解附近但未连接的设备,则可以扫描它们是否正在使用 scanForPeripherals(withServices:options:)
投放广告。然后您可以检查是否有任何发现的外围设备是您正在寻找的外围设备。
当然,设备可能就在附近并且没有广告。它可能连接到另一台设备,在这种情况下您看不到它。它可能已连接到您的设备,在这种情况下,您需要 retrieveConnectedPeripherals
才能看到它。它可能只是没有广告(许多设备在一段时间后停止广告)。在那种情况下,如果不尝试连接它就看不到它。
但通常正确的答案是如果您已经知道该设备就尝试连接。设置一个超时时间,如果超时了,很可能不在附近。或者不设置超时,让它尝试连接直到连接成功。
我正在尝试使用 retrievePeripheralsWithIdentifiers:
方法尝试连接到之前连接的外围设备。只有当外围设备在 iOS 设备附近时,连接尝试才会成功。
现在,我如何确定已知外围设备是否在附近并因此在不久的将来可以连接?
如果您查看 Core Bluetooth 指南 here 并向下滚动到图 5.1,Apple 描述了可能的重新连接流程。在该图的第一列中,有一个条件“设备可用?”什么方法或成员反映了这种可用性?
"Device available?" 框指的是 centralManager(_:didConnect:)
已被调用。如果您查看上面的框,它是 "Try to connect." 如果成功,则设备可用。
这几乎总是正确的方法。不要问 "is this likely to succeed?" 试试看。如果有效,那就有效。
如果您真的想了解附近但未连接的设备,则可以扫描它们是否正在使用 scanForPeripherals(withServices:options:)
投放广告。然后您可以检查是否有任何发现的外围设备是您正在寻找的外围设备。
当然,设备可能就在附近并且没有广告。它可能连接到另一台设备,在这种情况下您看不到它。它可能已连接到您的设备,在这种情况下,您需要 retrieveConnectedPeripherals
才能看到它。它可能只是没有广告(许多设备在一段时间后停止广告)。在那种情况下,如果不尝试连接它就看不到它。
但通常正确的答案是如果您已经知道该设备就尝试连接。设置一个超时时间,如果超时了,很可能不在附近。或者不设置超时,让它尝试连接直到连接成功。