如何在 iOS 10 的后台运行 xmpp?

Posted

技术标签:

【中文标题】如何在 iOS 10 的后台运行 xmpp?【英文标题】:How to run xmpp in background in ios 10? 【发布时间】:2017-05-27 06:31:23 【问题描述】:

我在 ios 中制作了聊天应用,但在 ios 10 xmpp 中无法在后台运行。

为此,我找到了一个用于在后台运行 xmpp 的解决方案 pushkit,但我不明白如何实现 xmpp + push kit。

所以任何人都有关于 xmpp +push kit 或 ios 10 xmpp 在后台运行的想法或代码,请帮助我。

谢谢。

【问题讨论】:

【参考方案1】:

在 iOS 10 之前,我们有一个 voip 套接字,即使在后台接收到一些数据包,它也会在后台唤醒您的应用程序。但是从 iOS 10 开始,我们将无法获得 cpu 时间,所以 pushkit 将是最后的手段。

如果你想使用 pushkit,你必须明白它只是在你被停职甚至被杀时唤醒你的一种方式。当您想向远程发送消息时,您需要向 APNS 发送一条 http 推送消息,然后发送带有有效负载的消息(如果足够,您甚至可以跳过您的 xmpp 部分)。

如果你坚持使用xmpp通信,你可能需要在发送APNS消息后存储消息,当远程app被唤醒并连接到你的xmpp服务器时,服务器将所有缓存的消息发送给客户端来传递这些消息。

这非常复杂,因为您的服务器确实需要进行一些更改。

【讨论】:

感谢您给我答复。我将尝试使用 APNS 推送通知。 @DivyaPatel,我想知道你为什么需要使用 xmpp?这是一个相当繁重的协议,如果你的应用专注于即时聊天,我认为没有服务器很难改变行为。如果只是为了某种通知,苹果推送可能是一种选择。 你说得对,它是繁重的协议,但它是客户的要求。 :) 而且我还需要群聊,这就是我使用 xmpp 的原因。 @DivyaPatel,我认为你只能使用推送通知作为唤醒应用程序的方法,服务器应该做一些事情来缓存消息并在客户端唤醒并重新连接到服务器时将它们传递给客户端.希望对你有帮助。

以上是关于如何在 iOS 10 的后台运行 xmpp?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 后台和 XMPP 框架

快速修复 Appestore 解决 XMPP iOS VoIP 后台执行拒绝

在没有 VoIP iOS 的情况下保持 XMPP 套接字在后台活动

如何每小时在后台运行约 30 秒的进程(iphone 应用程序)

如何在 Windows Phone 的后台运行我的应用程序或某些特定方法

iPhone中的XMPP后台连接