iOS使用推送解决未读消息实时刷新
2017-03-06 14:02
507 查看
最近项目需要实现未读消息实时刷新,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/
95ca
20141219/10702.html,
1.UIcollectionView刷新的时候,会使别的cell上面也显示这个button,数值就是消息cell的上一次保存的数值,解决方法是不使用原来的[UICollectionView reloadData],改为使用[UICollectionView reloadItemsAtIndexPaths:]方法只刷新消息列表cell。
2.在主界面的时候,后台推送自定义通知更新消息未读数正常,但是当退出消息列表的时候,发现UIcollectionView刷新以后的未读数是NSUserDefaults上一次保存的数值,打断点发现NSUserDefaults数据没有问题,最后发现是对button做了多次约束,每次都是调用的mas_makeConstraints,最后解决方法就是将button加到cell的xib中去。
3.集成极光推送的时候也发现了一个问题,就是iOS 10新加入的UserNotifications.framework库,对它的引入忘记了改为Optional,上线以后发现iOS 10一下的系统会出现闪退….,最后上线完以后第二天一来就又更新了一次。
iOS这边实现的逻辑大概是接收到自定义通知以后,将未读条数保存到NSUserDefaults中,然后发送通知(对UICollectionView所在的Controller注册了一个观察者对象),通知UICollectionView进行刷新,进入消息列表读取消息以后,调用接口更新消息状态,返回成功以后更新未读条数并存入NSUserDefaults,并发送通知,开发过程中遇到了几个问题。
代码逻辑是在加载cell的时候,判断这个cell是不是消息列表的cell,如果是就在右上角加一个自定义的button,文本就是NSUserDefaults中存的数值,这个button是用的Masonry加的约束,关于Masonry的使用,可以参考http://www.cocoachina.com/ios/
95ca
20141219/10702.html,
1.UIcollectionView刷新的时候,会使别的cell上面也显示这个button,数值就是消息cell的上一次保存的数值,解决方法是不使用原来的[UICollectionView reloadData],改为使用[UICollectionView reloadItemsAtIndexPaths:]方法只刷新消息列表cell。
2.在主界面的时候,后台推送自定义通知更新消息未读数正常,但是当退出消息列表的时候,发现UIcollectionView刷新以后的未读数是NSUserDefaults上一次保存的数值,打断点发现NSUserDefaults数据没有问题,最后发现是对button做了多次约束,每次都是调用的mas_makeConstraints,最后解决方法就是将button加到cell的xib中去。
3.集成极光推送的时候也发现了一个问题,就是iOS 10新加入的UserNotifications.framework库,对它的引入忘记了改为Optional,上线以后发现iOS 10一下的系统会出现闪退….,最后上线完以后第二天一来就又更新了一次。
相关文章推荐
- iOS及Android消息推送方案安装使用入门 分享
- 使用PushSharp给iOS应用推送消息
- 【使用PushSharp进行IOS发布应用的消息推送】
- iOS和Android使用MQTT协议实现消息推送和即时通讯(替代XMPP,已经有TMS MQTT)
- Unity工程导出iOS包,使用推送,deviceToken获取不到的解决办法
- ios消息推送机制原理与实现-验证使用成功
- iOS开发_使用百度云推送实现app消息推送
- 使用tomcat8.0.36实现的websocket技术,实现向单个以及全部用户实时推送消息的功能
- iOS注册远程推送消息证书后提示此证书签发者无效的解决办法
- 基于MFC的实时可视化项目中视图刷新消息的严谨使用
- (转)在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
- pushlet给特定用户,分组,群发推送消息(新手亲测,解决新手使用遇到的困难!)
- AIR中不使用ANE实现IOS消息推送
- 使用iOS推送时警告错误的解决方法
- flex 4.0 解决在MODULE中使用timer实时刷新数据,卸载MODULE后还在执行的问题
- 使用PushSharp给iOS应用推送消息
- iOS不使用第三方平台,发送推送消息
- iOS-在SAE使用Apple Push Notification Service实现消息推送
- iOS 极光推送消息推送成功,但是手机收不到的解决方法。
- 使用goEasy实现web消息实时推送