如何在ios中的XMPPFrameWork中创建新用户帐户
您好,我已经尝试了一些在IOS中使用XMPPFrameWork注册新用户的代码如何在ios中的XMPPFrameWork中创建新用户帐户,ios,registration,xmppframework,Ios,Registration,Xmppframework,您好,我已经尝试了一些在IOS中使用XMPPFrameWork注册新用户的代码 -(IBAction)Registaton:(id)sender { // iPhoneXMPPAppDelegate *appDelegate =(iPhoneXMPPAppDelegate *)[[UIApplication sharedApplication]delegate]; [[[self appDelegate] xmppStream] connectWithTimeout:XM
-(IBAction)Registaton:(id)sender
{
// iPhoneXMPPAppDelegate *appDelegate =(iPhoneXMPPAppDelegate *)[[UIApplication sharedApplication]delegate];
[[[self appDelegate] xmppStream] connectWithTimeout:XMPPStreamTimeoutNone error:nil];
NSString *username = self.username.text;
NSString *password = self.password.text;
NSString *name =self.name.text;
NSString *email=self.email.text;
NSMutableArray *elements = [NSMutableArray array];
[elements addObject:[NSXMLElement elementWithName:@"username" stringValue:username]];
[elements addObject:[NSXMLElement elementWithName:@"password" stringValue:password]];
[elements addObject:[NSXMLElement elementWithName:@"name" stringValue:name]];
[elements addObject:[NSXMLElement elementWithName:@"email" stringValue:email]];
[[[self appDelegate] xmppStream] registerWithElements:elements error:nil];
NSLog(@"Register ====%@",[[self appDelegate] xmppStream]);
//[[[self appDelegate] xmppStream] registerWithPassword:elements error:nil];
}
但通过这种方法,我无法在服务器上注册。它让我连接到Xmppstream,请稍候。。有谁能帮助我如何在ios中使用XMPPFrameWork在服务器上创建新帐户 试试这个。这对我来说很好
- (void)updateAccountInfo
{
//NSString *domain = [[NSString alloc] initWithString:@"192.168.1.100"];
//int port = 5222;
NSString *usname =[[NSString alloc] initWithString:self.txtUsername.text];
NSString *juser =[[NSString alloc] initWithString:[usname stringByAppendingString:@"your server ip"]];
XMPPJID *jid = [XMPPJID jidWithString:juser];
[self xmppStream].myJID =jid;
allowSelfSignedCertificates = NSOnState;
allowSSLHostNameMismatch = NSOnState;
NSUserDefaults *dflts = [NSUserDefaults standardUserDefaults];
//[dflts setObject:domain forKey:@"Account.Server"];
// [dflts setObject:(port ? [NSNumber numberWithInt:port] : nil)
// forKey:@"Account.Port"];
[dflts setObject:juser
forKey:@"Account.JID"];
[dflts setObject:@"ios"
forKey:@"Account.Resource"];
[dflts setBool:useSSL forKey:@"Account.UseSSL"];
[dflts setBool:allowSelfSignedCertificates forKey:@"Account.AllowSelfSignedCert"];
[dflts setBool:allowSSLHostNameMismatch forKey:@"Account.AllowSSLHostNameMismatch"];
[dflts setBool:YES forKey:@"Account.RememberPassword"];
[dflts setObject:self.txtPasswd.text forKey:@"Account.Password"];
[dflts synchronize];
}
- (void)createAccount
{
[self updateAccountInfo];
NSError *error = nil;
BOOL success;
if(![[[self appDelegate] xmppStream] isConnected])
{
if (useSSL)
success = [[self xmppStream] oldSchoolSecureConnectWithTimeout:XMPPStreamTimeoutNone error:&error];
else
success = [[self xmppStream] connectWithTimeout:XMPPStreamTimeoutNone error:&error];
}
else
{
//NSString *password = [[NSString alloc] initWithString:@"321" ];
success = [[self xmppStream] registerWithPassword:self.txtPasswd.text error:&error];
}
if (success)
{
[self appDelegate].isRegistering = YES;
}
else
{
NSLog(@"not succeed ");
}
}
- (void)xmppStreamDidRegister:(XMPPStream *)sender{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Registration" message:@"Registration with XMPP Successful!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error{
DDXMLElement *errorXML = [error elementForName:@"error"];
NSString *errorCode = [[errorXML attributeForName:@"code"] stringValue];
NSString *regError = [NSString stringWithFormat:@"ERROR :- %@",error.description];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Registration with XMPP Failed!" message:regError delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
if([errorCode isEqualToString:@"409"]){
[alert setMessage:@"Username Already Exists!"];
}
[alert show];
}
对我来说,这是一种简单有效的方法
NSString *username = @"rohit@XMPP_SERVER_IP_HERE"; // OR [NSString stringWithFormat:@"%@@%@",username,XMPP_BASE_URL]]
NSString *password = @"SOME_PASSWORD";
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
del.xmppStream.myJID = [XMPPJID jidWithString:username];
NSLog(@"Does supports registration %ub ", );
NSLog(@"Attempting registration for username %@",del.xmppStream.myJID.bare);
if (del.xmppStream.supportsInBandRegistration) {
NSError *error = nil;
if (![del.xmppStream registerWithPassword:password error:&error])
{
NSLog(@"Oops, I forgot something: %@", error);
}else{
NSLog(@"No Error");
}
}
// You will get delegate called after registrations in either success or failure case. These delegates are in XMPPStream class
// - (void)xmppStreamDidRegister:(XMPPStream *)sender
//- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error
您需要使用XEP-0077带内注册@Bhumeshwerkatre是否有任何教程或代码?事实上,我的XMPPFrameWork中没有XEP-0077类。从哪里可以获得XEP-0077?在网上搜索,您肯定可以找到XEP-0077的实现。并根据您的需要定制。这是给您的ref@Bhumeshwerkatre我将尝试使用此代码。从connectWithTimeout调用此获取上次调用的iPhone XMppappDelegate:xmppStream:didNotAuthenticate:…您能帮我吗?
使用未声明的标识符:allowSelfSignedCertificates和NSState
,我应该定义哪个文件或属性?didNotRegister错误:NSXMLElement错误#使用未声明的类型。有解决办法吗@DeepakKumar@AkleshRathaur你能给我解释一下登录密码吗。