多くの人が試してみたら、私は正常にユーザーのカスタムロケーションを他のチャットユーザーに送信しました。
使用される拡張子:xep-0080
私は、この関数から送信する場所のため
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)
}
を言及する機能を持っているの下には、またdidReceiveMessageデリゲートのためのAndroid(SMACKのLib)
に場所を送ることができますメソッドで属性を確認できます。
if message.attribute(forName: "geoloc") != nil {
self.receivedLocationMsgFromUser(message: message, from: from)
}else{
self.receivedTextMsgFromUser(message: message, msgStr: msg, from: from)
}
あなたはこの質問で私を助けてください - ありがとうhttps://stackoverflow.com/questions/47391445/save-carbon-messages-xmppframework-ios 私は多くの日から、ここで立ち往生していてください。 –
@sohanvanani、私はあなたの質問を読んだことがあります。私は店のメッセージのために自分のデータベースを取ることを言う必要があります。 ejabberサーバーを使用している場合は、このXEPサポートをチェックするか、サーバー側で他のデバイスにオフラインメッセージをフェッチすることができます。 –
私は監視プラグインをインストールした場所でオープン・ファイアを使用しましたが、サーバー上にメッセージをアーカイブすることができました。ユーザーのクライアントにはまだ利用できないメッセージが必要です。 –