java xmpp 群聊,使用XMPPFramework openfire创建聊天室

创建空间,如果已创建空间,您可以使用此代码轻松加入现有组

- (void)createOrEnterRoom:(NSString *)groupName

{

BOOL flag=valueExistInGroup(groupName);

if (flag==TRUE) {

savevalueInGroup(groupName);

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

XMPPJID *roomJID = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@conference.your_server_name",groupName]];

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];

}

else

{

NSString *strJid=[AppSetting getUserId];

strJid=[strJid stringByAppendingFormat:@"@your_server_name"];

_xmppRoomStorage = [XMPPRoomHybridStorage sharedInstance];

XMPPJID *roomJid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@conference.52.10.97.23",groupName]];

XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:_xmppRoomStorage jid:roomJid];

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

[xmppRoom activate:xmppStream];

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

[history addAttributeWithName:@"maxstanzas" stringValue:@"10"];

[xmppRoom joinRoomUsingNickname:strJid history:nil];

}

}

- (void)xmppRoomDidJoin:(XMPPRoom *)sender{

[sender fetchConfigurationForm];

}

- (void)fetchConfigurationForm

{

dispatch_block_t block = ^{ @autoreleasepool {

XMPPLogTrace();

//

// id='config1'

// to='coven@chat.shakespeare.lit'>

//

//

NSString *fetchID = [xmppStream generateUUID];

NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:XMPPMUCOwnerNamespace];

XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:roomJID elementID:fetchID child:query];

[xmppStream sendElement:iq];

[responseTracker addID:fetchID

target:self

selector:@selector(handleConfigurationFormResponse:withInfo:)

timeout:60.0];

}};

if (dispatch_get_specific(moduleQueueTag))

block();

else

dispatch_async(moduleQueue, block);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值