2014-09-22 4 views
3

Когда я посылаю приглашение, эта функция вызывается, но я не могу понять, какая строка кода должна использовать для принятия приглашения *. Я пытаюсь создать многопользовательский режим и несколько групп приглашение также называется сделал получил сообщение функция.
Многопользовательский чат Xmpp IOS. Я не нашел способ принять приглашение от группы? как я могу принять приглашение

- (void)xmppMUC:(XMPPMUC *) sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message 
{ 
} 
+0

моих чатов и в чате работает отлично я тестировал пользователь в моем приложении и локальный пользователь XMPP на IM сообщения ..both может поболтать в группе приглашение отлично работает. –

ответ

2

принять входящий приглашение:

- (void)xmppMUC:(XMPPMUC *)sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message 
{ XMPPRoom *mu = [[XMPPRoom alloc] initWithRoomStorage:xmpproomMstorage jid:roomJID 
              dispatchQueue:dispatch_get_main_queue()]; 

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

    self.toSomeOne = roomJID; 

    [mu activate: self.xmppStream]; 
    [mu fetchConfigurationForm]; 
    [mu addDelegate:self delegateQueue:dispatch_get_main_queue()]; 
    [mu joinRoomUsingNickname:xmppStream.YourJid.user history:nil password:@"Your Password"]; 
self.toSomeOne = roomJID; 
    XMPPPresence *presence = [XMPPPresence presence]; 
    [[self xmppStream] sendElement:presence]; 
    [xmppRoster addUser:roomJID withNickname:roomJID.full]; 
    [self goOnline]; 
} 
+0

Привет @shahbaz, Что такое self.toSomeone здесь? –

+1

@Sushil, этот метод вызывается, когда кто-то еще приглашает вас присоединиться к любой комнате - (void) xmppMUC: (XMPPMUC *) номер отправителяJID: (XMPPJID *) roomJID didReceiveInvitation: (XMPPMessage *) message {}. и self.toSomeOne = roomJID; , и мы должны вернуться принять или уклониться. для этого нам нужен кусок рецепта (тот же, что и номер телефона для ответа или отправки сообщения) self.toSomeOne = roomJID; в этой строке мы просто устанавливаем id recipty, и мы отправляем acception или уменьшаем последний код. Надеюсь, вы поймете, что еще спросите еще раз. –

+0

Спасибо @shahbaz, Как я могу узнать, принял ли пользователь запрос или нет? Я не могу загрузить данные из основных данных. Как и в режиме одноранговой беседы, мы можем получить весь чат от coredata. Но, в MUC, как мы можем сохранять и извлекать данные из основных данных? –

4

Это, как вы можете принять приглашение в группу. Вам просто нужно активировать протокол XMPPMUC, как показано ниже:

XMPPMUC * xmppMUC = [[XMPPMUC alloc] initWithDispatchQueue:dispatch_get_main_queue()]; 
[xmppMUC activate:_xmppStream]; 
[xmppMUC addDelegate:self delegateQueue:dispatch_get_main_queue()]; 

Чтобы принять входящее приглашение MUC:

- (void)xmppMUC:(XMPPMUC *)sender didReceiveRoomInvitation:(XMPPMessage *)message 
{ 
    NSXMLElement * x = [message elementForName:@"x" xmlns:XMPPMUCUserNamespace]; 
    NSXMLElement * invite = [x elementForName:@"invite"]; 
    if (!isEmpty(invite)) 
    { 
     NSString * conferenceRoomJID = [[message attributeForName:@"from"] stringValue]; 
     [self joinMultiUserChatRoom:conferenceRoomJID]; 

    } 
} 

- (void) joinMultiUserChatRoom:(NSString *) newRoomName 
{ 
    XMPPJID *roomJID = [XMPPJID jidWithString:newRoomName]; 
    XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init]; 
    xmppRoom = [[XMPPRoom alloc] 
       initWithRoomStorage:roomMemoryStorage 
       jid:roomJID 
       dispatchQueue:dispatch_get_main_queue()]; 
    [xmppRoom activate:[self xmppStream]]; 
    [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()]; 
    [xmppRoom joinRoomUsingNickname:@"YOUR NICKNAME" history:nil]; 
} 
+2

Теперь последний метод делегата: '- (void) xmppMUC: (XMPPMUC *) sender roomJID: (XMPPJID *) roomJID didReceiveInvitation: (XMPPMessage *) message'. Задерживался на несколько дней: '- (void) xmppMUC: (XMPPMUC *) отправитель didReceiveRoomInvitation: (XMPPMessage *) message'. –

+0

вы можете поделиться демонстрационной ссылкой? –

+0

Является ли эта группа MUC? Нужно ли присоединяться к этой группе каждый раз, когда пользователь становится в сети? – Sonu

0

В моем случае мне нужно использовать оба ответ и определить себя как

@interface XMPPDelegate : NSObject <XMPPMUCDelegate> 

Активация протокола XMPPMUC, как указано ниже:

XMPPMUC * xmppMUC = [[XMPPMUC alloc] 
initWithDispatchQueue:dispatch_get_main_queue()]; 
[xmppMUC activate:_xmppStream]; 
[xmppMUC addDelegate:self delegateQueue:dispatch_get_main_queue()]; 

Получать присоединиться сообщение:

- (void)xmppMUC:(XMPPMUC *)sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message 
{ 
    DDLogDebug(@"%@", message); 
    XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init]; 
    XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomMemoryStorage 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:password]; 
    XMPPPresence *presence = [XMPPPresence presence]; 
    [[self xmppStream] sendElement:presence]; 
    [xmppRoster addUser:roomJID withNickname:roomJID.full]; 
    [self goOnline]; 
} 
+0

вы можете поделиться демо-ссылкой? –