2018-03-13工作日志,云信推送一条消息,接收到两次

项目中集成了云信推送SDK,某晚,客户端接收到了两条一样的信息,后台兄弟们只推送了一次,What?Why?

根本原因:多次注册了观察者

解决的问题:云信推送了一条消息,客户端接收到两次。

云信接收推送的消息使用的是观察者模式。
Activity生命周期函数onCreate()中
注册观察者:

        // 注册消息接收观察者
        NIMClient.getService(MsgServiceObserve.class)
              .observeReceiveMessage(incomingMessageObserver, true);

生命周期函数onDestry()中
注销观察者:

        // 注销消息接收观察者
        NIMClient.getService(MsgServiceObserve.class)
                .observeReceiveMessage(incomingMessageObserver, false);

观察者

    /**
     * 消息接收观察者
     */
    private Observer<List<IMMessage>> incomingMessageObserver =
            (Observer<List<IMMessage>>) messages -> {

                for (IMMessage msg : messages) {             
                }

            };

观察者接收到的消息重复,即一条消息(ext_id相同)接收到了两次,自己排查代码及与云信技术支持沟通,得出结论:多次注册了观察者。
最终在配置清单中查看到:

组成员把launcher:"singleTask"删除了,O M G!!!
删除后导致Activity可以有多个实例,当然也可以多次注册观察者。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,275评论 19赞 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,705评论 25赞 708
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,816评论 0赞 15
  • 早晨被迫醒来的我,本想睡个回笼觉,却忍不住拿起了相机把这云雾拍下。窗外的美景,竟然胜过了周公,哈哈哈哈哈哈哈哈
    帅气的昵称你们都用了啊阅读 555评论 0赞 0
  • 开心的三件事儿 1. 有是走了很多路的一天。天气没有太热了,慢慢转凉。也是愉快的一件事。 2. 今天又吃了一根冰棍...
    七不斯阅读 113评论 0赞 0

友情链接更多精彩内容