使用Openfire在Smack中接收传入聊天消息的广播接收器

时间:2013-09-19 09:12:06

标签: android xmpp openfire smack

我正在通过XMPP协议使用openfire服务器创建一个聊天应用程序。我可以和其他用户聊天并且运作良好。我在Service类中创建了连接。 所以当我不在我的应用程序中时,我能够收到通知消息但是我的服务是在网络问题,网络更改,网络速度等等时一次又一次地重新启动。所以我的连接丢失了。并且用户并不总是能够聊天。

所以我解决了连接问题。像是

if( service is not runing)
  start my service 
else
 if(connection is NULL or not Connected)
  reconnection . so my connection is created

我的服务类: -

if(connection is NULL or not connected)
  reconnect. so my connection is created
 else
  not connected.

但是现在如果我的服务正在运行并且连接丢失了。我打开我的应用程序,创建一个新的连接。此连接由应用程序而非服务创建。所以现在,当我不在我的应用程序中时,我没有收到任何有关传入消息的通知,因为传入消息是通过服务连接来的

现在我参与了。请高手帮帮我。我怎么解决?

在openfire中有推送通知的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试绑定到您的服务;

  • 在您的服务中创建名为connect()

  • 的方法
  • 启动应用程序而不是在活动类中创建连接对象时,绑定到服务,调用myServcie.connect();

  • 这样连接仍由服务

  • 拥有

与服务进行通信的其他方式是通过意图....在创建活动时向服务发送意图并在服务调用中使用BroadcastReceiver connect();

有一点需要注意的是不建议在移动环境中不断重新连接....电池寿命就是这样。您可以检查应用程序包是否正在显示,然后重新连接(如果是等等)

詹姆斯