安卓后台服务用于Smack(XMPP)聊天应用程序

8

我正在使用asmack库实现一个聊天应用程序。我想要启动一个一直运行的服务,处理所有连接管理任务,并在持续接收传入数据包并将消息保存在我的SQLite数据库中。当我的应用程序被启动时,我希望我的应用程序也能够收到传入消息的通知,同时后台服务将消息插入SQLite数据库。 如何使用sticky服务实现这样的结构?是否还需要部分唤醒锁定?由于有时需要特定的下载图像,因此可能会部分使用http。


或许你可以从这个链接中获得如何使用带有监听器的后台服务的实现方法的想法:https://dev59.com/jmYq5IYBdhLWcg3wcgPq#14478281 - B378
1个回答

16

在服务器上注册后,您可以启动服务。

服务的onStartCommand登录用户。

使用PacketListener、ConnectionListener和InvitationListener实现服务。

PacketListener用于接收群聊或一对一聊天消息。

ConnectionListener用于检查与服务器的连接是否已连接或已断开。

InvitationListener用于获取组邀请。

成功登录后添加这些监听器。

现在,当收到消息时,请将该消息保存在本地数据库中,并为需要接收消息的活动发送广播。

如果应用程序在后台,则检查是否有新消息,如果有,则发送通知。

如果有任何问题,请发送邮件至cvofjaspreet@gmail.com。


1
非常感谢。我还希望应用程序在后台运行时继续接收消息。但是,为此用户必须在线。但是当用户离开聊天窗口时,在我的应用程序中用户会变成离线状态。 - Rahul Rastogi
1
那么你的连接一定正在断开。实现ConnectionListener以检查连接何时关闭。请点赞以获取答案。 - Jaspreet Chhabra
对此,已启动服务中有监听器。但是如何从应用程序向服务发送命令以执行其他工作,例如发送消息? - Rahul Rastogi
@JaspreetSingh,你有没有Smack 4.1的演示项目? - fpopic
@Jaspreet/Rahul - 你们有上述服务的任何链接/示例代码吗? - pankaj
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接