Мы создаем приложение чата в IOS с использованием XMPPFramework на стороне клиента (https://github.com/robbiehanson/XMPPFramework) и Ejabberd на стороне сервера.IOS XMPPFramework и Joining Rooms
В групповом чате мы создаем группу и после этого присоединяемся к этой группе и приглашаем других пользователей присоединиться к нашей группе. И каждый раз, когда новый приглашенный пользователь присоединяется к группе, мы сообщаем всем участникам, что новый пользователь присоединился к группе.
Однако, когда мы перезапускаем приложение (убиваем и перезапускаем), мы сохраняем имя пользователя этой группы и снова присоединяемся к нему (вы можете найти пример ниже), но в этом случае ejabberd отправит всех клиентов, к которым присоединился новый пользователь но я уже был в этой группе, только разница в том, что я перезапустил приложение. Как я могу разграничить эти две вещи?
NSString *nickName = [[NSUserDefaults standardUserDefaults]objectForKey:userNickName];
XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init];
XMPPJID *roomJID = [XMPPJID jidWithString:uniqId];
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:nickName history:nil];