我们确实具有服务器端的离线组推送通知功能。
情景如下: -
应用程序已打开并转到组消息选项卡。现在向群组发送消息,以便群组的其他用户收到我发送的消息。
通过从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)creationDate: - 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
任何帮助都会很合适。
答案 0 :(得分:1)
User Status Plugin完成了这项工作!
User Status Plugin是Openfire XMPP服务器的插件,用于将用户状态保存到数据库。
此插件会自动将每个用户和资源的最后状态(状态,IP地址,登录和注销时间)保存到Openfire数据库中的userStatus表。
您可以选择将用户状态条目(IP地址,登录和注销时间)归档指定时间。历史条目存储在userStatusHistory表中。可以在&#34;用户状态设置&#34;上配置历史存档的设置。您可以在&#34; Server&#34;上找到的页面Openfire管理控制台的选项卡。
该插件位于http://maven.reucon.com/projects/public/user-status
根据该项目的网站,目前这个插件仅适用于MySQL。
因此,通过基于注销时间和消息时间推送条件,推送通知正在发送。