69MainActivity的透传消息

来源:互联网 发布:淘宝店铺销量排行榜 编辑:程序博客网 时间:2024/05/17 18:26

官方文档的描述:

发送透传消息

透传消息能做什么:头像,昵称的更新等,就是不通知手机端,收到消息可以自定义处理的一种消息。

透传消息发送格式

EMMessage cmdMsg = EMMessage.createSendMessage(EMMessage.Type.CMD);//支持单聊和群聊,默认单聊,如果是群聊添加下面这行cmdMsg.setChatType(ChatType.GroupChat)String action="action1";//action可以自定义,在广播接收时可以收到CmdMessageBody cmdBody=new CmdMessageBody(action);String toUsername="test1";//发送给某个人cmdMsg.setReceipt(toUsername);cmdMsg.setAttribute("a", "a");//支持自定义扩展message.addBody(body); EMChatManager.getInstance().sendMessage(message, new EMCallBack());

CMD消息广播监听

    // 注册一个cmd消息的BroadcastReceiverIntentFilter cmdIntentFilter = new IntentFilter(EMChatManager.getInstance().getCmdMessageBroadcastAction());mContext.registerReceiver(cmdMessageReceiver, cmdIntentFilter);    /** * cmd消息BroadcastReceiver */private BroadcastReceiver cmdMessageReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {//获取cmd message对象String msgId = intent.getStringExtra("msgid");EMMessage message = intent.getParcelableExtra("message");//获取消息bodyCmdMessageBody cmdMsgBody = (CmdMessageBody) message.getBody();String aciton = cmdMsgBody.action;//获取自定义action//获取扩展属性String attr=message.getStringAttribute("a");}};
/** *  * 透传消息能做什么:头像,昵称的更新等,就是不通知手机端,收到消息可以自定义处理的一种消息。 *  */private BroadcastReceiver cmdMessageReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {abortBroadcast();LogUtil.d(TAG, "收到透传消息"); // 获取cmd message对象            String msgId = intent.getStringExtra("msgid");            EMMessage message = intent.getParcelableExtra("message");CmdMessageBody cmdMessageBody = (CmdMessageBody) message.getBody();String action = cmdMessageBody.action;Toast.makeText(MainActivity.this, "收到透传:action" + action, 0).show();}};

代码注册:

  // 注册一个透传消息的BroadcastReceiver        IntentFilter cmdMessageIntentFilter = new IntentFilter(EMChatManager                .getInstance().getCmdMessageBroadcastAction());        cmdMessageIntentFilter.setPriority(3);        registerReceiver(cmdMessageReceiver, cmdMessageIntentFilter);

这里提到的:

 EMMessage message = intent.getParcelableExtra("message");

这种获取数据的方式,下一篇讲解。

0 0