2012-03-16 75 views
1

問題:我創建使用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服務器。

回答

3

的問題很可能是不是在公共領域您的Openfire服務器。假設您的Openfire服務器正在專用LAN服務器上運行,則全局DNS記錄將無法指向它。

如果您有權訪問可公開訪問的域,請嘗試將Openfire服務器放置在提供此IP的計算機上。

從閱讀XMPPFramework的文檔,這應該不會造成問題,但我做到了!