上一节讲了XMPP的用户注册/登录,这节介绍花名册的使用。花名册的存储可以直接使用XMPPFramework中的coreData存储,也可以自己建立数据库存储。本节介绍两种方式:
- 使用XMPPFramework来存储。
- 不使用CoreData的存储方法。
XMPPRoster
花名册的获取主要使用到 XMPPRoster 类,使用该类,可以实现好友的管理、同步、申请和删除。花名册的同步需要了解协议 XMPPRosterDelegate。
CoreData中存储
使用CoreData存储时,XMPPFramework已经为我们做了管理,我们需要做的仅仅是创建对象、添加代理、激活:
|
|
XMPPStream这里不再赘述,直接介绍花名册相关。
初始化、激活
|
|
设置代理
|
|
好友请求相关
如果想自行处理好友请求,则需要关闭自动好友请求
|
|
监听协议
协议 XMPPRosterDelegate 中,包含花名册同步、好友变更相关协议。其中好友相关的主要如下
|
|
好友列表的同步,会调用以下协议方法,在结束同步的方法之后,CoreData中好友列表就可以使用了。
|
|
当然,如果程序运行过程中,好友列表发生变更了该怎么办,当然还是协议方法了。
|
|
因为XMPPFramework的CoreData数据库已经将大多数操作进行了封装,我们如果使用CoreData,只需要在好友列表同步结束和好友花名册变更的回调中,发送个好友列表变更通知,使用好友花名册的地方根据实际需求处理即可
不使用CoreData存储
如果不使用CoreData进行数据存储,我们主要需要在两个协议回调中做文章。
- 好友列表同步结束时,我们需要解析 XMPPIQ 中的XML数据,存储好友列表。
- 收到好友花名册变更时,与存储的好友列表内好友比较,更新列表及列表中状态。
|
|
其中,解析 XMPPIQ 中的XML携带有好友列表相关数据, XMPPPresence 会携带状态数据或者其他。一定要注意的是好友列表是由两者根据用户JID共同维护的。
解析XML方法此处不在说明。
好了,本节就讲这些,下一节讲述:WebRTC实时通讯。