【发布时间】:2017-06-18 02:55:08
【问题描述】:
我们确实有从服务器端发送离线群组推送通知的功能。
场景如下:-
应用程序已打开并转到组消息选项卡。现在向群组发送消息,群组的其他用户将收到我发送的消息。
通过从 ios 端关闭(杀死或在后台)应用程序,他们将用户状态设置为离线。因此,一旦应用程序关闭,他们将在移动设备中收到推送通知。
问题是通过关闭应用程序,即使我阅读了相同的消息,我仍然会在移动设备中收到推送通知。
我从后端设置了一个 cron 作业,它每 30 秒在服务器上运行一次,checks the user presence 在组中,并向那些在手机中离线的用户发送推送通知。
那么有什么方法可以使用 REST API 获取上次注销时间戳,以便我可以设置条件并检查上次用户登录时间是否小于当前时间,推送通知将发送。
无法使用 REST API 获取上次注销时间 http://example.com:9090/plugins/restapi/v1/sessions/yourUserName
哪个输出:-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <sessions>
<session>
<sessionId>yourUserName@example.com/1ae2xq14da</sessionId>
<username>yourUserName</username>
<ressource>1ae2xq14da</ressource>
<node>Local</node>
<sessionStatus>Closed</sessionStatus>
<presenceStatus>Online</presenceStatus>
<priority>0</priority>
<creationDate>2017-01-18T08:58:01.611Z</creationDate>
<lastActionDate>2017-01-18T08:58:05.121Z</lastActionDate>
<secure>false</secure>
</session>
</sessions>
通过执行上述方法,获取创建日期和上次操作日期不正确。
1) 创建日期:- 2017-01-18T08:58:01.611Z
2)lastActionDate :- 2017-01-18T08:58:05.121Z
http://example.com:9090/plugins/restapi/v1/users/yourUserName
不输出上次登录时间戳
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>yourUserName</username>
<name>yourUserName</name>
<email>yourUserName@example.com</email>
<properties/>
</user>
我们用过REST API Plugin
任何帮助都将是 appriciate。
【问题讨论】:
-
您如何管理状态?您是否在登录-注销时明确发送出席信息?
-
@MrPk 感谢您的关注。顺便说一句,聊天功能来自 ios 端,因此当应用程序进入后台或终止状态时,他们正在管理存在和处理服务器。如果用户杀死或进入后台应用程序用户将离线。
-
根据我的经验,如果您让 Openfire 自行管理而没有明确存在离线/在线状态,则上次活动会中断。当你去后台或杀死应用程序并尝试你得到的东西之前尝试发送一个存在
-
很高兴告诉您我们已经使用用户状态插件成功完成了它。这个插件会自动将每个用户和资源的最后状态(存在、IP 地址、登录和注销时间)保存到 Openfire 数据库中的 userStatus 表中,所以我所做的是根据已发送的通知比较消息时间和注销时间。感谢您的时间和努力。