Android平台下基于XMPP的IM研究(5)

3、ChatManager
 用于监控当前所有chat。可以使用createChat(String userJID, MessageListener listener)创建一个聊天。
 
4、Chat
 Chat用于监控两个用户间的一系列message。使用addMessageListener(MessageListener listener)当有任何消息到达时将会触发listener的processMessage(Chat chat, Message message)
方法.
 我们可以使用sendMessage()发送消息,这个方法有两个重载方法,一种类类型的参数时String类型,另一种则是传入Message对象(后面介绍)。
 那么有这样一种情况,当别人主动跟我们建立连接发送消息,或者系统发送消息时我们怎么才能接收消息呢?
    我现在是这样操作的:
 chatmanager.addChatListener(new ChatManagerListener() {
  @Override
  public void chatCreated(Chat chat, boolean createdLocally) {
   chat.addMessageListener(new MessageListener() {
    @Override
    public void processMessage(Chat chat, Message message) {
     System.out.println("Received message: " + message.getBody());
    }
         
   });
  }
 });
 
5、Message
 Message用于表示一个消息包(可以用调试工具看到发送包和接收包的具体内容)。它有以下多种类型。
  Message.Type.NORMAL -- (默认)文本消息(比如邮件)
  Message.Type.CHAT -- 典型的短消息,如QQ聊天的一行一行显示的消息
  Message.Type.GROUP_CHAT -- 群聊消息
  Message.Type.HEADLINE -- 滚动显示的消息
  Message.TYPE.ERROR -- 错误的消息
 Message有两个内部类:
  Message.Body -- 表示消息体
  Message.Type -- 表示消息类型
 
6、Roster
 表示存储了很多RosterEntry的一个花名册.为了易于管理,花名册的项被分贝到了各个group中.
 当建立与XMPP服务的连接后可以使用connection.getRoster()获取Roster对象。
 别的用户可以使用一个订阅请求(相当于QQ加好友)尝试订阅目的用户。可以使用枚举类型Roster.SubscriptionMode的值处理这些请求:
 accept_all: 接收所有订阅请求
 reject_all:拒绝所有订阅请求
 manual:  手工处理订阅请求
 
 创建组:RosterGroup group = roster.createGroup("大学");
 向组中添加RosterEntry对象: group.addEntry(entry);
 
7、RosterEntry
 表示Roster(花名册)中的每条记录.它包含了用户的JID,用户名,或用户分配的昵称.
 
8、RosterGroup
 表示RosterEntry的组。可以使用addEntry(RosterEntry entry)添加。contains(String user) 判断某用户是否在组中.当然removeEntry(RosterEntry entry)就是从组中移除了。getEntries()

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyppjs.html