Android 退出环信后,再次登录,无法收到透传消息

问题描述

就是开始登录一个用户,可以收到透传消息,可是退出后(没有关闭程序),再次登录,就收不到透传消息了,这是怎么回事? 退出登录环信代码如下: EMChatManager.getInstance().logout(new EMCallBack() {                                        @Override                    public void onSuccess() {                        startActivity(new Intent(getActivity(), LoginActivity.class));                    }                                        @Override                    public void onProgress(int progress, String status) {                                            }                                        @Override                    public void onError(int code, String error) {                                            }                });注册透传消息广播如下:// 透传广播        IntentFilter cmdIntentFilter = new IntentFilter(EMChatManager.getInstance().getCmdMessageBroadcastAction());        CMDBroadcastReceiver cmdMessageReceiver = new CMDBroadcastReceiver();        appContext.registerReceiver(cmdMessageReceiver, cmdIntentFilter); 发送透传消息如下:EMMessage cmdMsg = EMMessage.createSendMessage(EMMessage.Type.CMD);// 透传消息        //支持单聊和群聊,默认单聊,如果是群聊添加下面这行        // cmdMsg.setChatType(ChatType.GroupChat);        //action可以自定义,在广播接收时可以收到        CmdMessageBody cmdBody = new CmdMessageBody(action);        cmdMsg.addBody(cmdBody);        // 给自己的好友发送通知        if (IMHelper.getInstance().getImUserList() != null && IMHelper.getInstance().getImUserList().size() > 0) {            for(IMUser imUser:IMHelper.getInstance().getImUserList()){                if(!imUser.getUid().equals(curUsername)){// 不给自己发送这条消息                    cmdMsg.setReceipt(imUser.getUid());// 接收这条通知的人id                    cmdMsg.setAttribute("ToUsername",curUsername);// 需要修改当前用户的头像id                    cmdMsg.setAttribute(key,obj);//支持自定义扩展                        sendCMDMessage(cmdMsg);                }            }        }private static void sendCMDMessage(EMMessage cmdMsg){        EMChatManager.getInstance().sendMessage(cmdMsg,new EMCallBack() {                        @Override            public void onSuccess() {                // 发送成功            }                        @Override            public void onProgress(int arg0, String arg1) {                // 发送进度            }                        @Override            public void onError(int arg0, String arg1) {                // 发送失败            }        });    }   接收透传的广播如下:public class CMDBroadcastReceiver extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent) {        Log.d("ME", "进入到广播啦");        if(intent!=null){            //获取cmd message对象            String msgId = intent.getStringExtra("msgid");            EMMessage message = intent.getParcelableExtra("message");            //获取消息body            CmdMessageBody cmdMsgBody = (CmdMessageBody) message.getBody();            String aciton = cmdMsgBody.action;//获取自定义action            if(IMConstants.ACTION_UPDATE_USER_AVATAR.equals(aciton)){// 更新头像指令                updateAvatar(message);            }else if(IMConstants.ACTION_UPDATE_USER_NICK.equals(aciton)){// 更新昵称                updateNick(message);            }                    }    }

解决方案

可以看下你的setAppInited方法是否有再次调用

时间: 2024-09-17 02:46:31

Android 退出环信后,再次登录,无法收到透传消息的相关文章

各位大神 ,当收到透传消息后 怎么处理更新头像和昵称?

问题描述 我用的easeUI  我是在登录成功之后把好友信息缓存的本地数据库了  怎么通知所有页面改变头像 解决方案 发广播去提示刷新解决方案二:你好,请问你怎么保存在数据库中的?

环信接口的透传消息作用是什么?

问题描述 环信文档说可以发送透传消息,那这是在什么场景下发送的消息呢, "不会在客户端提示(铃声,震动,通知栏等),但可以在客户端监听到的消息推送,具体功能可以根据自身自定义" 文档中的解释,我表示不能理解. 尤其是具体功能可以根据自身自定义这句. 解决方案 可以做一些类似控制类的功能,这类功能是用户无需感受到的.

android中播放停止后再次播放

问题描述 android中播放停止后再次播放 应用第一次播放正常,但是如果按了停止键,再次播放就会播放不了...不知为什么? // method for play stream after stop it.public void startradio(View v) { try{ if(mp.isPlaying()){ return; } mp.start(); } catch(IllegalStateException ex){ ex.printStackTrace(); } }// meth

android获取短信内容时,总是收到两次短信内容

问题描述 android获取短信内容时,总是收到两次短信内容 public String getSmsAndSendBack() { String[] projection = new String[] { ""address""person""body"" }; StringBuilder str = new StringBuilder(); try { ContentResolver cr = getContentReso

android-环信怎么透传消息到指定的群组

问题描述 请问一下android-环信怎么透传消息到指定的群组 解决方案 直接调用发送的接口啊http://www.easemob.com/docs/android/payload/

接收方离线后重新上线的时候, 错过的透传消息CMDMessage会包括在OfflineMessage里传给接收方吗?

问题描述 接收方离线后重新上线的时候, 错过的透传消息会包括在OfflineMessage里传给接收方吗?我目前在安卓客户端接收透传消息是按环信uidemo里的注册EMEventListener, 在EMEventListener里case EventNewCMDMessage: 里处理透传消息.在 case EventOfflineMessage: 里是否需要判断EMMessage类型, 如果不是CMDMessage就传给Notifier, 如果是CMDMessage就按透传消息处理? 解决方

android端接收到的透传消息格式

问题描述 之前android端接收到的透传消息格式的type及action都在字段msg下,现在怎么变成在bodies下了 解决方案 这个已经在营销qq里解决,一直在bodies下 在msg下的是服务器端发送透传消息的请求体.

iOS退出环信失败

问题描述 之前都能正常退出,今天发现退出失败.然后重新登录时就一直提示已登录了. 解决方案 这个退出失败应该是由网络不稳定导致的,使用异步退出登录的方法再试试看,并且不需要考虑info属性,将判断中的info去掉,error为空就代表退出成功了.解决方案二:这个可以做个判断,就是注销app的时候,同时环信的退出登录也成功了,才算注销app成功,不然就算失败,需重新注销.

Android应用中拍照后获取照片路径并上传的实例分享_Android

Activity 中的代码,我只贴出重要的事件部分代码 public void doPhoto(View view) { destoryBimap(); String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); s