XMPPFramework - 无法连接到Openfire Server

时间:2012-03-16 16:53:59

标签: ios xmpp xmppframework

问题:我正在使用XMPPFramework和Openfire Server创建iOS聊天应用。但是,我无法连接到服务器。我可以然后使用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;
}

3月19日更新:永远不会填充NSError,因此很难看出错误是什么。但是,我已通过代码进行了调试,并在QueryRecordCallback的{​​{1}}中发现错误。错误代码是-65554。谷歌之后,我发现了这个......

  

kDNSServiceErr_NoSuchRecord = -65554,

但是,我仍然不确定如何解决这个'NoSuchRecord'问题。 此外,登录OpenFire服务器意味着我们甚至没有进入OpenFire服务器。

1 个答案:

答案 0 :(得分:3)

问题可能是您的Openfire服务器不在公共域中。假设您的Openfire服务器在专用LAN服务器上运行,则全局DNS记录将无法指向它。

如果您有权访问可公开访问的域,请尝试将Openfire服务器放在提供此IP的计算机上。

通过阅读XMPPFramework的文档,这不应该导致问题,但它确实对我有用!