XMPPFramework - не удается подключиться к серверу Openfire - PullRequest
1 голос
/ 16 марта 2012

Проблема : я создаю приложение для чата 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.

1 Ответ

3 голосов
/ 19 марта 2012

Возможно, проблема в том, что ваш сервер Openfire не находится в публичном домене.Предполагая, что ваш сервер Openfire работает на сервере частной локальной сети, глобальные записи DNS не смогут указывать на него.

Если у вас есть доступ к общедоступному домену, попробуйте разместить сервер Openfire на компьютере, которыйобслуживает этот IP.

Из прочтения документации по XMPPFramework это не должно вызывать проблем, но у меня это получилось!

...