【发布时间】:2016-01-01 19:23:47
【问题描述】:
我正在使用 Smack 库 v4.1.0(不是 aSmack)来实现 Android 应用程序中的聊天功能。我似乎无法使用以下两个功能:
- 用户状态(在线,上次查看)
- 聊天消息状态(已发送、已发送、已读)
对于用户状态,我使用以下代码,它总是返回 null。
Presence userPresence = roster.getPresence(toUser);
System.out.println("*** User status: " + userPresence.getStatus());
if (userPresence.getMode() == Presence.Mode.available || userPresence.getMode() == Presence.Mode.chat) {
lblIsTyping.setText("Online");
} else {
lblIsTyping.setText("Offline");
}
对于消息状态,我使用以下代码:
private class MessageListenerImpl implements MessageListener, ChatStateListener {
@Override
public void processMessage(Chat chat, Message message) {
processMessageCore(message);
}
@Override
public void stateChanged(Chat chat, ChatState chatState) {
System.out.println("*** chat: " + chat.toString());
if (ChatState.composing.equals(chatState)) {
lblIsTyping.setText("typing...");
System.out.println("Chat State: " + chat.getParticipant() + " is typing..");
}
}
@Override
public void processMessage(Message message) {
processMessageCore(message);
}
}
并将其用作:
ChatManager.getInstanceFor(HCSmackService.getInstance().getConnection()).createChat(toUser, mThreadID, new MessageListenerImpl());
但回调永远不会被调用。
如何使用新的 Smack 库让这些在 Android 上运行?有人已经实现了这些功能吗?
谢谢!
【问题讨论】:
-
当用户尝试使用与接收器相同的连接进行联机和脱机时,您可以获得联机或脱机状态,但您必须保持从编码端看到的最后一次。
标签: java android xmpp chat smack