【问题标题】:Broadcast Receiver for incoming chat message in Smack using Openfire使用 Openfire 在 Smack 中接收聊天消息的广播接收器
【发布时间】:2013-09-24 07:08:13
【问题描述】:

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

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

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 中推送通知?

【问题讨论】:

  • 我只能推荐看看各种使用 aSmack 的 Android 开源 XMPP 客户端,以及它们如何处理服务重启、连接更改等。基本上你希望 XMPP 连接实例是由服务管理并侦听连接更改以重新连接。

标签: android xmpp openfire smack


【解决方案1】:

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

  • 在您的服务中创建一个名为 connect() 的方法

  • 当应用启动时,而不是在activity类中创建连接对象,绑定到服务,调用myServcie.connect();

  • 这样连接仍归服务所有,

与服务通信的其他方式是通过意图....在创建活动时向服务发送意图并让服务中的广播接收器调用 connect();

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

詹姆斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多