Я разрабатываю приложение для iPhone, одной из функций которого является система мгновенных сообщений с использованием XMPPFramework. Сейчас я тестирую его с помощью Google Talk. Делегат — это тот же класс, который управляет пользовательским интерфейсом. Итак, я получил этот код:
В представленииDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupStream];
}
Метод setupStream:
- (void) setupStream
{
NSLog(@"Inside setupStream");
xmppStream = [[XMPPStream alloc] init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
[self connect];
}
Способ подключения:
- (BOOL) connect
{
NSLog(@"Inside connect method");
General *general = [General sharedManager];//this is a singleton to manage settings for every user
NSString *chatid;
NSString *chatpass;
//chatid=[general user];
chatid=@"[email protected]";
xmppStream.myJID=[XMPPJID jidWithString:chatid];
if (![xmppStream isDisconnected]) {
return YES;
}
NSError *error = nil;
if (![xmppStream connect:&error])
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:[NSString stringWithFormat:@"Can't connect to server %@", [error localizedDescription]]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
return NO;
}
return YES;
}
В методе xmppStreamDidConnect:
- (void) xmppStreamDidConnect:(XMPPStream *)sender
{
[xmppStream authenticateWithPassword:@"password" error:NULL];
[self goOnline];
}
И метод goOnline:
- (void) goOnline
{
XMPPPresence *presence = [XMPPPresence presence];
[[self xmppStream] sendElement:presence];
NSLog(@"Presence sent");
}
При этом присутствие не отправляется. У меня есть другая учетная запись google, которую я пробую для тестирования (скажем, [email protected]), и в этой учетной записи не видно присутствия somegmailaccount.gmail.com. Обе учетные записи связаны и знают друг друга, так как я использовал эти же учетные записи для разработки приложения для Android.
Любая идея о том, что я делаю неправильно? Любая помощь приветствуется.
Спасибо большое.