どのサーバーを使用していますか? 一部のサーバーは、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 メソッドに移動するためです。