有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java QuickBlox聊天消息侦听器

我使用2.1.1安卓SDK,希望通知用户应用程序收到的新传入消息

问题就在这里。我想在用户启动应用程序时通知他,因此我想在“用户登录”阶段添加侦听器,如代码段所示:

        QBAuth.createSession(user, new QBEntityCallbackImpl<QBSession>() {
        @Override
        public void onSuccess(QBSession session, Bundle args) {
            // login to Chat
            chatService.login(user, new QBEntityCallbackImpl() {
                @Override
                public void onSuccess() {
                    HERE I WOULD LIKE A CODE TO START LISTEN FOR ALL INCOMING MESSAGES

根据http://sdk.quickblox.com/安卓/com/quickblox/chat/listeners/QBMessageListenerImpl.html 侦听器需要聊天QBChat才能启动。但我愿意倾听所有的信息,而不仅仅是在特定的聊天中

长话短说,如何实现一个消息侦听器来捕获发送给登录用户的所有消息


共 (1) 个答案

  1. # 1 楼答案

    @Naveen Kumar

    在我的启动活动中,我启动listener来捕捉XMPP连接

        private void XMPPConnectionListener() {
        XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() {
    
            @Override
            public void connectionCreated(XMPPConnection connection) {
                GlobalVar.XMPPConn = connection;
                ChatHelper.idleMessageListener(StartActivity.this);
    
            }
        });
    
    }
    

    然后我用GlobalVar。XMPPConn捕获并解析数据包:

        public static void idleMessageListener(final Activity activity) {
        PacketListener myListener = new PacketListener() {
            public void processPacket(final Packet packet) {
                final Integer userID = Integer.parseInt(returnIDFromPacket(packet.getFrom()));
                final String body = returnBodyFromPacket(packet.toString());
                if (!GlobalVar.currentOpponent.equals(userID) && !body.isEmpty()) {
                    activity.runOnUiThread(new Runnable() {
                        public void run() {
                            QBUsers.getUser(userID, new QBEntityCallbackImpl<QBUser>() {
                                @Override
                                public void onSuccess(final QBUser user, Bundle args) {
                                    sendNotification(activity, user, body);
                                }
    
                                @Override
                                public void onError(List<String> errors) {
                                    Log.d(TAG, errors.toString());
                                }
                            });
                        }
                    });
    
                }
            }
        };
        PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
    
        if (GlobalVar.XMPPConn != null) {
            GlobalVar.XMPPConn.addPacketListener(myListener, filter);
        }
    }
    

    因此,逻辑是捕获QuickBlox触发的连接,然后将数据包侦听器连接到该连接