私はXEP-0333(チャットマーカー)を試してみたが、問題に直面しているため、WhatsAppアプリのようなメッセージステータスを表示する必要があるという点で、1つのチャットアプリを開発しています。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)
は私たちがチャットマーカープロトコルを実装することができますでの正しい方法を知ってみましょう。
開発ツール:Xcodeの8.3(スウィフト3.0)、 サーバー:ejabberd
上記のXEPを実装する必要がある機能を実現しますか? –