一、消息
-
环信是不支持空会话的,在插入一个会话,一定要给这个会话再插入一条消息;
-
发送透传消息也就是cmd消息时,value的em_开头的字段为环信内部消息字段,如果使用会出现收不到消息回调的情况;
-
如果发送消息报500的错误,请检查下你的登录逻辑,大概率就是没有登录环信造成的;
-
Android在发送图片消息时,默认超过100kb是会压缩图片的,如果对图片质量有要求的话,可以设置不压缩;
// `imageUri` 为图片本地资源标志符,
// `false` 为不发送原图(默认超过 100 KB 的图片会压缩后发给对方),
// 若需要发送原图传 `true`,即设置 `original` 参数为 `true`。
EMMessage message = EMMessage.createImageSendMessage(imageUri, false, toChatUsername);
// 发送消息
EMClient.getInstance().chatManager().sendMessage(message);
- 如果项目里需要本地插入一些会话,需要注意环信id的大小写问题,需要以小写字母去创建会话id,否则会出现获取不到会话的情况;
EMClient.getInstance().chatManager().getConversation(“xiaoxie”, EMConversation.EMConversationType.Chat,true);
二:群组
-
在群组的操作方法中有很多是同步的api,需要注意,同步的api需要放到子线程里,否则会报300;
例如:createGroup创建群组,destroyGroup解散群组等;
如果想避免此类问题,可以调用异步方法; -
在发送群组消息时,需要设置message.setChatType(EMMessage.ChatType.GroupChat);否则会出现,发送消息对方收不到的情况;
-
获取群组详情的时候,需要先从服务器获取,本地才会有数据;
当获取不到数据时,需要先检查下,是否直接获取的本地;
// 根据群组 ID 从本地获取群组详情。
EMGroup group = EMClient.getInstance().groupManager().getGroup(groupId);
// 根据群组 ID 从服务器获取群组详情。
// 同步方法,会阻塞当前线程。异步方法为 asyncGetGroupFromServer(String,
EMValueCallBack)。
EMGroup group =
EMClient.getInstance().groupManager().getGroupFromServer(groupId);
- 操作黑名单,成员禁言的api是有角色区分的,需要留意下;
比如:将群成员拉入群组的黑名单,将用户移除出群黑名单,获取群组的黑名单用户列表,只有群主有权限操作;
将群成员加入禁言列表中,将群成员移出禁言列表,获取群成员禁言列表,开启和关闭全员禁言,群主或者管理员有权限操作; - 当群成员超过200人的时候,需要调用获取完整的群成员列表的方法;
三:推送
-
fcm推送配置了BOTH类型,如果没有收到离线推送,可以检查下通知栏权限,国内网络的话还需要开启应用后台启动,和自启动权限;如果这些权限都开启的,还是收不到推送的话,请联系环信技术支持;
-
oppo推送需要注意:
在console后台上传秘钥的是master secret
在APP中上传秘钥是app secret
如果上传错误的话,会造成推送收不到;
相关文档:
注册环信:https://console.easemob.com/user/register
集成文档:https://docs-im-beta.easemob.com/document/ios/quickstart.html
社区支持:https://www.imgeek.net/