繁体   English   中英

聊天/ 1:1在Quickblox聊天sdk

[英]Chat/1:1 Chat in Quickblox Chat sdk

如何在两个用户之间的quickblox私人聊天中获取离线和在线用户。 如果两个用户Jone和kally如果kally处于离线状态,那么如何在此处获取离线用户Kally的状态呢? 请检查并帮助我。

         try {
            QBChatMessage chatMessage = new QBChatMessage();
            chatMessage.setBody(inputbox.getText().toString()); 
            chatMessage.setProperty("save_to_history", "1"); 
            long time = System.currentTimeMillis()/1000;
            chatMessage.setProperty("date_sent", time + "");
            privateChat.sendMessage(chatMessage);
            showMessage(chatMessage);
            inputbox.setText("");
        } catch (XMPPException e) {
            Log.e("XMPPException",e.toString());
        } catch (SmackException.NotConnectedException e) {
            Log.e("Not Connected Exception",e.toString());
        }catch (NullPointerException e) {
            Log.e("NullPointerException", e.toString());
        }catch (Exception e) {
            Log.e("Exception", e.toString());
        }

       QBPrivateChatManagerListener privateChatManagerListener = new              QBPrivateChatManagerListener() {
    @Override
    public void chatCreated(final QBPrivateChat privateChat, final boolean createdLocally) {
        if(!createdLocally){
            privateChat.addMessageListener(privateChatMessageListener);
        }
    }
};

QBMessageListener<QBPrivateChat> privateChatMessageListener = new QBMessageListener<QBPrivateChat>() {
    @Override
    public void processMessage(QBPrivateChat privateChat, final QBChatMessage chatMessage) {
        Log.w(Tag, "new incoming message: chatMessage" + chatMessage);
        showMessage(chatMessage);
        playBeepSound(mContext);
    }

    @Override
    public void processError(QBPrivateChat privateChat, QBChatException error, QBChatMessage originMessage){
        Log.w(Tag, "new incoming message: originMessage" + originMessage);
    }

    @Override
    public void processMessageDelivered(QBPrivateChat privateChat, String messageID){
        Log.w(Tag, "new incoming message:messageID " + messageID);
    }

    @Override
    public void processMessageRead(QBPrivateChat privateChat, String messageID){
        Log.w(Tag, "new incoming message:messageID messageID" + messageID);
    }
};
private void createNewDialog(){
    privateChatManager = QBChatService.getInstance().getPrivateChatManager();
    privateChatManager.createDialog(opponentId, new QBEntityCallbackImpl<QBDialog>() {
        @Override
        public void onSuccess(QBDialog dialog, Bundle args) {
            //Log.e("QBdialog", ""+dialog);
            //Log.e("id", dialog.getDialogId());
            setUpListener();
            isQBDialog = true;
        }

        @Override
        public void onError(List<String> errors) {
            Log.e("errors", ""+errors);
            isQBDialog = false;

        }
    });
}

private void setUpListener(){
privateChatManager.addPrivateChatManagerListener(privateChatManagerListener);
    privateChat = privateChatManager.getChat(opponentId);
    if (privateChat == null) {
        privateChat = privateChatManager.createChat(opponentId, privateChatMessageListener);
        privateChat.addIsTypingListener(privateChatIsTypingListener);

    }else{
        privateChat.addMessageListener(privateChatMessageListener);
        privateChat.addIsTypingListener(privateChatIsTypingListener);
    }
}

我是点击聊天链接http://quickblox.com/developers/Android_XMPP_Chat_Sample

我还尝试过实现一对一聊天的quickblox聊天,但是由于文档不够,我被卡住了。 然后我发现了socket.io,它对于一对一的聊天更加方便。点击链接: http ://socket.io/blog/native-socket-io-and-android/。 您还必须找到免费的node.js托管公司。 我可以建议你heroku.com

您可以添加侦听器以跟踪用户状态-RosterListener。

例如:

https://github.com/QuickBlox/q-municate-android/blob/master/Q-municate_core/src/main/java/com/quickblox/q_municate_core/qb/helpers/QBFriendListHelper.java

Q-municate实时跟踪用户状态(私人聊天和群聊)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM