ios中的XMPP更改密码不起作用

Posted

技术标签:

【中文标题】ios中的XMPP更改密码不起作用【英文标题】:XMPP change password in ios not working 【发布时间】:2016-01-02 07:07:21 【问题描述】:

我正在开发一个基于聊天的应用程序并在我的 openfire 服务器上使用 xmpp,我想在 ios 中添加更改密码功能。我已经搜索了很多 fopr 更改密码功能 (xmpp) 并添加了一种更改密码的方法xmpp,但是没有成功。我不知道也没有任何想法,请帮助我,我的密码更改代码如下:

- (void)goOnline


     if (appDelegate.signInORnot == 1)
    
    self.connectionStatus = OTRProtocolConnectionStatusConnected;

    NSLog(@"Account totaltrip..%@",account.totalTrip);

   [[NSNotificationCenter defaultCenter] postNotificationName:kOTRProtocolLoginSuccess object:self userInfo:[NSDictionary dictionaryWithObject:account.totalTrip forKey:TOTAL_TRIP_KEY]];

    XMPPPresence *presence = [XMPPPresence presence]; // type="available" is implicit

     //Develop By Payal Done

        [[self xmppStream] sendElement:presence];

     [self changePassword];
    
-(BOOL)changePassword


    NSUserDefaults *standardUserDefaults = USERDEFAULT;
    NSString *passNew = nil;
            if (standardUserDefaults)
            passNew = [standardUserDefaults objectForKey:@"Newpwd"];
    NSUserDefaults *standardUserDefaults1 = USERDEFAULT;
    NSString *emailStr = nil;
    if (standardUserDefaults1)
        emailStr = [standardUserDefaults1 objectForKey:@"mailId"];


    NSUserDefaults *standardUserDefaults2 = USERDEFAULT;
    NSString *ID = nil;
    if (standardUserDefaults2)
        ID = [standardUserDefaults2 objectForKey:@"intglCode"];



    ID = [ID stringByAppendingString:@"@openfire.netcluesdemo.com"];
     NSLog(@"===passed JID===%@",ID);
   //NSString *myPassword = passNew;
        if (![_xmppStream isDisconnected]) 
            return YES;
        

//    NSString *myJID = [USERDEFAULT stringForKey: USERNAME];
//    NSString *myPassword = [USERDEFAULT stringForKey: PASSWORD];

    //CHANGE JIGAR
   NSString *myJID=ID;


    NSString *myPassword=passNew;

    if (myJID == nil || myPassword == nil) 
        return NO;
    

    [_xmppStream setMyJID:[XMPPJID jidWithString:myJID]];
   account.password = myPassword;
  //  _xmppRegistration = [[XMPPRegistration alloc] init];
//    if([OTRXMPPManager changePassword:myPassword])
//    
//        return YES;
//    

  return NO;


【问题讨论】:

您是否使用基于 Web 的管理面板。如果是,则:服务器的大多数管理都是通过 Web 界面完成的,默认情况下,该界面在端口 9090 (HTTP) 和 9091 (HTTPS) 上运行。管理员可以从任何地方连接并编辑服务器和配置设置。 我真的没有得到你亲爱的,但我真的需要你的帮助。 @KumarUtsav- 我仍在努力解决这个问题。你能帮帮我吗? 【参考方案1】:

使用以下changePassword:函数从openfire帐户更改用户密码:

-(void)changePassword:(NSString *)newPassword 

    NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:register"];

    NSXMLElement *username = [NSXMLElement elementWithName:@"username"
                                               stringValue:[self xmppStream].myJID.user];
    NSXMLElement *password = [NSXMLElement elementWithName:@"password"
                                               stringValue:newPassword];
    [query addChild:username];
    [query addChild:password];

    NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
    [iq addAttributeWithName:@"type" stringValue:@"set"];
    [iq addAttributeWithName:@"id" stringValue:[[self xmppStream] generateUUID]];
    [iq addChild:query];
    [[self xmppStream] sendElement:iq];

在此函数中,将新密码传入参数中。

【讨论】:

以上是关于ios中的XMPP更改密码不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用swift 3更改iOS中的按钮标题不起作用

iOS模拟器更改设备不起作用

无论我更改了多少文件,phpmyadmin登录都不起作用

XMPP 发送消息不起作用

iOS:XCUITest 中的模拟器位置不起作用

将消息发送到 XMPP 服务器的 php 函数不提供日志并且不起作用