2017-10-10 195 views
0

我正在開發一個聊天應用程序,我需要顯示消息狀態,如WhatsApp應用程序,因爲我已經嘗試XEP-0333(聊天標記),但面臨問題像。如何在iOS應用程序中實現XEP-0333?

1)從另一端獲得接收標記XMPPMessage存檔沒有更新的消息與接收標記(在覈心數據中,消息聊天標記狀態未更新)。

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(雨燕3.0), 服務器:ejabberd

回答

相關問題