Après plusieurs tentatives, j'ai réussi à envoyer l'emplacement personnalisé de l'utilisateur à un autre utilisateur de chat.
extensions d'occasion: xep-0080
Ci-dessous j'ont une fonction de mention pour envoyer Lieu
public class func sendLocationMessage(msg:String,lat : String ,long : String ,to receiver: String,completionHandler completion:@escaping XMPPMessageMngCompletionHandler){
let body = DDXMLElement.element(withName: "body") as! DDXMLElement
let messageID = XMPPConnect.sharedInstance.xmppStream.generateUUID()
body.stringValue = "Location"
let completeMessage = DDXMLElement.element(withName: "message") as! DDXMLElement
let reuestElemetn = DDXMLElement.element(withName: "request", stringValue: "urn:xmpp:receipts")
completeMessage.addChild(reuestElemetn as! DDXMLNode)
completeMessage.addAttribute(withName: "id", stringValue: messageID!)
completeMessage.addAttribute(withName: "type", stringValue: "chat")
completeMessage.addAttribute(withName: "to", stringValue: receiver)
completeMessage.addChild(body)
let geoElemetn = DDXMLElement.element(withName: "geoloc") as! DDXMLElement
geoElemetn.addAttribute(withName: "xmlns", stringValue: "http://jabber.org/protocol/geoloc")
let latElement = DDXMLElement.element(withName: "lat") as! DDXMLElement
latElement.stringValue = lat
geoElemetn.addChild(latElement);
let lngElement = DDXMLElement.element(withName: "lon") as! DDXMLElement
lngElement.stringValue = long
geoElemetn.addChild(lngElement);
let uriElement = DDXMLElement.element(withName: "uri") as! DDXMLElement
uriElement.stringValue = msg; //google map image url.
geoElemetn.addChild(uriElement)
completeMessage.addChild(geoElemetn)
sharedInstance.didSendMessageCompletionBlock = completion
XMPPConnect.sharedInstance.xmppStream?.send(completeMessage)
}
De cette fonction vous pouvez également envoyer lieu à Android (SMACK Lib)
Pour didReceiveMessage délégué méthode, vous pouvez vérifier l'attribut.
if message.attribute(forName: "geoloc") != nil {
self.receivedLocationMsgFromUser(message: message, from: from)
}else{
self.receivedTextMsgFromUser(message: message, msgStr: msg, from: from)
}
Pouvez-vous s'il vous plaît me aider avec cette question - https://stackoverflow.com/questions/47391445/save-carbon-messages-xmppframework-ios Je suis coincé S'il vous plaît ici de nombreux jours merci. –
@sohanvanani, j'ai lu votre question, la première chose que je dois dire que prendre votre propre base de données pour les messages de magasin. Si vous utilisez le serveur ejabber, vérifiez ce support XEP ou activez tout le côté serveur pour récupérer les messages hors ligne sur un autre périphérique. –
J'ai utilisé le feu ouvert où j'ai installé le plugin de surveillance et je suis capable d'archiver des messages sur le serveur Je veux que les messages qui ne sont pas déjà disponibles pour les clients de l'utilisateur. –