2013-02-13 80 views
1

我想要實現XMPP架構在我的iOS應用程序,我已經完成了所有的(與其他用戶聊天,顯示其他用戶的存在等)無法註冊用戶XMPP聊天應用

不過的事情問題是,我無法獲得從我的應用程序註冊的新用戶。我使用下面的代碼是,

if ([appDel.xmppStream supportsInBandRegistration]) 
    [appDel.xmppStream registerWithPassword:txt_Password.text error:nil]; 

但對於這一點,supportsInBandRegistration方法總是返回NO,我不被調用此方法不會registerWithPassword。

如果有任何解決方案,請幫助我

回答

6

您使用的是什麼服務器?根據XEP-0077,有些服務器支持帶內註冊,即使認爲它們不會發送正確的流:功能。但是,他們中的大多數應該在迪斯科結果中給出該特徵。

---- OR ---- 您可以通過以下代碼解決此問題。它對我來說工作得很好。 :在 didNotAuthenticate方法:

- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate: 
(NSXMLElement *)error; 
{ 
NSLog(@"Did not authenticate"); 

[xmppStream registerWithPassword:[[NSUserDefaults 
standardUserDefaults] stringForKey:@"userPassword"] error:nil]; 

NSError * err = nil; 

if(![[self xmppStream] registerWithPassword:password error:&err]) 
{ 
    NSLog(@"Error registering: %@", err); 
} 

} 
- (void)xmppStreamDidRegister:(XMPPStream *)sender{ 

NSLog(@"I'm in register method"); 

    } 

- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement 
*)error{ 
NSLog(@"Sorry the registration is failed"); 

} 

我宣佈registerWithPassword:錯誤,因爲連接到它 是要通過在我的 註冊方法這個didNotAuthenticate方法服務器之後方法工作正常

+2

嗨,它的工作!... Thanx Vijay – user1790395 2013-02-13 12:23:08

+0

真的它的工作... – 2014-04-28 12:43:56

+0

我做了同樣的事情,但現在我總是得到xmmpStream:didNotRegister:因爲handleRegistration:xmppStream裏面的方法總是返回錯誤。我的jabber服務器有什麼問題? – Miroslav 2014-07-15 10:26:34

0

我與[xmppStream supportsInBandRegistration]方法返回false相同的問題,因爲我傳遞的是已在服務器中註冊的Jid。

[xmppStream setMyJID:[XMPPJID jidWithString:jabberID]]; 

更改JID爲我工作。

+0

嗨muhammadAamirALi你在jabberID中設置了什麼參數? – 2014-07-30 12:02:10