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

2018-03-13  本文已影响29人  IT枫

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

上一篇下一篇

猜你喜欢

热点阅读