【问题标题】:How to implement XEP-0333 in iOS Application?如何在 iOS 应用程序中实现 XEP-0333?
【发布时间】:2018-03-21 21:25:36
【问题描述】:

我正在开发一个聊天应用程序,因为我需要像 WhatsApp 应用程序一样显示消息状态,因为我已经尝试过 XEP-0333(聊天标记),但面临类似问题。

1) 从另一端 XMPPMessage Archive 获取 Received Marker 后,未使用 Received Marker 更新消息(在核心数据中,消息聊天标记状态未更新)。

2) 如何实现显示标记逻辑? (意味着对于每条消息,我们需要发送显示的标记或一次只发送一个对话框。)

XEP 链接:XEP-0333

代码:

         //(Sender Part)
            let completeMessage = DDXMLElement.element(withName: "message") as! DDXMLElement //(In that i have set id,body,to and type as chat)
            let msgObj = XMPPMessage(from: completeMessage)
            msgObj?.addMarkableChatMarker()
            xmppStream?.send(msgObj)

        //(Receiver Part)
    didReceivedMessage - Method

    //*Check One condition*
    if message.isChatMessageWithBody() && message.isErrorMessage() == false {
       if (message.hasChatMarker() == true){
                 printLog("Message ID\(message.elementID())")
                 let msgElement = XMPPMessageMng.getChatMessageElement(recipient: message.from().bare(), thread: "")
                    let threadElement = DDXMLElement.element(withName: "thread") as! DDXMLElement
                    threadElement.stringValue = "Thread"
                    msgElement.addChild(threadElement)
                    let msgReceived = XMPPMessage(from: msgElement)
                    msgReceived?.addReceivedChatMarker(withID: message.elementID())
                    xmppStream.send(msgReceived)
                }
    }

    else{
          if (message.hasMarkableChatMarker() == true){
               printLog("Chat Marker ID\(message.chatMarkerID())")
             }else if (message.hasReceivedChatMarker() == true){
                  printLog("Chat Marker ID\(message.chatMarkerID())")
             }
    }

//对于显示标记我做了下面的事情。 - 当您使用 JID 从消息存档加载消息时。 loadArchivedMessagesFromJID - 方法

//message as XMPPMessageArchiving_Message_CoreDataObject
let msgReceived = XMPPMessage(from: msgElement)
                            msgReceived?.addDisplayedChatMarker(withID: message.message.elementID())
xmppStream.send(msgReceived)

让我知道我们可以用哪种正确的方式实现聊天标记协议。

开发工具:Xcode 8.3(Swift 3.0), 服务器:ejabberd

【问题讨论】:

  • 嗨,@Jay Mehta,你解决了吗?请帮助我实现相同的功能。

标签: swift xmpp chat ejabberd xmppframework


【解决方案1】:

ejabberd 仍然不支持 xep-0333

这是支持的 XEP 的链接:

Protocols Supported by ejabberd

【讨论】:

  • 那么实现以上XEP需要实现的功能?
猜你喜欢
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多