Android 聊天/Quickblox聊天sdk中的1:1聊天

Android 聊天/Quickblox聊天sdk中的1:1聊天,android,quickblox,Android,Quickblox,如何在两个用户之间的quickblox私人聊天中获得脱机和联机用户。 如果两个用户Jone和kally如果kally脱机,那么如何在此处获取脱机用户kally的状态我的代码。请检查并帮助我 try { QBChatMessage chatMessage = new QBChatMessage(); chatMessage.setBody(inputbox.getText().toString()); ch

如何在两个用户之间的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);
    }
}
试试看{
QBChatMessage chatMessage=新的QBChatMessage();
setBody(inputbox.getText().toString());
setProperty(“保存到历史记录”,“1”);
长时间=System.currentTimeMillis()/1000;
setProperty(“发送日期”,时间+”);
privateChat.sendMessage(chatMessage);
showMessage(chatMessage);
inputbox.setText(“”);
}捕获(XMPPException e){
Log.e(“XMPPException”,e.toString());
}捕捉(SmackException.NotConnectedException e){
Log.e(“未连接异常”,例如toString());
}捕获(NullPointerException e){
e(“NullPointerException”,e.toString());
}捕获(例外e){
Log.e(“异常”,例如toString());
}
QBPrivateChatManagerListener privateChatManagerListener=新的QBPrivateChatManagerListener(){
@凌驾
已创建公共无效聊天室(最终QBPrivateChat privateChat,最终布尔值createdLocally){
如果(!createdLocally){
addMessageListener(privateChatMessageListener);
}
}
};
QBMessageListener privateChatMessageListener=新的QBMessageListener(){
@凌驾
public void processMessage(QBPrivateChat privateChat,最终QBChatMessage chatMessage){
Log.w(标签,“新传入消息:chatMessage”+chatMessage);
showMessage(chatMessage);
播放声音(McContext);
}
@凌驾
public void processError(QBPrivateChat privateChat、QBChatException错误、QBChatMessage originMessage){
Log.w(标签,“新传入消息:originMessage”+originMessage);
}
@凌驾
public void processMessageDelivered(QBPrivateChat privateChat,字符串messageID){
Log.w(标签,“新传入消息:messageID”+messageID);
}
@凌驾
public void processMessageRead(QBPrivateChat privateChat,字符串messageID){
Log.w(标签,“新传入消息:messageID messageID”+messageID);
}
};
私有void createNewDialog(){
privateChatManager=QBChatService.getInstance().getPrivateChatManager();
createDialog(opponentId,新的QBEntityCallbackImpl(){
@凌驾
成功时公共无效(QB对话框,捆绑参数){
//Log.e(“QBdialog”,即“+”对话框);
//Log.e(“id”,dialog.getDialogId());
setUpListener();
isQBDialog=true;
}
@凌驾
公共无效onError(列表错误){
Log.e(“错误”,“错误+错误”);
isQBDialog=false;
}
});
}
私有void setUpListener(){
添加privateChatManagerListener(privateChatManagerListener);
privateChat=privateChatManager.getChat(opponnetid);
if(privateChat==null){
privateChat=privateChatManager.createChat(opponnetid,privateChatMessageListener);
privateChat.addIsTypingListener(privateChatIsTypingListener);
}否则{
addMessageListener(privateChatMessageListener);
privateChat.addIsTypingListener(privateChatIsTypingListener);
}
}
我正在跟踪聊天链接

我还尝试为一对一聊天实现quickblox聊天,但由于文档不够,我遇到了困难。然后我找到了socket.io,这对于一对一聊天更方便。您还必须找到一家免费的node.js托管公司。我可以向您推荐heroku.com

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

例如:

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