2016-12-01 1 views
0

私はroomnameを設定することができないXMPPRoomを作成しようとしています。スタンザ形式も受け取っていますが、ルーム名は含まれていません。roomNameを見ることができるバックエンドでこの問題を解決するために手伝ってください。XMPPRoomを作成するときにroomName(グループ名)を設定して取得する方法は?

ここではxmppRoomを作成するのは私のコードです。あなたのコードで

func createGroupChat(){ 

    // membersToInvite = members 

    let xmppRoomMemoryStorage = XMPPRoomMemoryStorage() 

    let currentTimeMills = self.currentTimeMillis() 
    let createdBy = (appDelegate.xmppStream?.myJID.user)! as String 

    let jidString = String(format: "group%@_%@%@",currentTimeMills,createdBy,"@conference.hostname") 

    let xmppJid = XMPPJID(string: jidString) 
    let xmppRoom = XMPPRoom.init(roomStorage: xmppRoomMemoryStorage, jid: xmppJid) 


    xmppRoom?.activate(appDelegate.xmppStream) 
    xmppRoom?.addDelegate(self, delegateQueue: DispatchQueue.main) 
    xmppRoom?.join(usingNickname: appDelegate.xmppStream?.myJID.full(), history: nil) 

} 

func xmppRoomDidCreate(_ sender: XMPPRoom!) { 

    print(sender) 

} 


func xmppRoomDidJoin(_ sender: XMPPRoom!) { 

    sender.fetchConfigurationForm() 

    for JID in selectedParticipantsAry { 

     sender.editPrivileges([XMPPRoom.item(withAffiliation: "member", jid: XMPPJID(string: JID as! String))]) 

     sender.inviteUser(XMPPJID(string: JID as! String), withMessage: "THIS IS GROUP MESSAGE") 

    } 

} 


func xmppRoom(_ sender: XMPPRoom!, didFetchConfigurationForm configForm: DDXMLElement!) 
{ 

    let newConfig: DDXMLElement = configForm.copy() as! DDXMLElement 
    let fields = newConfig.elements(forName: "field") 

    for field in fields { 
     let vars = field.attribute(forName: "var") 
     // Make Room Persistent 
     if (vars?.stringValue == "muc#roomconfig_persistentroom") { 
      field.removeChild(at: 0) 
      field.addChild(DDXMLElement(name: "value", stringValue : "1")) 

     }else if (vars?.stringValue == "muc#roomconfig_roomname"){ 

      field.removeChild(at: 0) 
      field.addChild(DDXMLElement(name: "value", stringValue : "GroupNameString")) 
     } 
    } 

    sender.configureRoom(usingOptions: newConfig) 

} 

    func xmppStream(_ sender: XMPPStream!, didSend message: XMPPMessage!){ 

<message to="[email protected]"><x xmlns="http://jabber.org/protocol/muc#user"><invite to="[email protected]"> <reason>THIS IS GROUP MESSAGE</reason></invite></x></message> 

} 

func xmppStream(_ sender: XMPPStream!, didReceive message: XMPPMessage!){ 

    <message xmlns="jabber:client" from="group148057strong [email protected]" to="[email protected]/33932018081480575881630558" type="groupchat" id="75252205"><x xmlns="http://jabber.org/protocol/muc#user"><status code="104"></status></x> </message> 
} 

答えて

0

、二つの異なるRoom Nameあります

  1. groupxxx(フォーマット文字列

    に: "グループ%@ _%@%@"、currentTimeMills、CREATEDBY、」 @ conference.hostname ")の形式の

です。

  1. GroupNameStringが設定フォームに設定されています。

お話はありますか?

#1の場合、それはfromというスタンザ内にあるので、jidから取り出してください。

#2の場合、スタンザには含まれませんので、客室情報をリクエストする必要があります。 http://xmpp.org/extensions/xep-0045.html#disco-roominfo

+0

ご回答いただきありがとうございます。私は#2についてお話しています。どのように私は部屋の情報をリクエストできますか? – Bucket

+0

@Bucket私が送ったリンクをチェックすると、あなたは部屋の情報を問い合わせる必要があります。 – dichen

+0

ありがとう、ここで私はクエリを要求していますが運がありません。 – Bucket

関連する問題