Я разрабатываю приложение чата с использованием XMPPFrameworkIOS XMPPFramework - Комната/сообщения чата История
Как я могу получить историю сообщений после того, как присоединиться к существующей комнате?
Теперь я присоединиться к комнате, как это:
XMPPJID *roomJid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@conference.%@",systemName,xmppServer]];
xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:[XMPPRoomHybridStorage sharedInstance] jid:roomJid];
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppRoom activate:xmppStream];
NSXMLElement *history = [NSXMLElement elementWithName:@"history"];
[history addAttributeWithName:@"maxstanzas" stringValue:@"100"];
[xmppRoom joinRoomUsingNickname:user.deviceUUID history:history];
Также я прочитал пример из documentation
Согласно этому примеру, я также пытался присоединиться к комнате так:
XMPPJID *roomJid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@conference.%@",systemName,xmppServer]];
xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:[XMPPRoomHybridStorage sharedInstance] jid:roomJid];
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppRoom activate:xmppStream];
NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"];
[presence addAttributeWithName:@"from" stringValue:[NSString stringWithFormat:@"[email protected]%@",xmppServer]];
[presence addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"%@@conference.%@/%@",systemName,xmppServer,user.deviceUUID]];
NSXMLElement *x = [NSXMLElement elementWithName:@"x" xmlns:@"http://jabber.org/protocol/muc"];
NSXMLElement *history = [NSXMLElement elementWithName:@"history"];
[history addAttributeWithName:@"maxstanzas" stringValue:@"100"];
[x addChild:history];
[presence addChild:x];
[xmppRoom joinRoomUsingNickname:user.deviceUUID history:presence];
Я успешно присоединяюсь к комнате, но не получаю историю предыдущих сообщений.
Btw, если хотя бы один пользователь в комнате, я получаю все предыдущие сообщения, даже если я присоединиться к комнате, как:
[xmppRoom joinRoomUsingNickname:user.deviceUUID history:nil];
Если все пользователи оставляют места, а затем некоторые присоединиться еще раз - история пусто = (
Что я делаю неправильно? мне нужно, чтобы включить некоторые настройки на стороне сервера, чтобы сохранить историю делать (например, регистрация)?
И некоторые вопросы о примере из документации:
Что означает параметр «от»? Означает ли это, что я прошу историю сообщений в этой комнате только от пользователя bob? И что, если я хочу получать всю историю (сообщения от любых пользователей)?
Что означает параметр «id»? Я не нашел описания в документации.
Спасибо за ответ, я попробую его сегодня – stsmkrv
Дайте мне знать, это работает для меня! – Moral