gpt4 book ai didi

swift - Google Nest subscriptionWithMessageFoundHandler 触发一次?

转载 作者:行者123 更新时间:2023-11-28 12:47:19 25 4
gpt4 key购买 nike

我正在尝试围绕以下事实进行编码:在设备超出使用音频(或 Android 的 Earshot)的范围后,messageLostHandler 不会触发很多分钟。

我希望每隔几秒就会从另一台设备收到一条消息。它会触发一次。这是预期的吗?由于我不能依赖 messageLost 处理程序 - 我如何知道设备何时真正超出超声波范围?

我在收到 subscriptionWithMessageFoundHandler 后编写了一个计时器,希望收到另一条消息我可以使计时器无效或重新启动。如果计时器启动,我就会知道 x 秒过去了,并且其他设备一定超出了范围。没有这样的运气。

更新:这是有问题的代码:

let strategy = GNSStrategy.init(paramsBlock: { (params: GNSStrategyParams!) -> Void in
params.discoveryMediums = .Audio
})

publication = messageMgr.publicationWithMessage(pubMessage, paramsBlock: { (pubParams: GNSPublicationParams!) in
pubParams.strategy = strategy
})

subscription = messageMgr.subscriptionWithMessageFoundHandler({[unowned self] (message: GNSMessage!) -> Void in
self.messageViewController.addMessage(String(data: message.content, encoding:NSUTF8StringEncoding))

// We only seem to get a 1x notification of a message. So this timer is folly.
print("PING") //Only 1x per discovery.

}, messageLostHandler: {[unowned self](message: GNSMessage!) -> Void in
self.messageViewController.removeMessage(String(data: message.content, encoding: NSUTF8StringEncoding))
}, paramsBlock: { (subParams: GNSSubscriptionParams!) -> Void in
subParams.strategy = strategy
})

请注意,“PING”仅打印一次。

最佳答案

当设备超出范围时,Nearby 会等待 2 分钟,然后再从其缓存中刷新其他设备的 token 。因此,如果您等待 2 分钟,则应调用 messageLost 处理程序。你能证实这一点吗?此外,假设您希望超时时间短于 2 分钟是否安全?此超时一直是讨论的主题,并且有人谈论添加一个参数,以便应用可以选择更适合其用例的值。

关于swift - Google Nest subscriptionWithMessageFoundHandler 触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621043/

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