2016-06-23 40 views
1

爲什麼當我嘗試在xmpp muc中創建的組中發送消息時出現此錯誤。XMPPFramework:只允許居民向會議發送消息xmpp ios

這是我收到

<message xmlns="jabber:client" from="[email protected]" to="[email protected]/787052459360862999820058" type="error"><body>hiiii</body><error code="406" type="modify"><not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></not-acceptable><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Only occupants are allowed to send messages to the conference</text></error></message> 

錯誤短信包:只有乘客被允許將消息發送到會議

方法,我使用創建組是:XMPPFramework - How to create a MUC room and invite users?

回答

2

錯誤消息似乎不言自明:您不是乘客(如XEP-0045中定義的=您未加入房間),因此您無法發送消息。

您可以檢查在XEP-0045中的角色權限參考:http://xmpp.org/extensions/xep-0045.html#roles-priv

只有參與者可以將消息發送給所有。

+0

你是對的,但是當我加入房間和第一次聊天時,在關閉我的客戶端ios應用程序並重新啓動應用程序後,如果我發送消息顯示此錯誤,則不會發生這種情況。那麼這是實際的問題 –

+2

當你加入你是一個佔有者。當您關閉應用程序時,客戶端正在離線發送狀態,包括MUC,並且您不再佔用任何用戶。這意味着如果你想再次成爲佔有者並被允許發送消息,則需要再次登錄。該行爲在XEP-0045中有明確的定義。 –

+0

@MickaëlRémond你能檢查代碼,發現任何問題嗎? (roomStorage:roomStorage,jid:roomJid());使用roomStorage = XMPPRoomCoreDataStorage.sharedInstance() 讓roomJid = XMPPJID.init(字符串:「\(groupName)@conference。\(constantVar.hostUrl)」) let xmppRoom = XMPPRoom.init ,dispatchQueue:DispatchQueue.main)作爲XMPPRoom xmppRoom.activate(self.xmppStream) xmppRoom.addDelegate(個體經營,delegateQueue:DispatchQueue.main) xmppRoom.join(usingNickname:self.xmppStream.myJID.bare(),歷史:無,密碼:無) – Dipang