( 最近更新时间:2020-04-28 19:00:00 )
# 什么是 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 |
# 融云内置消息有哪些 ?
内置消息以及对应消息结构汇总: https://docs.rongcloud.cn/im/introduction/message_structure/#_4 (opens new window)
# 什么时候使用自定义消息 ?
当融云的内置消息无法满足开发者产品需求时,开发者可使用自定义消息
比如: 客户需实现分享名片功能,则可定义 CardMessage,代表名片消息。以 Web 2.x 注册消息为例,代码如下
var messageName = 'CardMessage'; // 消息名称 var objectName = 'RC:CardMsg'; // 消息内置名称 var messageTag = new RongIMLib.MessageTag(true, true); // 是否存储, 是否计数 var properties = ['userId', 'name', 'portraitUri', 'sendUserId', 'sendUserName', 'extra', 'type']; // 内置消息字段 RongIMClient.registerMessageType(messageName, objectName, messageTag, properties);
已复制
2
3
4
5
# 如何限制只有好友之间才能互发消息 ?
好友关系由开发者应用服务器自行维护。融云服务器提供消息发送能力,消息发送过程中默认不会做任何权限校验
开发者得到 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、参考 远端推送提醒 (opens new window),确认有没有自定义一个继承自融云 PushMessageReceiver 的广播接收器
5、如果都不是上面的原因,需提工单 (opens new window)。并提供应用 从启动开始到接受后台消息
这个过程的日志输出
# 自定义消息样式是否可以修改 ?
# 接受不到消息怎么办 ?
1、确认 SDK 已经初始化,并且已经连接成功(走了 connect 成功回调)
2、排查发送端的发送消息填入的 targetId 是否是您的接收消息用户的 userId
3、可提供 AppKey、发送用户 id、接收用户 id、发送时间、消息 messageUId,提工单 (opens new window)排查