Проблема : я создаю приложение для чата iOS, используя XMPPFramework и сервер Openfire.Однако я не могу подключиться к серверу.Я могу , однако войти в систему с учетными записями GTalk или Facebook.Кроме того, я могу войти в учетную запись на своем собственном сервере, используя другой клиент Jabber, такой как Spark.
Код : Основой моего кода является следующий учебник: http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/
Вот где он подключается:
- (void)setupStream {
xmppStream = [[XMPPStream alloc] init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
}
- (BOOL)connect {
[self setupStream];
NSString *jabberID = [[NSUserDefaults standardUserDefaults] stringForKey:@"userID"];
NSString *myPassword = [[NSUserDefaults standardUserDefaults] stringForKey:@"userPassword"];
if (![xmppStream isDisconnected]) {
return YES;
}
if (jabberID == nil || myPassword == nil) {
return NO;
}
[xmppStream setMyJID:[XMPPJID jidWithString:jabberID]];
password = myPassword;
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];
[alertView release];
return NO;
}
return YES;
}
Обновление 19 марта : NSError никогда не заполняется, поэтому было трудно увидеть, что это за ошибка.Тем не менее, я отладил код и обнаружил ошибку в QueryRecordCallback
из XMPPSRVResolver
.Код ошибки -65554.После Google для этого я обнаружил ...
kDNSServiceErr_NoSuchRecord = -65554,
Однако я все еще не уверен, как решить эту проблему 'NoSuchRecord',Кроме того, регистрация на сервере OpenFire подразумевает, что мы даже не получаем доступ к серверу OpenFire.