XMPP部分经验

(一)

1、首先是调用viewdidload方法。

2、先刷新然后从数据库里面获取所有的聊天记录(initBubbleDatas),这个方法写在刷新的方法里面,每次刷新都要调用

3、通过上面的方法将消息结构转换成聊天结构(structureBubbleDatasWithMessages),这个方法处理的对象是一个XML流,就是通过这个方法将里面的元素分类整理出来,比如消息类型(MJLMessageType),时间,消息内容(body),在这个方法里面我们还要根据信息的类型进行处理,这个一个方法

cmsg= [self structureMessageType:MJLMessageTypeText xmppMessage:object.message path:nil expandPath:nil stamp:timeStamp];这个方法里面是组织消息结构,是通过另外一个类CMMessage来装一下取出来的信息的里面的元素,CMMessage的属性基本上包括上面那个方法传过来的参数,同时还有更多,主要是有些参数还封装了另外的属性

然后就是将消息结构转换成聊天结构(structureBubbleData),通过这个方法将数据传入显示NSBubbleData,这个类是显示在ui上面的数据的直接来源,然后每条信息返回一个bubbleData对象,然后建立一个全局数组,将bubbleData全部装在这个全局数组bubbleDatas里面,此时方法structureBubbleDatasWithMessages已经执行完,目的达到,就是得到将

[(XMPPRoomMessageCoreDataStorageObject *)obj或者(XMPPMessageArchiving_Message_CoreDataObject *)obj对象转换成直接能被bubbletableview代理方法直接调用的对象。

4、上面那个方法会反复用到,也是最复杂的最关键的处理,处理完之后就是分布好视图(scrollToBottomWithTableHeight和atBottom)

,这两个分布视图的方法),将数组(bubbleData)里面的数据装在到UI上面。

以上是装在流程,下面是重点说一下

CMChatToolBar的定制以及发信息的流程。

(二)

1、XMPP讨论组,类似qq的群或讨论组,我在做一个删除信息的功能,我首先是从保存所有信息的数据库并且在AppDelegate类里面的

xmppMessageArchivingCoreDataStorage,先建立一个以该数据库类似名字的实体,然后建立一个谓词和请求,谓词是请求的特征,是请求的样式,其实就是搜索,就是从数据库中搜索类似样式的个体,也可以不这样,可以一个一个对比,其实一样,

2、这里其实有个疑问,发信息的在聊天页面,信息是怎么保存在AppDelegate里面的数据库xmppMessageArchivingCoreDataStorage里面的??这里我想涉及到网络方面的问题,通过sendElement将数据发出去,同时通过本地的recerve??这里不懂

3、我用上面的方式获取讨论组里面的信息并删除,发现最新的信息里面没有了,但是在打开那个讨论组,发现信息还在,后来我知道,在讨论组里面信息保存有两份,一份是保存再上面的数据库里(所有的信息都保存在里面),还保存一份在xmpproomCoreDataStorage里面,我只删掉一份,而另外的没有删掉。

4、在开发过程中我想获得这些信息,但是不是这么简单像上面一样能获得信息,我想是上面的对象已经在AppDelegate里面进行了初始化和一系列搭配,使得保存数据的数据库联系起来,如果知识简单设一个属性不进行创建和适当搭配,我们是不能获得数据信息的,就像我们知道我们朋友(相当于数据)的位置,但是我们不知道路线等,我们就不能到达朋友的家里,

5、在开发中有一些很怪得命名方法,忽略它,不要紧的,不要被名字吓到了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值