最近项目需要实现未读消息实时刷新,UI界面还是比较low的,用的uicollectionview放了一些cell,每个代表一个功能,项目需要在消息的cell上,图片的右上角实时刷新未读消息的数量,因为不想每隔几秒就调用接口去查询看有没有新消息(感觉这种方式好傻…),所以后面决定使用推送的方式实现该功能,后台使用Redis每五秒刷新一次,一旦某个用户的未读消息条数更新了,就放一个自定义通知(本来准备用通知的badge属性,但是发现安卓并没有这个东东)到该用户,移动端接收到以后就进行相应处理,需求大概就这样,这里记录一下中间遇到的问题。
iOS这边实现的逻辑大概是接收到自定义通知以后,将未读条数保存到NSUserDefaults中,然后发送通知(对UICollectionView所在的Controller注册了一个观察者对象),通知UICollectionView进行刷新,进入消息列表读取消息以后,调用接口更新消息状态,返回成功以后更新未读条数并存入NSUserDefaults,并发送通知,开发过程中遇到了几个问题。
代码逻辑是在加载cell的时候,判断这个cell是不是消息列表的cell,如果是就在右上角加一个自定义的button,文本就是NSUserDefaults中存的数值,这个button是用的Masonry加的约束,关于Masonry的使用,可以参考http://www.cocoachina.com/ios/20