나는 XEP-0333 (채팅 마커)을 시도했지만 문제가있는 것처럼 WhatsApp 앱과 같은 메시지 상태를 표시해야한다는 점에서 하나의 채팅 앱을 개발 중입니다.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())")
}
}
// 표시 마커 I의 경우 아래 사항을 수행했습니다. - JID를 사용하여 메시지 보관함에서 메시지를로드 할 때. loadArchivedMessagesFromJID - 방법
는//message as XMPPMessageArchiving_Message_CoreDataObject
let msgReceived = XMPPMessage(from: msgElement)
msgReceived?.addDisplayedChatMarker(withID: message.message.elementID())
xmppStream.send(msgReceived)
날 우리가 채팅 마커 프로토콜을 구현할 수를 잘하는 방법을 알려주세요.
개발 도구 : 엑스 코드 8.3 (스위프트 3.0), 서버 : ejabberd
XEP를 구현해야하는 위의 기능을 수행 하시겠습니까? –