我正在考虑在我们的 iOS 应用程序中启用后台获取,以便为 PubNub 留出时间以防止出现超时。
编辑- 一些背景:我们的应用程序正在通过 pubnub 频道将其地理位置传达给服务。我们要求用户在后台授权位置,当它被授予时,我们已经偶尔从操作系统获得时间。我们一直在尝试使用在线状态功能,以便服务可以知道我们的应用程序是否已退出/断开连接,还是刚刚停止移动。但是,当设备在后台停止移动时,我们不会从到达的位置获得执行时间,因此无论如何都会发生 pubnub 超时。
启用该背景状态后,看起来我需要
- 当我们有一个我们不想超时的连接时调用
setMinimumBackgroundFetchInterval
一个间隔(当我们不想超时时也是Never
如此)。 - 实施一个
application:performFetchWithCompletionHandler:
但是,有些事情并不明显:
对于我们的 pubnub 超时,我应该选择什么获取间隔?似乎操作系统不一定遵守指定的获取间隔。一般来说,我们希望保持我们的超时时间很短,所以当我们的应用程序离线或强制退出时,我们的另一端很快就会检测到。这似乎与心跳不一致,并确保我们不会无意超时。我正在考虑只使用
Minimum
间隔。我认为我不需要在我的
performFetchWithCompletionHandler
方法中做任何事情来确保发送存在心跳,而只是通过唤醒应用程序的事实会让 PubNub 的计时器触发并处理所有事情。但是,我可以做任何事情吗仅在心跳事务之后调用完成块,或者知道何时返回newData
vs.noData
vs.failed
。另外,我担心每次都立即调用完成noData
将被操作系统作为回退获取间隔的线索。
或者,如果有人可以推荐这种方法的替代方法来防止超时,我将不胜感激。