PubNub阻止在线超时

时间:2017-05-01 20:00:22

标签: ios pubnub background-fetch

我正在考虑在我们的iOS应用中启用后台提取功能,以便为PubNub提供时间以防止状态超时。

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

启用后台状态后,看起来我需要

  • 在我们有连接的时间间隔内打电话setMinimumBackgroundFetchInterval我们不想超时(当我们没有时,也请Never)。
  • 实施application:performFetchWithCompletionHandler:

然而,有些事情并不明显:

  1. 我应该选择哪个获取时间间隔与pubnub超时相关?似乎指定的获取间隔不一定遵守操作系统。一般情况下,我们希望保持超时,以便当我们的应用程序脱机或强行退出时,我们的另一端会很快检测到。这似乎与心跳不一致,并确保我们不会无意中超时。我考虑使用Minimum间隔。

  2. 我认为我不需要在我的performFetchWithCompletionHandler方法中做任何事情以确保发送状态的心跳,而只是通过应用程序被唤醒的事实将让PubNub&#39 ;定时器开火并照顾一切。但是,我可以执行任何操作,仅在心跳事务之后调用完成块,或者知道何时返回newDatanoDatafailed的对比。此外,我担心每次使用noData立即调用完成时,操作系统将使用操作系统作为退回获取间隔的线索。

  3. 或者,如果有人可以推荐替代这种方法来防止超时,我会很感激。

1 个答案:

答案 0 :(得分:2)

PubNub Presence Heartbeat

如果你想让你的后台应用程序存在于一个或多个频道上,你可以简单地使用一个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连接具有相同的效果。它会使您传入的频道上显示给定的UUID。

有关详细信息,请参阅PubNub REST Docs

相关问题