OStack程序员社区-中国程序员成长平台

标题: ios - PubNub 防止存在超时 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 01:22
标题: ios - PubNub 防止存在超时

我正在考虑在我们的 iOS 应用中启用后台获取,以便为 PubNub 留出时间以防止出现超时。

编辑 - 一些背景知识:我们的应用正在通过 pubnub channel 将其地理位置传递给服务。我们要求用户在后台授权位置,当它被授予时,我们已经偶尔从操作系统获得时间。我们一直在尝试使用在线状态功能,以便服务可以知道我们的应用程序是否已退出/断开连接,还是刚刚停止移动。但是,当设备在后台停止移动时,我们无法从到达的位置获取执行时间,因此无论如何都会发生 pubnub 超时。

启用该后台状态后,我似乎需要

但是,有些事情并不明显:

  1. 相对于我们的 pubnub 超时,我应该选择什么获取间隔?似乎操作系统不一定遵守指定的获取间隔。一般来说,我们希望保持我们的超时时间很短,所以当我们的应用程序离线或强制退出时,我们的另一端很快就会检测到。这似乎与心跳不一致,并确保我们不会无意超时。我正在考虑只使用 Minimum 间隔。

  2. 我认为我不需要在我的 performFetchWithCompletionHandler 方法中做任何事情来确保发送存在心跳,而只是因为应用程序被唤醒这一事实会让 PubNub 的计时器开火并照顾好一切。但是,我可以做任何事情吗仅在心跳事务之后调用完成 block ,或者知道何时返回 newData vs. noData vs. failed。另外,我担心每次使用 noData 立即调用完成将被操作系统作为回退获取间隔的线索。

或者,如果有人可以推荐这种方法的替代方法来防止超时,我将不胜感激。



Best Answer-推荐答案


PubNub 状态检测信号

如果您想在一个(或多个) channel 上保持后台应用程序的存在,您可以简单地使用 REST 调用每 4 分钟发送一次心跳(比默认超时的每 5 分钟更快 - 4 看起来就像一个不错的整数):

https://ps.pndsn.com/v2/presence/sub-key/{yourSubKey}/channel/{listOfchannels}/heartbeat?&uuid={clientuuid}

例如:

https://ps.pndsn.com/v2/presence/sub-key/sub-c-1234.../channel/channel1,channel2/heartbeat?&uuid=db9c5e39-7c95-40f5-8d71 -125765b6f561

只需确保您发送的 UUID 与您在该用户的应用中初始化 PubNub 实例的 UUID 相同。

此心跳ping 与长时间运行的subscribe 连接具有相同的效果。它会在你传入的 channel 上保留给定的 UUID。

PubNub REST Docs了解更多详情。

关于ios - PubNub 防止存在超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725654/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4