gpt4 book ai didi

ios - 使用蓝牙时如何设置超时间隔

转载 作者:行者123 更新时间:2023-12-01 15:41:03 31 4
gpt4 key购买 nike

当我用蓝牙写数据的时候,希望得到回应。但是当外围设备出现问题时,它不会发送通知。我需要设置一个超时间隔来处理这种不良交互。就像我们使用 urlrequest:

    /// Creates and initializes a URLRequest with the given URL and cache policy.
/// - parameter: url The URL for the request.
/// - parameter: cachePolicy The cache policy for the request. Defaults to `.useProtocolCachePolicy`
/// - parameter: timeoutInterval The timeout interval for the request. See the commentary for the `timeoutInterval` for more information on timeout intervals. Defaults to 60.0
public init(url: URL, cachePolicy: CachePolicy = .useProtocolCachePolicy, timeoutInterval: TimeInterval = 60.0) {
_handle = _MutableHandle(adoptingReference: NSMutableURLRequest(url: url, cachePolicy: cachePolicy, timeoutInterval: timeoutInterval))
}

我怎么能做到。

最佳答案

通过“当外围设备出错时”——如果你的意思是外围设备崩溃或停止工作,那么你应该得到一个 BLE 断开连接事件来指示崩溃:

(centralManager:didDisconnectPeripheral:) 

如果不是这种情况,您只是在一段时间后停止接收通知并且 BLE 连接仍然存在,那么就无法判断外设停止发送通知的原因。这样做的原因是没有与通知关联的特定“时间”。有些外围设备每 1 秒发送一次通知,有些外围设备每 1 周发送一次通知。一些外围设备会发送有关值更改的通知(例如,如果温度升高 1 度),有些会发送有关用户操作的通知(例如,用户按下按钮)。

唯一的解决方法是,如果您在中央设备中添加一个计时器,那么每次您收到通知时使用:

peripheral(_:didUpdateValueFor:error:)

您可以重置该计时器(如果它正是您希望超时的通知)。然后,如果计时器到期,您就知道您没有按预期及时收到通知,因此您可以标记错误或强制断开连接。这只是一个示例,您可以创建一些变体(例如,在 peripheral(_:didUpdateValueFor:error:) 上设置一个标志,您每 30 秒检查并重置一次)。您可以在以下链接中找到有关计时器的更多信息:-

希望对您有所帮助。

关于ios - 使用蓝牙时如何设置超时间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61789999/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com