什么是XMPP,如何在iOS聊天应用程序中使用它?

11

我想为iPhone创建一个聊天客户端应用程序。我已经了解到XMPP框架是其中最好的选择之一。然而,我在网上没有找到太多关于它的资料,只有在Google Code上的XMPPFramework和维基百科上的相关细节。

有人能解释一下什么是XMPP以及我们如何在聊天应用程序中使用它吗?是否有任何教程或代码片段可以演示其使用?


1
你的谷歌功夫还不够强,年轻的学徒。XMPP本身无法提供代码片段,因为XMPP是一种高度复杂的基于XML的协议,您可能不想在XML级别上处理它。 - Charles
谢谢您的回复,但是您能否建议我如何集成到我的iPhone上,我想创建一个使用XMPP的客户端。您可以帮助我如何做吗? - V.V
如果没有使用XMPP的其他方法也是可以接受的。那么,有人能提供一种创造iOS聊天客户端的方式吗? - V.V
@MiteshKhatri - 看来我真倒霉,给出的链接现在无法访问 :( - TheTiger
你可以尝试查看一些自己实现XMPP的开源应用程序:https://monal.im/ https://chatsecure.org/ https://astrachat.com/ https://siskin.im/ - Cadoiz
3个回答

12

XMPP是一个开放的消息和状态协议,大多数即时通讯客户端都支持它。

如果你正在为iOS构建一个需要与其他客户端交互的聊天应用程序,请使用XMPP。先阅读并理解协议,然后查看XMPPFramework Objective-C库,一切都会变得清晰明了。不过需要花费一些时间学习。

如果您的聊天应用仅需要与您的应用程序的其他安装进行通信,则有几个更容易的选项:

您可以打开与服务器的持久tcp连接,并使用该连接来传递状态和消息数据。您可以在node.js中实现一个简单的服务器,例如在相对较少的代码中完成此操作。

甚至更简单的选择是在您想要从iPhone报告新消息或状态更改时调用基于简单http的api,并通过推送消息提供更新。推送消息很好,因为当应用程序关闭时,您仍然可以传递消息,而当应用程序打开时,您可以智能地更新应用程序的界面。

这一切取决于你的需求。


4
V. 你是否已经实现了XMPP?
我知道现在回答有些晚,但是最近我正在开发XMPP iOS应用,并且现在我们有比较充足的关于XMPP的信息,所以我想在这里写一点。

这里有一个最好的教程,可以用于集成XMPP:

1. 在iOS上构建jabber客户端
2. iOS的XMPP Messanger - GitHub

它是一个非常强大而实时的协议,可用于IM(正如我们都知道WhatsApp正在使用它)。

我们甚至可以为我们的IM应用程序集成OMEMO加密。


是的,我做到了!借助Signal应用程序源代码的帮助。 - D4ttatraya
你能推荐一些示例/教程,以便详细了解如何进行OMEMO集成吗?我们有一个XMPP客户端,正在尝试添加OMEMO,任何帮助将不胜感激。 - Athul George
我还没有找到任何教程,只是查看了Signal的源代码。但是考虑创建一个Github仓库来实现它,并在这里更新... - D4ttatraya
1
@AngelFSyrus 给定的 XMPP GitHub 仓库可以直接在 Swift 项目中使用,需要使用 Obj-C 文件的桥接头文件。 - D4ttatraya
1
@AngelFSyrus 这个ReadMe逐步解释了如何在Swift中构建聊天应用程序。 - D4ttatraya
显示剩余2条评论

3
最知名的XMPP iOS框架是XMPPFramework。它提供了RFC-3920(XMPP标准)的核心实现。该框架具有大规模并行和线程安全性。由于GCD的支持,性能良好。它附带多个流行扩展(XEP)。
您可以找到一个非常详细的Swift教程来在您的应用程序中实现XMPPFramework。这是第一部分第二部分
另一个选择可能是:
  • DCXMPP 但自2014年以来就没有得到维护。
  • Libstrophe 是一个C库。你可以在这里找到iOS版本。同样,它自2013年以来也没有得到维护。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接