1

iOS アプリに XMPP フレームワークを実装したいのですが、(他のユーザーとのチャット、他のユーザーの存在の表示など) ですべてのことを完了しました。

しかし、問題は、アプリから新しいユーザーを登録できないことです。そのために次のコードを使用しています。

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

しかし、このため、supportsInBandRegistration メソッドは常に NO を返し、メソッド never registerWithPassword: が呼び出されません。

解決策があれば助けてください

4

2 に答える 2

6

どのサーバーを使用していますか? 一部のサーバーは、XEP-0077 に従って正しい stream:feature を送信しない場合でも、インバンド登録をサポートします。ただし、それらのほとんどは、ディスコの結果で機能を提供する必要があります。

---- または ---- これは次のコードで解決できます。それは私にとってはうまくいっています。:

- (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"); 

} 

didNotAuthenticate: メソッドで registerWithPassword:error: メソッドを宣言します。これは、サーバーへの接続後、登録メソッドが正常に機能している場所からこの didNotAuthenticate メソッドに移動するためです。

于 2013-02-13T12:20:19.893 に答える
0

[xmppStream supportsInBandRegistration]サーバーに既に登録されているJidを渡していたため、メソッドがfalseを返すという同じ問題がありました。

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

JIDの変更は私のために働いた。

于 2014-02-13T08:14:41.390 に答える