关系链管理
关系链系统简介
即时通信 IM 开放了用户关系链托管能力,提供关系链相关的一整套完整解决方案。如果您不希望自行开发或维护 App 内用户之间的好友关系,并且轻松玩转加删好友等一系列功能,那么您可以选择即时通信 IM 的关系链托管服务:
即时通信 IM 提供关系链的存储能力,并确保您的数据具备异地容灾、多地部署和自动扩容缩容的能力,帮助您从服务器宕机、多拷贝主从复制和扩容缩容等复杂处理流程中得到完全地解放。
即时通信 IM 提供业界通用的业务处理流程,帮助您在用户关系链的逻辑上彻底地解放。
即时通信 IM 提供专业的运营流程和运营团队,全年 99.99% 的稳定服务质量,帮助您为用户提供具有稳定口碑的服务。
即时通信 IM 提供简单易用的服务接口和快捷接入的帮助指引,全程为您提供星级服务。
关系链是一组用于描述用户和其他用户关系的数据,即时通信 IM 目前支持的关系链有好友表和黑名单两种。
关系链字段
即时通信 IM 关系链系统支持标配关系链字段和自定义关系链字段,关系链字段有如下特性:
关系链字段通过 Key-Value 形式表示。
Key 为 String 类型,其命名仅支持英文大小写字母、数字、下划线。
Value 有以下几种类型:
a. uint64_t 类型的整数(自定义关系链字段不支持)。
b. string 类型的字符串(string 的长度不得超过 500 字节)。
c. bytes 类型的一段 buffer(buffer 的长度不得超过 500 字节)。
d. string 类型的字符串数组(每个 string 的长度都不得超过 500 字节,仅供好友表的 Tag_SNS_IM_Group 字段使用)。
好友表
即时通信 IM 的好友列表最多允许添加3000个好友。
好友表支持标配好友字段和自定义好友字段。
标配好友字段
目前即时通信 IM 支持的标配好友字段如下:
字段名称 | 类型 | 描述 |
Tag_SNS_IM_Group | Array | 好友分组: 1. 最多支持 32 个分组;2. 不允许分组名为空;3. 分组名长度不得超过 30 个字节;4. 同一个好友可以有多个不同的分组 |
Tag_SNS_IM_Remark | string | 好友备注:备注长度最长不得超过 96 个字节 |
Tag_SNS_IM_AddSource | string | 加好友来源:1. 加好友来源字段包含前缀和关键字两部分;2. 加好友来源字段的前缀是:AddSource_Type_ ;3. 关键字:必须是英文字母,且长度不得超过 8 字节,建议用一个英文单词或该英文单词的缩写;4. 示例:加好友来源的关键字是 Android,则加好友来源字段是:AddSource_Type_Android |
Tag_SNS_IM_AddWording | string | 加好友附言:1. 加好友附言的长度最长不得超过 256 个字节 |
Tag_SNS_IM_AddTime | Integer | 加好友的时间戳 |
自定义好友字段
自定义好友字段是各 App 根据各自业务需要而设置的好友数据。通过自定义好友字段,各 App 可以将一些额外数据附加到好友上,并通过现有的接口进行读写操作。
App 管理员可以通过即时通信 IM 控制台 >应用配置>功能配置申请自定义好友字段,申请提交后,自定义好友字段将在5分钟内生效。
自定义好友字段的命名规则如下:
自定义好友字段的名称分为以下两部分:前缀、关键字。
自定义好友字段的前缀是:Tag_SNS_Custom。
关键字:必须是英文字母,且长度不得超过 8 字节,建议用一个英文单词或该英文单词的缩写。
示例:某 App 要申请的自定义好友字段的关键字是 Test,则自定义关系字段的名称是:Tag_SNS_Custom_Test。
申请自定义好友字段时,需要为每一个自定义好友字段提交如下资料:
自定义好友字段的名称(Key)。
自定义好友字段的类型(Value):详情可参见 关系链字段。
添加好友
双向好友:用户 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 支持以下两种好友校验模式:单向校验好友关系、双向校验好友关系。
校验模式 | 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 支持以下两种黑名单校验模式:单向校验黑名单关系、双向校验黑名单关系。
校验模式 | 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 |