应用程序关闭时,Android XMPP Smack会收到消息

时间:2014-12-25 22:19:36

标签: java android xmpp smack asmack

我知道如何使用XMPP smack库接收消息,但即使应用程序关闭后也可以接收消息。就像什么应用程序我们即使在申请结束后也收到消息。

目前我使用下面的代码来接收消息,当应用程序关闭时,我应该更改什么才能接收消息。

 PacketFilter filter = new MessageTypeFilter(Message.Type.chat);

            // Listener for incoming message from any user

            connection.addPacketListener(new PacketListener() {
                public void processPacket(Packet packet) {
                    final Message message = (Message) packet;
                    if (message.getBody() != null) {
                        fromName = StringUtils.parseBareAddress(message
                                .getFrom());
                        Log.i("XMPPClient", "Got text [" + message.getBody()
                                + "] from [" + fromName + "]");     


                                }
                            }
                        });

                    }
                }
            }, filter);

1 个答案:

答案 0 :(得分:1)

  1. 您需要维护与服务器的持久tcp连接,这将在后台接收所有消息。 Android Service会帮助你。编写后台服务有点棘手,因为它很容易使你的服务阻止cpu进入睡眠状态并耗尽用户电池。
  2. 您可以使用现有的精心设计的Google Cloud Messaging服务。在这种情况下,它不会花费您额外的CPU /电池时间,但您需要在服务器端进行修改:当收件人未连接时 - XMPP服务器应将消息转发给GCM服务器。