android环信登录成功但是收不到消息,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);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值