如何使用xmppframework创建一个新的聊天组?

时间:2014-04-09 13:49:13

标签: ios chat ejabberd xmppframework instant-messaging

您好我正在IOS中开发一个聊天应用程序并完成一对一的聊天,在搜索了很多关于groupChat的内容后,无法在xmppframework中创建一个正常的组。

我在这里尝试的是一个链接

  

iOS XMPP group chat implementation

     

Accepting chatroom invitation

     

How to create MultiUserChatRoom using XMPPFramework in iPhone

     

XMPPFramework - How to Create a MultiUserChat Rooms?

但是没有得到上述链接的任何积极回应,

在编码中我试过

XMPPRoomCoreDataStorage *rosterstorage = [[XMPPRoomCoreDataStorage alloc] init];
    XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:rosterstorage jid:[XMPPJID jidWithString:@"test@conference.domainName.com/rohit"] dispatchQueue:dispatch_get_main_queue()];
    [xmppRoom configureRoomUsingOptions:nil];
    [xmppRoom activate:[self xmppStream]];
    [xmppRoom addDelegate:self
            delegateQueue:dispatch_get_main_queue()];
    [xmppRoom inviteUser:[XMPPJID jidWithString:@"abc@domainName.com"] withMessage:@"Hi join room"];

也是这个

- (void)createOrEnterRoom:(NSString *)roomName
{
    //here we enter a room, or if the room does not yet exist, this method creates it
    //per XMPP documentation: "If the room does not yet exist, the service SHOULD create the room"
    //this method accepts an argument which is what you would baptize the room you wish created
    XMPPPresence *presence = [XMPPPresence presence];
    NSString *room = [roomName stringByAppendingString:@"@conference.domain.com"];
    [presence addAttributeWithName:@"to" stringValue:room];
    NSXMLElement *x = [NSXMLElement elementWithName:@"x" xmlns:@"http://jabber.org/protocol/muc"];
    NSXMLElement *history = [NSXMLElement elementWithName:@"history"];
    [history addAttributeWithName:@"maxstanzas" stringValue:@"50"];
    [x addChild:history];
    [presence addChild:x];
    [[self xmppStream] sendElement:presence];
}

最后一个是

-(void)createGroup
{
    @try {
        NSString *username=@"user_3";//[self.userDefault valueForKey:@"userid"];

        NSXMLElement *presenceElement=[NSXMLElement elementWithName:@"presence"];

        [presenceElement addAttributeWithName:@"type" stringValue:@"groupchat"];

        [presenceElement addAttributeWithName:@"from" stringValue:[NSString stringWithFormat:@"%@%@",username,HostName]];

        [presenceElement addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"testGroup@conference.%@/%@",HostName,username]];

        NSXMLElement *xElement=[NSXMLElement elementWithName:@"x" xmlns:@"http://jabber.org/protocol/muc"];

        NSXMLElement *historyElement=[NSXMLElement elementWithName:@"history"];

        [xElement addChild:historyElement];

        [presenceElement addChild:xElement];

        [self.xmppStream sendElement:presenceElement];
    }
    @catch (NSException *exception) {
    }


}

任何人都请告诉我解决这个问题的方法。如果我们需要在ejjabered配置中配置额外的东西,请告诉我。

4 个答案:

答案 0 :(得分:2)

请在这里找到最好最详细的答案。

  

Trouble creating xmpp muc room: Code 503 (service unavailable)

答案 1 :(得分:1)

XMPP不提供事实组聊天,XMPP是您使用XMPPRoom创建的聊天室, 或者你可以说对话。 你不能发送离线组消息。

我已经在http://www.catchbuddies.com/项目中借助其他自定义服务器实现了群聊。

您可以在一些团体网站的帮助下制作和配置群聊。

答案 2 :(得分:1)

对于 muc_room 的群组创建更改设置。也更喜欢这个网址会建议设置https://serverfault.com/questions/185770/configuring-ejabberd-for-multi-user-chat

的方式

答案 3 :(得分:0)

您应该检查ejabberd服务器配置的muc设置。 确保muc主机设置正确。

在我的情况下,我将主机更改为{host," pub。@ HOST @"},然后我尝试加入会议室" test @ conference。@ HOST @"总是得到服务不可用的错误,我花了整整一夜才修好。

另外,您可以使用管理员用户登录您的jabber服务器imessage,并在运行ios客户端之前创建聊天室。

将ejabberd日志级别更改为debug可能会有很大帮助。