Roster 可以理解为好友花名册,提供创建删除获取列表等功能Roster.SubscriptionMode这个在建立链接的时候使用,我的理解就是设置接收请求的模式,有三种,我们项目用的是SubscriptionMode.manual 也就是手动处理。
Presence 有关好友的推送消息,都是Presence包
Presence.Type 有7个Type,包含了好友上线下线、添加删除好友及错误信息的Type
PacketFilter过滤器,此功能中主要实现过滤出Presence
PacketListener 看名字就知道,Packet监听,可以监听到服务端发来的所有信息。因为xmpp发的包都是它的子类~
在建立完xmppStream后,xmpp framework为你创建了一个xmppRoster对象。添加好友,拒绝好友请求等等都需要通过这个对象完成。添加一个好友的方法: -(void)addBuddy:(XMPPJID *)jid withNickname:(NSString*)optionalName groupName:(NSString*)groupName其中,jid是要请求加其为好友的jid.optionalName是在好友的昵称(列表中显示)。groupName是这个请求的好友会在哪个分组下面。如果不存在,xmpp framework会帮你新建一个。关于同意和拒绝好友请求。用到的方法如下: -(void)acceptBuddyRequest:(XMPPJID *)jid -(void)rejectBuddyRequest:(XMPPJID *)jid其中,jid就是申请你加为好友的用户的jid.当收到好友请求时,下面这个xmpproster的protocal方法将自动被调用
- (void)xmppRoster:(XMPPRoster *)sender didReceiveBuddyRequest:(XMPPPresence *)presence
添加一个包过滤器,找到Presence包,然后发送Presence.Type.unsubscribed类型的Presence包回去即可。AndFilter presence_sub_filter = new AndFilter(new PacketTypeFilter(Presence.class),new PacketFilter() {
@Override
public boolean accept(Packet packet) {
// TODO Auto-generated method stub
Presence p = (Presence) packet //cast packet to Presence
if(p.getType().equals(Presence.Type.subscribe)){
return true
}
return false
}
})
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
// TODO Auto-generated method stub
String P_receiver = packet.getFrom()
Presence presence_back = new Presence(Presence.Type.unsubscribed)
presence_back.setTo(P_receiver)
connection.sendPacket(presence_back)
}
},presence_sub_filter)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)