iOS中利用XMPP怎么实现好友添加与获取好友列表

iOS中利用XMPP怎么实现好友添加与获取好友列表,第1张

主要用的类有:

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11301399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存