一、关系链系统简介
·即时通信 IM 提供关系链的存储能力,并确保你的数据具备异地容灾、多地部署和自动扩容缩容的能力,帮助你从服务器宕机、多拷贝主从复制和扩容缩容等复杂处理流程中得到完全地解放。
·即时通信 IM 提供业界通用的业务处理流程,帮助你在用户关系链的逻辑上彻底地解放。
·即时通信 IM 提供专业的运营流程和运营团队,全年 99.99% 的稳定服务质量,帮助你为用户提供具有稳定口碑的服务。
·即时通信 IM 提供简单易用的服务接口和快捷接入的帮助指引,全程为你提供星级服务。
关系链是一组用于描述用户和其他用户关系的数据,即时通信 IM 目前支持的关系链有好友表和黑名单两种。
二、关系链字段
即时通信 IM 关系链系统支持标配关系链字段和自定义关系链字段,关系链字段有如下特性:
·关系链字段通过 Key-Value 形式表示。
·Key 为 String 类型,其命名仅支持英文大小写字母、数字、下划线。
Value 有以下几种类型:
·uint64_t 类型的整数(自定义关系链字段不支持)。
·String 类型的字符串(string 的长度不得超过 500 字节)。
·Bytes 类型的一段 buffer(buffer 的长度不得超过 500 字节)。
·String 类型的字符串数组(每个 string 的长度都不得超过 500 字节,仅供好友表的 Tag_SNS_IM_Group 字段使用)。
三、好友表
即时通信 IM 的好友列表最多允许添加3000个好友。
好友表支持标配好友字段和自定义好友字段。
四、标配好友字段
目前即时通信 IM 支持的标配好友字段如下:
| 字段名称 | 类型 | 描述 |
| Tag_SNS_IM_Group | Array | 好友分组:最多支持 32 个分组。不允许分组名为空。分组名长度不得超过 30 个字节。同一个好友可以有多个不同的分组。 |
| Tag_SNS_IM_Remark | String | 好友备注:备注长度最长不得超过 96 个字节。 |
| Tag_SNS_IM_AddSource | String | 加好友来源:加好友来源字段包含前缀和关键字两部分。加好友来源字段的前缀是:AddSource_Type_ 。关键字:必须是英文字母,且长度不得超过 8 字节,建议用一个英文单词或该英文单词的缩写。示例:加好友来源的关键字是 Android,则加好友来源字段是:AddSource_Type_Android。 |
| Tag_SNS_IM_AddWording | String | 加好友附言:加好友附言的长度最长不得超过 256 个字节。 |
| Tag_SNS_IM_AddTime | Integer | 加好友的时间戳。 |
五、自定义好友字段
自定义好友字段是各 App 根据各自业务需要而设置的好友数据。通过自定义好友字段,各 App 可以将一些额外数据附加到好友上,并通过现有的接口进行读写操作。
App 管理员可以通过即时通信 IM 控制台 > 应用配置 > 功能配置申请自定义好友字段,申请提交后,自定义好友字段将在5分钟内生效。
自定义好友字段的命名规则如下:
·自定义好友字段的名称分为以下两部分:前缀、关键字。
·自定义好友字段的前缀是:Tag_SNS_Custom。
·关键字:必须是英文字母,且长度不得超过 8 字节,建议用一个英文单词或该英文单词的缩写。
·示例:某 App 要申请的自定义好友字段的关键字是 Test,则自定义关系字段的名称是:Tag_SNS_Custom_Test。
申请自定义好友字段时,需要为每一个自定义好友字段提交如下资料:
·自定义好友字段的名称(Key)。
·自定义好友字段的类型(Value):详情可参见 关系链字段。
六、添加好友
即时通信 IM 支持的加好友模式有:批量加好友、一回合加好友和两回合加好友,详情可参见 添加好友。
双向好友:用户 A 的好友表中有用户 B,B 的好友表中也有 A。单向好友:用户 A 的好友表中有用户 B,但 B 的好友表中却没有 A。加好友验证方式:每个用户都可以选择自己以哪种方式被其他用户添加为好友,详情可参见 标配资料字段 中的加好友验证方式字段。一回合加好友:如果账号 A 设置的加好友验证方式是 AllowType_Type_AllowAny,那么任何人添加 A 为好友都可以直接添加成功,这种一个请求就添加好友成功的场景称作一回合加好友。两回合加好友:如果账号 A 设置的加好友验证方式是 AllowType_Type_NeedConfirm,那么任何人添加 A,A 都会收到一个请求加好友验证消息,这是第一个回合,然后 A 对这个请求加好友验证消息进行同意操作时,这是第二个回合,这种需要验证的加好友场景就被称为两回合加好友。
七、删除好友
即时通信 IM 支持单向删除好友和双向删除好友等两种好友删除模式。
| 删除模式 | DeleteType | 描述 |
| 单向删除好友 | Delete_Type_Single | 只将 To_Account 从 From_Account 的好友表中删除,但不会将 From_Account 从 To_Account 的好友表中删除 |
| 双向删除好友 | Delete_Type_Both | 将 To_Account 从 From_Account 的好友表中删除,同时将 From_Account 从 To_Account 的好友表中删除 |
即时通信 IM 也支持批量删除好友,更多信息可参见 删除好友。
八、校验好友
即时通信 IM 支持以下两种好友校验模式:单向校验好友关系、双向校验好友关系。
| 校验模式 | CheckType | 描述 |
| 单向校验好友关系 | CheckResult_Type_Single | 只会检查 From_Account 的好友表中是否有 To_Account,不会检查 To_Account 的好友表中是否有 From_Account |
| 双向校验好友关系 | CheckResult_Type_Both | 既会检查 From_Account 的好友表中是否有 To_Account,也会检查 To_Account 的好友表中是否有 From_Account |
单向校验好友关系时可能的结果有:
| Relation | 描述 |
| CheckResult_Type_NoRelation | From_Account 的好友表中没有 To_Account,但无法确定 To_Account 的好友表中是否有 From_Account |
| CheckResult_Type_AWithB | From_Account 的好友表中有 To_Account,但无法确定 To_Account 的好友表中是否有 From_Account |
双向校验好友关系时可能的结果有:
| Relation | 描述 |
| CheckResult_Type_BothWay | From_Account 的好友表中有 To_Account,To_Account 的好友表中也有 From_Account |
| CheckResult_Type_AWithB | From_Account 的好友表中有 To_Account,但 To_Account 的好友表中没有 From_Account |
| CheckResult_Type_BWithA | From_Account 的好友表中没有 To_Account,但 To_Account 的好友表中有 From_Account |
| CheckResult_Type_NoRelation | From_Account 的好友表中没有 To_Account,To_Account 的好友表中也没有 From_Account |
校验好友的其他相关信息可参见 校验好友。
九、黑名单
每个用户都有一份黑名单,用于保存被该用户屏蔽的账号。
用户 A 将用户 B 加入黑名单后,A 与 B 之间的好友关系会被解除(如果有),且 A 与 B 之间无法再发起加好友请求。
即时通信 IM 的黑名单列表最多允许添加 1000 个黑名单账号,且不支持配置。
十、添加黑名单
即时通信 IM 支持批量添加黑名单,详情可参见:添加黑名单。
十一、删除黑名单
即时通信 IM 支持批量删除黑名单,详情可参见:删除黑名单。
十二、拉取黑名单
即时通信 IM 支持通过分页模式拉取全量黑名单,详情可参见:拉取黑名单。
十三、校验黑名单
即时通信 IM 支持以下两种黑名单校验模式:单向校验黑名单关系、双向校验黑名单关系。
| 校验模式 | CheckType | 描述 |
| 单向校验黑名单关系 | BlackCheckResult_Type_Single | 只会检查 From_Account 的黑名单中是否有 To_Account,不会检查 To_Account 的黑名单中是否有 From_Account |
| 双向校验黑名单关系 | BlackCheckResult_Type_Both | 既会检查 From_Account 的黑名单中是否有 To_Account,也会检查 To_Account 的黑名单中是否有 From_Account |
单向校验黑名单关系时可能的结果有:
| Relation | 描述 |
| BlackCheckResult_Type_AWithB | From_Account 的黑名单中有 To_Account,但无法确定 To_Account 的黑名单中是否有 From_Account |
| BlackCheckResult_Type_NO | From_Account 的黑名单中没有 To_Account,但无法确定 To_Account 的黑名单中是否有 From_Account |
双向校验黑名单关系时可能的结果有:
| Relation | 描述 |
| BlackCheckResult_Type_BothWay | From_Account 的黑名单中有 To_Account,To_Account 的黑名单中也有 From_Account |
| BlackCheckResult_Type_AWithB | From_Account 的黑名单中有 To_Account,但 To_Account 的黑名单中没有 From_Account |
| BlackCheckResult_Type_BWithA | From_Account 的黑名单中没有 To_Account,但 To_Account 的黑名单中有 From_Account |
| BlackCheckResult_Type_NO | From_Account 的黑名单中没有 To_Account,To_Account 的黑名单中也没有 From_Account |
校验黑名单的其他相关信息可参见 校验黑名单。
十四、相关文档
·用户资料与关系链(Android)
·用户资料与关系链(iOS)
·用户资料(Web & 小程序 & uni-app)