菜鸟教程小白 发表于 2022-12-13 01:22:21

ios - PubNub 防止存在超时


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

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

<p>启用该后台状态后,我似乎需要</p>

<ul>
<li>当我们有一个不想超时的连接时调用 <code>setMinimumBackgroundFetchInterval</code> 并设置一个间隔(当我们不想超时时也使用 <code>Never</code>)。</li>
<li>实现一个 <code>application:performFetchWithCompletionHandler:</code></li>
</ul>

<p>但是,有些事情并不明显:</p>

<ol>
<li><p>相对于我们的 pubnub 超时,我应该选择什么获取间隔?似乎操作系统不一定遵守指定的获取间隔。一般来说,我们希望保持我们的超时时间很短,所以当我们的应用程序离线或强制退出时,我们的另一端很快就会检测到。这似乎与心跳不一致,并确保我们不会无意超时。我正在考虑只使用 <code>Minimum</code> 间隔。</p></li>
<li><p>我认为我不需要在我的 <code>performFetchWithCompletionHandler</code> 方法中做任何事情来确保发送存在心跳,而只是因为应用程序被唤醒这一事实会让 PubNub 的计时器开火并照顾好一切。但是,我可以做任何事情吗仅在心跳事务之后调用完成 block ,或者知道何时返回 <code>newData</code> vs. <code>noData</code> vs. <code>failed</code>。另外,我担心每次使用 <code>noData</code> 立即调用完成将被操作系统作为回退获取间隔的线索。</p></li>
</ol>

<p>或者,如果有人可以推荐这种方法的替代方法来防止超时,我将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><h1>PubNub 状态检测信号</h1>
<p>如果您想在一个(或多个) channel 上保持后台应用程序的存在,您可以简单地使用 REST 调用每 4 分钟发送一次心跳(比默认超时的每 5 分钟更快 - 4 看起来就像一个不错的整数):</p>
<p><code>https://ps.pndsn.com/v2/presence/sub-key/{yourSubKey}/channel/{listOfchannels}/heartbeat?&uuid={clientuuid}</code></p>
<p>例如:</p>
<p><code>https://ps.pndsn.com/v2/presence/sub-key/sub-c-1234.../channel/channel1,channel2/heartbeat?&uuid=db9c5e39-7c95-40f5-8d71 -125765b6f561</code></p>
<p>只需确保您发送的 UUID 与您在该用户的应用中初始化 PubNub 实例的 UUID 相同。</p>
<p>此心跳<em>ping</em> 与长时间运行的<code>subscribe</code> 连接具有相同的效果。它会在你传入的 channel 上保留给定的 UUID。</p>
<p>见 <a href="https://www.pubnub.com/docs/pubnub-rest-api-documentation#presence-heartbeat" rel="noreferrer noopener nofollow">PubNub REST Docs</a>了解更多详情。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - PubNub 防止存在超时,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43725654/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43725654/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - PubNub 防止存在超时