Я создаю приложение для чата с инфраструктурой xmpp.Как получить присутствие пользователя в xmpp
У меня есть настройки XMPPFramework в моем проекте, ссылаясь на эту ссылку: - http://code.tutsplus.com/tutorials/building-a-jabber-client-for-ios-xmpp-setup--mobile-7190
У меня есть проблема, чтобы получить наличие реестра в действительно получил присутствие.
- (void)xmppStream:(XMPPStream)sender didReceivePresence:(XMPPPresence)presence
{
DDLogVerbose(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, [presence fromStr]);
presenceType = [presence type]; // online/offline
//myUsername = [[sender myJID] user];
presenceFromUser = [[presence from] user];
//from = [[presence attributeForName:@"from"]stringValue];
//type=[[presence attributeForName:@"type"]stringValue];
NSLog(@"Present:%@",presenceType);
NSLog(@"StatusUser:%@",presenceFromUser);
[chlsttableview reloadData];
}
И в представлении таблицы я показываю присутствие пользователя как изображение зеленого или серого.
- (UITableViewCell)tableView:(UITableView)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cl=[tableView dequeueReusableCellWithIdentifier:@"chtlistprototype" forIndexPath:indexPath];
cl.fnm.text=[arrname objectAtIndex:indexPath.row];
cl.fmsg.text=[arrid objectAtIndex:indexPath.row];
cl.dpimg.image=img;
NSUInteger a=[arrid indexOfObject:cl.fmsg.text];
NSNumber *x=[NSNumber numberWithInteger:a];
if ([arrid containsObject:presenceFromUser]&&[presenceType isEqualToString:@"available"])
{
for (int i=0; i<arrid.count; i++)
{
// NSIndexPath *path=[NSIndexPath indexPathForRow:i inSection:0];
if ([[arrid objectAtIndex:indexPath.row]isEqualToString:presenceFromUser])
{
cl.stsimgvew.image=[UIImage imageNamed:@"green.png"];
}
/*NSString gt=[arrid objectAtIndex:indexPath.row];
NSUInteger n=[arrid indexOfObject:gt];
if (n==indexPath.row)
{
cl.stsimgvew.image=[UIImage imageNamed:@"green.png"];
}*/
}
}
return cl;
}
Итак, моя проблема заключается в том, что я не получаю должного присутствия изображения в Tableview. Я получаю одно присутствие за раз и перезаряжаю таблицу. Если у меня есть 5 друзей, значит, метод приема будет вызывать 5 раз для присутствия, а затем изображение присутствия будет отображаться только у последнего пользователя.
это является примером приложение, которое полностью работает, пройти через это, это поможет ua lot https://github.com/rayaleen/OpenFireClient –