2017-04-21 71 views
1

我使用XMPPFramework在我的iOS应用程序中聊天,但我需要更新用户头像,同时用户更新那里的个人资料图片,但我不知道我如何实现这一点。我实现XMPPvCardAvatarModule和XMPPvCardTempModule,但我不明白如何将这些模块中的用户图片传递给其他用户。更新图片后,所有用户都可以获得头像更新的XMPP通知。如何更新XMPPvCardAvatarModule中的用户头像swift 3.0

任何人有想法请与我分享我是新的XMPP。

由于提前

回答

0

可以更改登录用户通过

#pragma mark - Update avatar image Methode. 
-(void)changeUserImage:(UIImage*)image { 

    NSData *imageData = UIImagePNGRepresentation(image); 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     //Create XML for first time VCARD Save. 
     NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"]; 
     NSXMLElement *photoXML = [NSXMLElement elementWithName:@"PHOTO"]; 
     NSXMLElement *typeXML = [NSXMLElement elementWithName:@"TYPE"stringValue:@"image/jpeg"]; 

     //Convert image to bbase64String 
     NSString *base64String = [imageData base64EncodedStringWithOptions:0]; 

     NSXMLElement *binvalXML = [NSXMLElement elementWithName:@"BINVAL" stringValue:base64String]; 

     [photoXML addChild:typeXML]; 
     [photoXML addChild:binvalXML]; 
     [vCardXML addChild:photoXML]; 

     //Update user avatar on local database. 
     XMPPvCardTemp *myvCardTemp = [[[XmppHandler sharedInstance] xmppvCardTempModule]myvCardTemp]; 
     NSLog(@"%@",myvCardTemp); 

     if (myvCardTemp) { 
      [myvCardTemp setPhoto:imageData]; 
      [[[self appDelegate] xmppvCardTempModule] updateMyvCardTemp 
      :myvCardTemp]; 

     } else { 

      XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML]; 
      [[[self appDelegate] xmppvCardTempModule] updateMyvCardTemp:newvCardTemp]; 
     } 
    }); 
} 
头像图片