2014-09-29 85 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