注册

集成环信IM时常见问题及解决——包括消息、群组、推送

一、消息

  1. 发送透传消息也就是cmd消息时,value的em_开头的字段为环信内部消息字段,如果使用会出现收不到消息回调的情况;

  2. 如果发送消息报500的错误,请检查下你的登录逻辑,大概率就是没有登录环信造成的;

  3. Android在发送图片消息时,默认超过100kb是会压缩图片的,如果对图片质量有要求的话,可以设置不压缩;

        // `imageUri` 为图片本地资源标志符,
// `false` 为不发送原图(默认超过 100 KB 的图片会压缩后发给对方),
// 若需要发送原图传 `true`,即设置 `original` 参数为 `true`。
EMMessage message = EMMessage.createImageSendMessage(imageUri, false, toChatUsername);
// 发送消息
EMClient.getInstance().chatManager().sendMessage(message);


  1. 如果项目里需要本地插入一些会话,需要注意环信id的大小写问题,需要以小写字母去创建会话id,否则会出现获取不到会话的情况;
    EMClient.getInstance().chatManager().getConversation(“xiaoxie”, EMConversation.EMConversationType.Chat,true);

二:群组

  1. 在群组的操作方法中有很多是同步的api,需要注意,同步的api需要放到子线程里,否则会报300;
    例如:createGroup创建群组,destroyGroup解散群组等;
    如果想避免此类问题,可以调用异步方法;

  2. 在发送群组消息时,需要设置message.setChatType(EMMessage.ChatType.GroupChat);否则会出现,发送消息对方收不到的情况;

  3. 获取群组详情的时候,需要先从服务器获取,本地才会有数据;
    当获取不到数据时,需要先检查下,是否直接获取的本地;

     // 根据群组 ID 从本地获取群组详情。
EMGroup group = EMClient.getInstance().groupManager().getGroup(groupId);
// 根据群组 ID 从服务器获取群组详情。
// 同步方法,会阻塞当前线程。异步方法为 asyncGetGroupFromServer(String,
EMValueCallBack)
EMGroup group =
EMClient.getInstance().groupManager().getGroupFromServer(groupId);
  1. 操作黑名单,成员禁言的api是有角色区分的,需要留意下;
    比如:将群成员拉入群组的黑名单,将用户移除出群黑名单,获取群组的黑名单用户列表,只有群主有权限操作;
    将群成员加入禁言列表中,将群成员移出禁言列表,获取群成员禁言列表,开启和关闭全员禁言,群主或者管理员有权限操作;
  2. 当群成员超过200人的时候,需要调用获取完整的群成员列表的方法;

三:推送

  1. fcm推送配置了BOTH类型,如果没有收到离线推送,可以检查下通知栏权限,国内网络的话还需要开启应用后台启动,和自启动权限;如果这些权限都开启的,还是收不到推送的话,请联系环信技术支持;

  2. oppo推送需要注意:
    在console后台上传秘钥的是master secret
    在APP中上传秘钥是app secret
    如果上传错误的话,会造成推送收不到;

相关文档:

0 个评论

要回复文章请先登录注册