我正在开发一个聊天应用程序,并希望添加"最后一次见到"功能。我试图通过使用存在节来实现它,但是遇到一个问题,请查看以下链接
Not getting unavailable presence of User A when User B is also unavailable
有没有其他方法可以实现上次见到的功能
请建议
答案 0 :(得分:6)
" xmpp上次发布的第一个Google结果"是XEP-0012: Last Activity,这是一个协议扩展,可用于查明用户上次何时在线。
您发送的请求如下:
<iq from='romeo@montague.net/orchard'
id='last1'
to='juliet@capulet.com'
type='get'>
<query xmlns='jabber:iq:last'/>
</iq>
得到这样的回复:
<iq from='juliet@capulet.com'
id='last1'
to='romeo@montague.net/orchard'
type='result'>
<query xmlns='jabber:iq:last' seconds='903'/>
</iq>
这意味着该联系人最后一次在线903秒前。从当前时间减去这个以获得最后一次看到&#34;时间戳。
答案 1 :(得分:0)
上次看到和上次活动是两种不同的情况。
Last Activity是用户上次离线时,但最后一次看到的是当用户从应用程序进入后台时,如果应用程序未被杀死,则用户将可用。您必须在服务器端创建新的插件才能看到
答案 2 :(得分:-1)
@legoscia解决方案将返回上次活动时间,这是您的上次注销时间(而不是用户在线的最后时间),请检查此https://github.com/processone/ejabberd/issues/2265
如果服务器收到请求时用户具有至少一个连接的资源或可用资源,则响应必须(取决于本地安全策略)包含一个空元素,其“秒”属性设置为值“ 0”。
一种解决方案是在应用程序进入后台时终止会话,并在应用程序进入前台时重新连接