用户无法在 Android Quickblox 聊天应用中接收离线消息
Posted
技术标签:
【中文标题】用户无法在 Android Quickblox 聊天应用中接收离线消息【英文标题】:User can't receive offline message in android Quickblox chatting app 【发布时间】:2014-10-13 14:09:05 【问题描述】:你好朋友,我正在开发一个聊天应用程序,我想在其中使用 XMPP 服务器。 所以我正在使用 android Quickblox 聊天示例项目。 我已经成功创建了一个简单的文本聊天应用程序。 但问题是,当展位用户(发送者和接收者)在线时,它工作正常,但 如果第二个用户(接收者)离线,他在上线时将无法收到离线消息。 我正在将此代码用于消息处理。
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;
【问题讨论】:
【参考方案1】:最好完全使用 QuickBlox SDK。如果 QBchat 已经写在 xmpp 上,如何连接 xmpp+QB 聊天?
【讨论】:
以上是关于用户无法在 Android Quickblox 聊天应用中接收离线消息的主要内容,如果未能解决你的问题,请参考以下文章
用户无法在 Android Quickblox 聊天应用中接收离线消息
使用 QuickBlox 聊天 SDK 发送图像 - Android