我创建(又一个)使用Smack和ejabberd的移动聊天应用。我试图确定实现用户头像以供多用户聊天室使用的最佳方式,当然也包括名单成员。看看可能的解决方案,我可以看到:XMPP支持多用户聊天中的头像
- XEP-0008基于IQ的头像 - 头像被限制为64 x 64像素,太小。
- XEP-0153基于vCard的头像 - 易于在名单和MUC房间中为两个用户实现,然而(a)像this这样的源似乎表明自己的vcard需要在每次登录时下载(这是严格正确的(b)应该小于96乘96像素(仍然非常小)
- XEP-0084基于个人事件协议的用户头像 - 我不清楚我如何可以基于此协议检索多用户聊天室中的所有用户的头像。加入聊天室后,我需要订阅所有用户的元数据节点,以及随后加入的用户?当他们离开房间时也取消订阅?我认为这将是非常难看和笨拙的实施。
有人能指点我在正确的方向,或指出我可能误解的地方吗?谢谢。
您是否试过XEP-0054? – souvickcse
谢谢@souvickcse,我明白XEP-0153是建立在XEP-0054之上的。但是,我发现我可以在XEP-0053中使用vCard的BINVAL和EXTVAL字段来存储图像数据或URI到图像。一些问题:1.对于我们可以在BINVAL中存储的数据的大小,是否存在实际或理论上的限制?我在规范2中看不到任何内容:用户自己的vCard是否需要在每次登录时重新加载?这只是确保跨客户端同步的一项要求吗? 3.是否有一种方法可以使用现有的XMPP头像规范之一来实现此目标(例如标准且交叉兼容)? – Dave
嗨,我没有那么多的想法(对此感到抱歉)我已经在我的项目中使用过这个使用https://github.com/robbiehanson/XMPPFramework代码:'NSData * photoData = [[[AppDelegate delegate ] xmppvCardAvatarModule] photoDataForJID:user.jid];' – souvickcse