# 什么是 targetId ?
说明: targetId 为目标 id,senderUserId 为发送方 id
举例: user1 为发送方,user2 为接收方,对应 targetId 值如下:
user1(发送方): 会话类型 targetId senderUserId 单聊 user2 user1
群聊 群组 id user1
聊天室 聊天室 id user1
user2(接收方): 会话类型 targetId senderUserId 单聊 user1 user1
群聊 群组 id user1
聊天室 聊天室 id user1
# 融云内置消息有哪些 ?
内置消息以及对应消息结构汇总: 内置消息
# 什么时候使用自定义消息 ?
当融云的内置消息无法满足开发者产品需求时,开发者可使用自定义消息
比如: 客户需实现分享名片功能,则可定义 CardMessage,代表名片消息。以 Web 2.x 注册消息为例,代码如下
# 如何限制只有好友之间才能互发消息 ?
好友关系由开发者应用服务器自行维护。融云服务器提供消息发送能力,消息发送过程中默认不会做任何权限校验
开发者得到 userId 后即可发送消息,例如: A 发送消息给 B,只需要把 B 的 userId 传给融云服务即可
这样易用的设计可以使开发者高度自由集成自己业务,无需关心和融云的数据同步、安全问题,但如果 userId 如果泄漏,岂不是可以越过开发者的好友关系向任意用户发送消息 ? 针对此情况可采用: 单聊用户白名单服务
单聊用户白名单关系是双向的,只有将对方加入自己的白名单,对方才能送消息给自己,反之一样
例如:
开通单聊用户白名单后 A、B 之间互发消息
1、A 需要添加 B 到 A 的用户白名单中
2、B 需要添加 A 到 B 的用户白名单中
经过以上两步后方可互发消息,解决 userId 泄漏导致非好友之间可任意发送消息
注意: 用户白名单开通后,用户黑名单将实效,需要将黑名单用户数据转换至用户白名单中
功能使用:
1、申请开通功能,提交工单提申请,操作路径:融云开发者后台 -> 技术支持 -> 创建工单 ,开发者后台地址: https://developer.rongcloud.cn
2、设置用户白名单需要开发者的服务器来调用,详细可参考 Server API
# 如何拒绝接收某用户的消息 ?
单聊场景下,如果不想收到某用户的消息,可把此用户加入黑名单中,黑名单中用户无法给当前用户发送消息
例如:
1、用户 B 在用户 A 的黑名单中,用户 A 没有在用户 B 的黑名单中,则用户 B 无法给用户 A 发送单聊消息,用户 A 可以给用户 B 发送单聊消息
2、用户 A 和用户 B 都在对方的黑名单中,则用户 A 和用户 B 无法相互发送消息
3、用户 A 和用户 B 都不在对方黑名单中,则可相互发送消息
注: 黑名单功能不需开通即可使用
# Android 退到后台,却没有弹出通知怎么办 ?
请按以下步骤排查:
1、有没有正确设置用户信息? 如果该消息的发送者,在会话列表页面能正确的显示昵称和头像,则说明用户信息设置没有问题。否则,请先完善用户信息提供者
2、有没有多端登录?如果有,其他端先退出再进行测试
3、有没有设置消息免打扰?新消息提醒有没有关闭?如果有,则需要先关闭上述功能再进行测试
4、参考 远端推送提醒,确认有没有自定义一个继承自融云 PushMessageReceiver 的广播接收器
5、如果都不是上面的原因,需提工单(opens new window)。并提供应用 从启动开始到接受后台消息 这个过程的日志输出
# 自定义消息样式是否可以修改 ?
可以,例如自定义了一类活动报名消息,用户收到消息后点击报名按钮,消息 Cell 上的“去报名”按钮会变为“已报名”,类似需求请参考 知识库(opens new window) 实现即可
可以调用 RongIM.getInstance().setMessageExtra 来设置点击之后的状态,然后调用 RongContext.getInstance().getEventBus().post(message),来刷新界面,同时,发送自定义消息来通知发送者,是发送者也更新状态,来修改红包状态;
# 接受不到消息怎么办 ?
1、确认 SDK 已经初始化,并且已经连接成功(走了 connect 成功回调)
2、排查发送端的发送消息填入的 targetId 是否是您的接收消息用户的 userId
3、可提供 AppKey、发送用户 id、接收用户 id、发送时间、消息 messageUId,提工单(opens new window)排查
# 消息如何显示已读或未读 ?
需要开启已读回执功能 针对单聊会话,如果对方阅读了文本消息,发送方会在消息左边看到一个对勾图标,如需将图标更改为文字“已读”、“未读”,请参考 知识库(opens new window) 实现即可
开启 rc_config.xml 消息回执开关
另外,请在 init 之后调用下面方法来设置支持消息回执的会话类型。目前只支持 PRIVATE,GROUP 和 DISCUSSION 三种类型。
自定义消息模板 ProviderTag 上需要标识
# 消息的气泡是否可以更换 ?
可以,直接替换 RongCloud.bundle 中对应的资源图片即可
替换资源图片中的 rc_ic_bubble_left_file.9.png 、rc_ic_bubble_right_file.9.png 。
# 长按消息是否可以多选?
可以,从 SDK 2.9.0 版本后开始支持消息长按多选功能,默认实现多选消息删除功能,也可以增加自定义功能,请参考 知识库(opens new window) 实现即可
请参考 文档 实现即可