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

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

作者: IT枫 | 来源:发表于2018-03-13 14:59 被阅读29次

    项目中集成了云信推送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可以有多个实例,当然也可以多次注册观察者。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/xojzfftx.html