XMPPFramework - 无法连接到服务器的Openfire

问题描述:

问题:我创建使用XMPPFramework和Openfire的服务器在iOS聊天应用。但是,我无法连接到服务器。我可以与GTalk的或Facebook账户但是登录。此外,我可以使用另一个Jabber客户端(如Spark)在我自己的服务器上登录该帐户。XMPPFramework - 无法连接到服务器的Openfire

代码:我的代码的基础是从以下教程: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是从来没有填充所以这是很难看出错误是什么。不过,我已经通过代码调试,并在XMPPSRVResolverQueryRecordCallback发现错误。错误代码是-65554。这一个谷歌之后,我发现这个...

kDNSServiceErr_NoSuchRecord = -65554,

但是,我仍然不确定如何解决这个 'NoSuchRecord' 的问题。 此外,Openfire的服务器上的日志记录意味着我们甚至没有获得到的Openfire服务器。

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

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

从阅读XMPPFramework的文档,这应该不会造成问题,但我做到了!