xmppframework iphone无法将用户添加到组中

问题描述 投票:0回答:1

我正在尝试使用XMPPFramework制作聊天应用程序。我完成了连接设置。我也可以聊聊单用户。我还可以创建一个用于在多个用户之间进行聊天的组。我的问题是在创建组后,当我想将用户添加到组中时不起作用。这里是我用过的代码。而且,我没有得到任何调用这种方法didFetchModeratorsList:

Step-1
#pragma mark --- Create Room
- (void) createChatRoom:(NSString *)groupName{
    if (!groupName)
    {
        return;
    }

    XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init];

    NSString* roomID = [NSString stringWithFormat:@"%@@conference.%@", groupName, CURRENT_HOST_NAME];
    XMPPJID * roomJID = [XMPPJID jidWithString:roomID];
    XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomStorage
                                                           jid:roomJID
                                                 dispatchQueue:dispatch_get_main_queue()];


    [xmppRoom activate:xmppStream];
    [xmppRoom addDelegate:self
            delegateQueue:dispatch_get_main_queue()];

    /*
     NSXMLElement *history = [NSXMLElement elementWithName:@"history"];
     [history addAttributeWithName:@" maxchars" stringValue:@"0"];
     */
    [xmppRoom joinRoomUsingNickname:xmppStream.myJID.user
                            history:nil
                           password:nil];

    [self performSelector:@selector(ConfigureNewRoom:) withObject:nil afterDelay:3];


}

Step-2
#pragma mark --- addMemberInChatRoom
- (void) addMemberInChatRoom:(NSString*)roomName :(NSArray*)memberId{
    NSLog(@"roomName: %@", roomName);
    NSLog(@"memberId: %@", memberId);

    XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init];
    NSString* roomID = [NSString stringWithFormat:@"%@@conference.%@", roomName, CURRENT_HOST_NAME];
    XMPPJID * roomJID = [XMPPJID jidWithString:roomID];
    XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomStorage
                                                           jid:roomJID
                                                 dispatchQueue:dispatch_get_main_queue()];
    [xmppRoom activate:xmppStream];
    [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];

    [xmppRoom joinRoomUsingNickname:xmppStream.myJID.user
                            history:nil
                           password:nil];

    [self performSelector:@selector(ConfigureNewRoom:) withObject:nil afterDelay:1];



     [xmppRoom inviteUsers:memberId withMessage:@"join this room"];

}

Step-3
 #pragma mark ---  This fuction is used configure new
- (void)ConfigureNewRoom:(XMPPRoom *)xmppRoom
{
    [xmppRoom configureRoomUsingOptions:nil];
    [xmppRoom fetchConfigurationForm];
    //[xmppRoom fetchBanList];
    [xmppRoom fetchMembersList];
    //[xmppRoom fetchModeratorsList];
}

Step-4
- (void)xmppRoom:(XMPPRoom *)sender didFetchModeratorsList:(NSArray *)items
{
    NSLog(@"%@: %@ --- %@", THIS_FILE, THIS_METHOD, sender.roomJID.bare);

}
objective-c iphone xcode openfire xmppframework
1个回答
0
投票

我认为你正在使用两个不同的实例。使用下面的东西。这对我有用。

private var toBeCreatedRoom: XMPPRoom!

func createRoom(_ roomName: String) {
  let roomStorage = XMPPRoomMemoryStorage()
  let name = roomName + "@conference." + "hostName"
  let roomJID = XMPPJID(string: name)
  toBeCreatedRoom = XMPPRoom(roomStorage: roomStorage!, jid: roomJID!, dispatchQueue: DispatchQueue.main)
  toBeCreatedRoom.addDelegate(self, delegateQueue: DispatchQueue.main)
  toBeCreatedRoom.activate(self.xmppStream)
  toBeCreatedRoom.join(usingNickname: "self.userName", history: nil, password: nil)
}

func inviteUsersToRoom(roomMembers: [XMPPJID]) {
  if let room = toBeCreatedRoom {
    for member in roomMembers {
      let element = XMPPRoom.item(withAffiliation: "member", jid: member)
      room.editPrivileges([element])
      room.inviteUser(member, withMessage: "Hey, Welcome to the group!")
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.