如何在目标 c 中使用 xmpp 框架显示用户头像图像?

Posted

技术标签:

【中文标题】如何在目标 c 中使用 xmpp 框架显示用户头像图像?【英文标题】:How can i show user avatar image using xmpp framework in objective c? 【发布时间】:2013-07-31 08:04:00 【问题描述】:

我正在使用 XMPPFramework 为 iPhone 创建一个聊天应用程序。我想用用户名和照片在 UITableView 中显示用户列表,为此我正在使用

NSData *photoData = [[[self appDelegate] xmppvCardAvatarModule] photoDataForJID:user.jid];
if (photoData != nil)
    cell.imageView.image = [UIImage imageWithData:photoData];
else
    cell.imageView.image = [UIImage imageNamed:@"blank_image~iPhone.png"];

但它总是返回 nil。

请帮忙..

【问题讨论】:

什么返回 nil ?照片数据? if (photoData) cell.imageView.image = [UIImage imageWithData:photoData]; 【参考方案1】:
NSData *photoData = UIImagePNGRepresentation([[[self appDelegate] xmppvCardAvatarModule] photoDataForJID:user.jid]);

if (photoData)
    cell.imageView.image = [UIImage imageWithData:photoData];
else
    cell.imageView.image = [UIImage imageNamed:@"blank_image~iPhone.png"];

【讨论】:

【参考方案2】:

这段代码运行良好。

photoDataForJID 方法返回 NSData。

NSData *avtarData = [[[self appDelegate] xmppvCardAvatarModule] photoDataForJID:user.jid];

if (avtarData)
    cell.imageView.image = [UIImage imageWithData:photoData];
else
    cell.imageView.image = [UIImage imageNamed:@"blank_image~iPhone.png"];

【讨论】:

【参考方案3】:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(queue, ^

             NSData *imgData = UIImagePNGRepresentation([[[self appDelegate] xmppvCardAvatarModule] photoDataForJID:user.jid]);
            dispatch_async(dispatch_get_main_queue(), ^


if (imgData)
    cell.imageView.image = [UIImage imageWithData:imgData];
else
    cell.imageView.image = [UIImage imageNamed:@"default_user.png"];
            );
        );

【讨论】:

以上是关于如何在目标 c 中使用 xmpp 框架显示用户头像图像?的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C - 在 XEP 153 中显示来自 XMPPvCardAvatarModule 的头像图片?

如何在目标c中使用xmpp向特定组发送消息

无法从目标 c 中的 ejabbered xmpp 注册新用户

在 iphone sdk 中使用 xmpp 管理朋友?

使用 XMPP 框架在 Objective C 中传输文件

注册新用户时如何上传用户头像到服务器?