【问题标题】:how to update user avatar in XMPPvCardAvatarModule swift 3.0如何在 XMPPvCardAvatarModule swift 3.0 中更新用户头像
【发布时间】:2017-09-18 07:51:25
【问题描述】:
我正在使用 XMPPFramework 在我的 iOS 应用程序中聊天,但我需要在用户更新个人资料图片时更新用户头像,但我不知道我是如何实现这个的。我实现了 XMPPvCardAvatarModule 和 XMPPvCardTempModule 但我不明白如何将这些模块中的用户图片传递给其他用户。更新图片后,所有用户都会收到关于 Avatar 更新的 XMPP 通知。
任何人有想法请与我分享我是 XMPP 的新手。
提前致谢
【问题讨论】:
标签:
ios
swift
swift3
xmpp
xmppframework
【解决方案1】:
您可以通过
更改登录用户头像
#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];
}
});
}