朋友您好我正在开发一个聊天应用,我想在其中使用XMPP服务器。 所以我正在使用android Quickblox聊天示例项目。 我已成功创建一个简单的文本聊天应用程序。 但问题是,当booth用户(发送者和接收者)在线时它工作正常但是 如果第二个用户(接收者)离线,他上网时无法接收离线消息。 我正在使用此代码进行消息处理。
public class SingleChat implements Chat, ChatMessageListener {
public static final String EXTRA_USER_ID = "user_id";
private ChattingActivity chatActivity;
private QBPrivateChat chat;
private int companionId;
private MessageConstant messageConstant;
private DataBaseHelper dbHelper;
Context appContext;
public SingleChat(ChattingActivity chatActivity) {
this.chatActivity = chatActivity;
companionId =Integer.valueOf(CampanionUserProfile.CAMOANION_USER_ID);
chat = QBChatService.getInstance().createChat();
chat.addChatMessageListener(this);
appContext=this.chatActivity;
dbHelper =new DataBaseHelper(appContext);
}
@Override
public void sendMessage(String message) throws XMPPException {
Message message2=new Message();
chat.sendMessage(companionId, message);
}
@Override
public void release() {
chat.removeChatMessageListener(this);
}
@Override
public void processMessage(Message message) {
final String messageBody = message.getBody();
String senderid=message.getFrom().split("-")[0];
// Show message
if (CampanionUserProfile.CAMOANION_USER_ID.equals(senderid)) {
messageConstant=new MessageConstant();
messageConstant.setUser_id(CampanionUserProfile.CAMOANION_USER_ID);
messageConstant.setUser_name(CampanionUserProfile.CAMOANION_USER_NAME);
messageConstant.setUser_phonenumber(CampanionUserProfile.CAMOANION_USER_PH_NO);
messageConstant.setUser_pic(CampanionUserProfile.CAMOANION_USER_PIC);
messageConstant.setMessage_body(messageBody);
messageConstant.setMessage_from("you");
messageConstant.setMessage_time(Calendar.getInstance().getTime()+"");
messageConstant.setMessage_type(messageConstant.MSG_TYPE_TEXT);
chatActivity.showMessage(new ChatMessage(messageBody, Calendar.getInstance().getTime(), true));
} else {
UserFriends userFriends=dbHelper.getUserInfo(senderid);
messageConstant=new MessageConstant();
messageConstant.setUser_id(CampanionUserProfile.CAMOANION_USER_ID);
messageConstant.setUser_name(userFriends.getUser_name());
messageConstant.setUser_phonenumber(userFriends.getUser_phonenumber());
messageConstant.setUser_pic(userFriends.getUser_pic());
messageConstant.setMessage_body(messageBody);
messageConstant.setMessage_from("you");
messageConstant.setMessage_time(Calendar.getInstance().getTime()+"");
messageConstant.setMessage_type(messageConstant.MSG_TYPE_TEXT);
}
dbHelper.insertIntoChattingHostory(messageConstant);
Log.e("processMessage", messageBody+" / Come From :"+senderid);
Log.e("processMessage", messageBody+" / Chat with :"+CampanionUserProfile.CAMOANION_USER_ID);
}
@Override
public boolean accept(Message.Type messageType) {
switch (messageType) {
case chat:
return true;
default:
return false;
}
}
}
答案 0 :(得分:0)
最好完全使用QuickBlox SDK。如果QBchat已经写在xmpp上,你如何连接xmpp + QB聊天?