【发布时间】:2015-09-06 06:37:29
【问题描述】:
我正在使用 Smack 和 ejabberd 创建(又一个)移动聊天应用程序。我正在尝试确定实现用于多用户聊天室的用户头像的最佳方式,当然也适用于名册成员。查看可能的解决方案,我可以看到:
- XEP-0008 基于 IQ 的头像 - 头像被限制为 64 x 64 像素,太小了。
- XEP-0153 基于 vCard 的化身 - 易于为花名册和 MUC 房间中的用户实现,但是 (a) 诸如 this 之类的来源似乎表明每次登录时都需要下载自己的 vcard(这是绝对正确?我在规格中看不到这一点),并且 (b) 应该小于 96 x 96 像素(仍然很小)
- XEP-0084 基于个人事件协议的用户头像 - 我不清楚如何在基于此协议的多用户聊天室中检索所有用户的头像。加入聊天室后,我需要订阅所有用户的元数据节点,还有后续加入的用户吗?当他们离开房间时也取消订阅?我认为这将很难实现且笨拙。
谁能指出我正确的方向,或者指出我可能误解了哪里?谢谢。
【问题讨论】:
-
你试过 XEP-0054 吗?
-
谢谢@souvickcse,我知道 XEP-0153 是建立在 XEP-0054 之上的。但是,我发现我可以利用 XEP-0053 中 vCard 的 BINVAL 和 EXTVAL 字段来存储图像数据或图像的 URI。一些问题: 1.我们可以存储在 BINVAL 中的数据大小是否存在实际或理论上的限制?我在规范 2 中看不到任何内容:是否需要在每次登录时重新加载用户自己的 vCard?这只是确保跨客户端同步的要求吗? 3. 有没有办法使用现有的 XMPP 头像规范之一来实现这一点(例如标准和交叉兼容)?
-
嗨,我没有太多想法(对此感到抱歉)我在我的一个项目中使用了这个,使用 github.com/robbiehanson/XMPPFramework 代码:
NSData *photoData = [[[AppDelegate delegate] xmppvCardAvatarModule] photoDataForJID:user.jid];