2014-09-29 79 views
1

我对XMPP完全陌生,并且阅读过有关XMPP的各种网站。现在我正在考虑哪个服务器和库可以做iOS IM,我感到困惑。iOS + XMPP - 我可以在iOS中实现推送通知XMPPFramework吗?

最初我从here找到一个名为XMPPFramework的库,这看起来不错,因为它正在积极更新,并且有相对更多的使用来源。但是当我开始考虑服务器端选择(主要是ejabberd和Tigase)时,我发现如果要实现推送通知(这是IM的常见功能),需要做一些定制工作。

在搜索并浏览互联网后,我发现人们建议,为了实现XMPP的推送通知(用于通知用户脱机),需要协议XEP-0079(here),其中I可以实现我的自定义插件。但是,我发现上述XMPPFramework不支持XEP-0079。所以问题是:

  1. 这是否意味着我将无法实现推送通知,如果我选择在我的项目中使用XMPPFramework?或者它仍然可行,但我不能直接在iOS客户端发送消息时使用XMPPFramework中的东西?

  2. 我也检查过有关聊天状态显示(例如用户A正在键入...等),这些人声明是由XEP-00184完成的,是否可以使用此协议实现推送通知,而不是XEP-0079?

因为我才开始阅读有关IM和XMPP最近,我想也许我上面的问题,可能是没有意义或者甚至是不正确的,但我真的很迷茫,需要提供任何帮助。我试图找到更多关于如何在服务器端收件人用户离线时实现推送通知,但大多数人只是说需要一个额外的插件,似乎没有任何代码示例,所以我只有一个模糊的图像关于此。非常感谢!

编辑: 据我所知,为了向iOS用户发送推送通知,我将不得不使用APNS。但我不确定我是否能够实现目标,即识别发送给离线用户的消息,然后将其转发到xmpp服务器中的自定义插件,这可能涉及协议XEP-0079,而XMPPFramework似乎不支持。

而且我也不确定发送给离线用户的邮件的拦截和识别是如何完成的,因为我找不到类似的代码示例。有没有与此相关的项目或网站适合初学者?

再次感谢!

+0

alanlo @我也有同样的疑问。你能分享你找到的解决方案吗? – 2016-09-23 05:35:15

回答

1

你需要阅读本指南: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html

所有推送消息来自苹果的服务器发起。如果你想发送推送消息给用户,你的服务器需要通过这个服务发送消息。

+0

我明白,为了发送推消息,我将需要使用APNS。但在此之前,我将不得不拦截发送给离线用户的邮件。所以在这种情况下,我不确定我是否可以用XMPPFramework来做到这一点,因为为了达到这个目的,我将不得不制作custon插件,并使用xmpp服务器来处理它,这涉及协议XEP -0079和XMPPFramework似乎不支持。 – alanlo 2014-09-29 18:10:35

+0

Alanlo,这个必须实现服务器端,我认为,http://symmetricinfinity.com/2013/01/23/ios-push-notifications-from-ejabberd.html – 2014-10-05 10:31:18