游戏中的社交聊天
更新时间:
云上曲率IM(即时通讯)服务目前广泛应用于手机游戏行业,针对不同类型手游提供场景化服务,降低手游开发者的非游戏业务开发难度,快速打造游戏中的聊天功能。
- 支持大型无上限的世界频道、联盟/公会/小组/小队频道、私聊频道,覆盖不同类型手机游戏的聊天场景需求。
- 为玩家提供全球化的交流环境,随时随地翻译文本,交流无障碍。
- 为玩家提供实时音频通话功能,满足游戏玩家自由沟通的需求,提高游戏玩家的参与热情。
- 为游戏审核人员提供后台玩家发言审核服务,净化游戏环境,降低游戏业务在审核服务的成本。
注意:本文中的方法名采用 Unity
平台语言。您可根据需要,选用我们提供的其他语言的IM SDK。
频道
频道 是游戏中用户产生交流的唯一场景,在某些类型游戏中,通过不同的频道,游戏玩家互相交流游戏心得、组织团队战斗、发表游戏信息,是游戏中重要的功能。
频道类型
云上曲率IM SDK提供的 Group
和Room
相关接口,满足游戏中类型频道的使用。
世界频道
世界频道是每位游戏玩家进入游戏后,默认进入的频道。这个频道涵盖当前服务器的所有在线玩家。
- 当玩家上线后,会接收到该频道的所有消息,也可以拉取世界频道的历史消息。
- 玩家下线或离线后,不会接收到世界频道的离线消息推送。
开发者可以通过服务端的“拉入房间接口pullIntoRoom
”,将每一个登录的玩家登录后拉进世界频道。
联盟/公会
联盟/公会是当游戏玩家达到一定级别时,可以选择加入的游戏组织。镜像于现实社会的联盟/公会,游戏中的联盟/公会同样是一群有相同游戏目标的玩家的集合,联盟/公会和玩家是强关联的关系,通常使用 “群组 Group
”相关接口实现:
- 当玩家下线后,会接收到联盟/公会的离线消息推送。
- 当玩家上线后,会自动接收到该频道的消息。
一般来说,游戏中的联盟/公会的建立,是通过玩家达到游戏中某些特定条件才可以申请建立。GM(游戏管理员)审批之后,通过服务端创建联盟/公会,并设定玩家的角色。
- 联盟/公会的加入:玩家使用“申请加入群组
JoinGroup
”加入联盟/公会,联盟/公会成员使用“邀请加入群组 InviteIntoGroup
”邀请其他玩家加入联盟/公会
- 联盟/公会的退出:使用“离开群组
LeaveGroup
”离开所在的联盟/公会
- 联盟/公会的解散:使用“解散群组
DismissGroup
”解散所在的联盟/公会
- 联盟/公会成员:使用“查看成员列表
GetGroupMembers
”、“查看成员数量 GetGroupMemberCount
”查看联盟/公会成员信息,使用 “移除成员 RemoveGroupMembers
”将联盟/公会成员踢出
注意:查看成员个人信息时,需要配合“查看用户信息 GetUserInfos
”共同使用。
- 联盟/公会管理员:使用“新增管理员
AddGroupManagers
”、“取消管理员 RemoveGroupManagers
”变更联盟/公会管理员,使用“转让群主 TransferGroup
”将联盟长/公会长的角色转让
临时组队/单局小队
当游戏需要玩家临时组建队伍达成游戏目标,或进入单据游戏自动组成小队(MOBA对战类型游戏)时,可以通过 “房间Room
”类接口实现这些场景。
如果是玩家自行组队,可以使用:
- 加入小队:使用“加入房间
JoinRoom
”创建小队,小队成员使用“邀请加入房间 InviteIntoRoom
”邀请玩家加入小队
- 离开小队:使用“退出房间
LeaveRoom
”离开所在小队
- 查看小队人员:使用“查看成员列表
GetRoomMembers
”、“查看成员数量 GetRoomMemberCount
”查看小队成员信息,使用 “移除成员 RemoveRoomMembers
”将小队成员踢出
注意:由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动创建房间的接口,而是通过服务端进行创建。因此需要开发者自行将创建房间的操作通过服务端来实现。
如果是游戏自动组队,可以使用:
- 离开小队:使用“退出房间
LeaveRoom
”离开所在小队
- 查看小队成员:使用“查看成员列表
GetRoomMembers
”、“查看成员数量 GetRoomMemberCount
”查看小队成员信息
注意:查看成员个人信息时,需要配合“查看用户信息 GetUserInfos
”共同使用。
好友小队
游戏玩家可以在游戏中与好友组成固定队伍,共同达成游戏目标。这种场景可以通过 “群组 Group
”类接口实现。
当形成好友小队时:
- 玩家下线后,会接收到好有小队离线消息推送。
- 玩家上线后,会自动接收到好友小队的消息。
在好友小队中,发起组队的玩家自动为小队队长(群主),具有群主的相关权限。
注意:由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动创建群组的接口,而是通过服务端进行创建。因此需要开发者自行将创建群组的操作通过服务端来实现。
- 小队的加入:玩家使用“申请加入群组
JoinGroup
”加入小队,小队成员可以使用“邀请加入群组 InviteIntoGroup
”邀请其他玩家加入小队
- 小队的退出:使用“离开群组
LeaveGroup
”离开所在的小队
- 小队的解散:使用“解散群组
DismissGroup
”解散所在的小队
- 小队成员:使用“查看成员列表
GetGroupMembers
”、“查看成员数量 GetGroupMemberCount
”查看小队成员信息,使用 “移除成员 RemoveGroupMembers
”将小队成员踢出
注意:查看成员个人信息时,需要配合“查看用户信息 GetUserInfos
”共同使用。
- 小队管理员:使用“新增管理员
AddGroupManagers
”、“取消管理员 RemoveGroupManagers
”变更小队管理员,使用“转让群主 TransferGroup
”将小队队长的角色转让
私聊
游戏玩家之间可以在游戏中发起单对单的私聊,开发者可以在云上控制台中设置游戏是否允许陌生人聊天。
频道资料
频道资料是指单个频道维度的属性,包括名称、简介、频道所有者、自定义字段等。通常,在加入频道前,游戏玩家通过看看频道资料,来决定是否加入。
频道资料包括:
参数
类型
说明
ID
long
频道的ID:GroupId或RoomId
Name
string
频道的名称
PortraitUrl
string
频道头像URL
Profile
string
频道简介
attrs
string
自定义业务信息
OwnerUId
long
频道所有者ID:群主ID或房主ID
ManagerUids
long
频道管理员ID
ApplyGrant
-
频道申请加入权限:自由加入;需要频道所有者或管理员审核;禁止添加
InviteGrant
-
频道邀请加入权限:所有人都可以邀请;只允许频道所有者或管理员邀请
注意,频道的申请加入权限可能会因频道的性质(Group
或Room
)有所差异,具体开阀时请参考相关文档。
获取频道资料
游戏中,当加入联盟/公会或者固定小队时,玩家需要查看相关频道资料:
- 联盟/公会信息:使用 “获取群组信息
GetGroupInfos
”获取联盟/公会的信息
- 小队信息:使用 “获取群组信息
GetGroupInfos
”获取小队的信息
修改频道资料
由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动修改频道资料的接口,而是通过服务端进行创建。因此需要开发者自行将修改频道资料的操作通过服务端来实现。
会话
当玩家创建了一个私聊或小队聊天,或者玩家在游戏中加入联盟/公会,其中有消息的收发时,对应的会话就随之创建。会话可以简单概括为消息的集合。
注意:世界频道可以设置为默认存在的会话,只要有人在世界频道中发言。
会话列表
会话列表,是所有会话的集合。通过会话列表,玩家可以方便的查看产生消息的会话,并快速找到目标会话。
获取会话列表
云上IM SDK 提供 “获取会话列表 GetConversation
” 方法从服务端取得当前玩家具有的所有会话信息。
在使用“获取会话列表 GetConversation
” 方法时,方法中会返回每条会话中最后一条消息,用于UI展示。
注意:如果玩家有很多的会话时,为了避免加载过慢和网络流量消耗,建议使用本地存储会话,或者从服务端获取未读会话列表
当游戏中需要由邀请加入频道、申请加入频道、请求加入好友 等请求类功能时,在获取会话列表时,也需要将这类型的请求列表同步获取。
- 频道所有者/管理员,“获取加入群组申请列表
GetGroupApplyList
”、“获取加入房间申请列表GetRoomApplyList
”
- 玩家,“获取邀请加入群组列表
GetGroupInviteList
”、“获取邀请加入房间列表GetRoomInviteList
”
- 玩家,“获取自己申请加入群组列表
GetGroupRequestList
”、“获取自己申请加入房间列表
GetRoomRequestList
”
- 玩家,“获取加自己为好友申请列表
GetFriendApplyList
”、“获取自己发出的加好友申请列表
GetFriendRequestList
”
注意,上述请求类内容均有时效,当超过时效后,该请求内容无法获取。
未读会话列表
未读会话是指玩家离线后产生的发送给玩家的消息集合。未读会话并未触达离线玩家的客户端,只是暂存在服务端,标注为“未读”。当离线玩家重新上线后,会通过拉取会话列表,来获取到有哪些消息是属于“未读”状态,进而获取到这些内容。
注意:此处的未读和游戏聊天UI上的未读,意义不同。
获取未读会话列表
为了减少玩家每次登录时拉取全部会话所带来的服务器和网络压力,开发者可以使用“获取未读会话列表 GetAllUnreadConversation
”方法来只获取未读的会话及相关信息。未读会话列表包括未读会话产生的未读消息条数。
未读会话列表仅返回会话的未读消息数量,开发者需要通过使用获取历史消息的方法,获取未读消息并展示在UI上。
注意:我们强烈建议如果游戏开发者不打算使用本地存储的话,在玩家登录时,仅使用“获取未读会话列表 GetAllUnreadConversation
”方法,避免使用“获取会话列表 GetConversation
”方法造成的服务器和网络压力。
如果是玩家更换终端,也同样如此。除非游戏具备会话同步机制。
清除会话未读状态
云上IM SDK提供方法“清除会话未读状态ClearUnread
”,用于将会话未读状态清除。开发者可以再客户端拉取未读会话后,通过此方法清除未读状态,避免重复拉取。
注意:“获取未读会话列表 GetAllUnreadConversation
”方法中有参数clear
可以实现获取时即清除会话未读状态。如果不使用此参数,建议使用“清除会话未读状态ClearUnread
”方法。
消息
消息是游戏社交中的核心,通过消息传递,玩家之间达成内容分享。消息也是会话的基础,众多各种类型的消息,组成了不同的会话,简单有效的串联起了玩家。
消息类型
云上IM SDK支持多种类型消息:
消息内容
消息区分
说明
文本消息
调用 sendChatMessage
方法
普通文字消息
图片消息
调用 sendFile
方法
一张图片内容
音频消息
调用 sendFile
方法
一段音频内容
视频消息
调用 sendFile
方法
一段视频内容
语音消息
调用 sendAudioMessage
方法
一段自定义录制的语音内容,带播放
文件消息
调用 sendFile
方法
一个自定义文件内容
开发者可以使用消息结构中的attrs
参数自定义消息,发送贴合业务需求的类型消息。
获取历史聊天消息
开发者可以使用“获取历史聊天消息GetHitoryChatMessage
”方法,来实现单个会话的历史聊天消息获取。
一般来说,当玩家点进一个会话之后,开发者需要使用该方法从服务端获取到历史聊天消息。方法中提供顺序/倒序、条数、起始结束时间、索引消息ID 等参数协助开发者实现历史聊天的获取。
注意:索引消息ID可以从获取未读会话列表方法的返回中获取到,开发者可以直接使用。
用户
云上IM SDK支持游戏中玩家信息的维护。开发者可直接游戏中的用户信息存储到云上服务端,通过服务端相关API进行读取/更新/维护操作。
用户信息
用户信息中包括:
参数
类型
说明
ID
long
用户ID
Name
string
用户名称
PortraitUrl
string
用户头像URL
Profile
string
用户简介
attrs
string
自定义业务信息
ApplyGrant
-
好友申请权限:自由添加;需要用户审核;禁止添加
获取用户信息
玩家可以通过“获取用户信息GetUserInfos
”方法,获取到游戏中其他玩家的信息。
- 添加用户为好友时,可以使用该方法
- 查看频道用户时,可以使用该方法
修改用户信息
由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动修改用户信息的接口,而是通过服务端进行创建。因此需要开发者自行将修改用户信息的操作通过服务端来实现。
好友关系
好友关系管理(关系链管理),是游戏社交中重要的内容。会话/消息特性,回依赖好友关系状态。游戏中玩家关系的互动串联,也是依赖于好友关系。
云上IM SDK提供允许陌生人发消息的开关,开发者可以根据游戏的使用场景,确定好友关系的使用方法。
注意,此开关是项目级开关,无法单独为游戏中玩家开放。
添加好友关系
玩家可以使用“添加好友AddFriend
”方法添加其他用户为好友。
如果允许陌生人发消息的开关为关,则添加好友成功后,双方可以开始进行会话聊天。
云上IM SDK提供默认玩家的好友人数上限为100名好友。
解除好友关系
玩家可以使用“删除好友DeleteFriends
”方法解除用户的好友关系。
如果允许陌生人发消息的开关为关,则解除好友成功后,双方无法再进行会话聊天。
黑名单处理
云上IM SDK提供玩家拉黑其他玩家的功能。同时提供消息黑名单双向验证的功能,开发者可以根据游戏使用场景,设置拉黑之后玩家之间发送聊天的规则。
注意,此开关是项目级开关,无法单独为游戏中玩家开放。
辅助能力
云上IM SDK出了提供上述功能以外,对于社交聊天场景还提供了其他功能,便于玩家之间快速交流。
离线推送
在游戏中,玩家需要随时了解其他玩家的新动态、游戏进度的拓展、战场的最新变化等内容,这会促使游戏为离线玩家提供推送服务。
为了避免维持聊天的长连接而导致的过多资源消耗,建议开发者使用各终端厂商提供的系统级推送通道来进行消息通知。
云上IM SDK支持的终端系统有:
- APNs:iOS
- Google FCM:OPPO/VIVO/华为/小米/魅族/荣耀。
使用离线推送功能,需要在程序启动时(或周期性)调用“添加推送设备AddDevice
” 方法来添加DeviceToken
。
识别翻译
云上IM SDK提供对聊天内容的文字进行实时识别翻译功能。这些功能需要通过云上控制台来完成操作。
注意:识别翻译服务属于单独服务,需要另行计费。
内容审核
针对内容审核的需求,云上IM SDK提供云端审核服务,检测聊天场景中产生文本、图片、音频、视频内容,并可以指定符合游戏需求的审核策略。这些功能需要通过云上控制台来完成操作。
注意:内容审核服务属于单独服务,需要另行计费。
实时音视频
为了更便于游戏玩家的交流,我们建议在游戏中增加实时音视频通话功能(目前主要是实时音频通话),来满足私聊、频道聊天的爽快交流。
关于RTC相关的集成使用,请参考云上RTC相关内容。
注意:实时音视频属于单独服务,需要另行计费。
云上曲率IM(即时通讯)服务目前广泛应用于手机游戏行业,针对不同类型手游提供场景化服务,降低手游开发者的非游戏业务开发难度,快速打造游戏中的聊天功能。
- 支持大型无上限的世界频道、联盟/公会/小组/小队频道、私聊频道,覆盖不同类型手机游戏的聊天场景需求。
- 为玩家提供全球化的交流环境,随时随地翻译文本,交流无障碍。
- 为玩家提供实时音频通话功能,满足游戏玩家自由沟通的需求,提高游戏玩家的参与热情。
- 为游戏审核人员提供后台玩家发言审核服务,净化游戏环境,降低游戏业务在审核服务的成本。
注意:本文中的方法名采用
Unity
平台语言。您可根据需要,选用我们提供的其他语言的IM SDK。
频道
频道 是游戏中用户产生交流的唯一场景,在某些类型游戏中,通过不同的频道,游戏玩家互相交流游戏心得、组织团队战斗、发表游戏信息,是游戏中重要的功能。
频道类型
云上曲率IM SDK提供的 Group
和Room
相关接口,满足游戏中类型频道的使用。
世界频道
世界频道是每位游戏玩家进入游戏后,默认进入的频道。这个频道涵盖当前服务器的所有在线玩家。
- 当玩家上线后,会接收到该频道的所有消息,也可以拉取世界频道的历史消息。
- 玩家下线或离线后,不会接收到世界频道的离线消息推送。
开发者可以通过服务端的“拉入房间接口pullIntoRoom
”,将每一个登录的玩家登录后拉进世界频道。
联盟/公会
联盟/公会是当游戏玩家达到一定级别时,可以选择加入的游戏组织。镜像于现实社会的联盟/公会,游戏中的联盟/公会同样是一群有相同游戏目标的玩家的集合,联盟/公会和玩家是强关联的关系,通常使用 “群组 Group
”相关接口实现:
- 当玩家下线后,会接收到联盟/公会的离线消息推送。
- 当玩家上线后,会自动接收到该频道的消息。
一般来说,游戏中的联盟/公会的建立,是通过玩家达到游戏中某些特定条件才可以申请建立。GM(游戏管理员)审批之后,通过服务端创建联盟/公会,并设定玩家的角色。
- 联盟/公会的加入:玩家使用“申请加入群组
JoinGroup
”加入联盟/公会,联盟/公会成员使用“邀请加入群组InviteIntoGroup
”邀请其他玩家加入联盟/公会 - 联盟/公会的退出:使用“离开群组
LeaveGroup
”离开所在的联盟/公会 - 联盟/公会的解散:使用“解散群组
DismissGroup
”解散所在的联盟/公会 - 联盟/公会成员:使用“查看成员列表
GetGroupMembers
”、“查看成员数量GetGroupMemberCount
”查看联盟/公会成员信息,使用 “移除成员RemoveGroupMembers
”将联盟/公会成员踢出
注意:查看成员个人信息时,需要配合“查看用户信息
GetUserInfos
”共同使用。
- 联盟/公会管理员:使用“新增管理员
AddGroupManagers
”、“取消管理员RemoveGroupManagers
”变更联盟/公会管理员,使用“转让群主TransferGroup
”将联盟长/公会长的角色转让
临时组队/单局小队
当游戏需要玩家临时组建队伍达成游戏目标,或进入单据游戏自动组成小队(MOBA对战类型游戏)时,可以通过 “房间Room
”类接口实现这些场景。
如果是玩家自行组队,可以使用:
- 加入小队:使用“加入房间
JoinRoom
”创建小队,小队成员使用“邀请加入房间InviteIntoRoom
”邀请玩家加入小队 - 离开小队:使用“退出房间
LeaveRoom
”离开所在小队 - 查看小队人员:使用“查看成员列表
GetRoomMembers
”、“查看成员数量GetRoomMemberCount
”查看小队成员信息,使用 “移除成员RemoveRoomMembers
”将小队成员踢出
注意:由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动创建房间的接口,而是通过服务端进行创建。因此需要开发者自行将创建房间的操作通过服务端来实现。
如果是游戏自动组队,可以使用:
- 离开小队:使用“退出房间
LeaveRoom
”离开所在小队 - 查看小队成员:使用“查看成员列表
GetRoomMembers
”、“查看成员数量GetRoomMemberCount
”查看小队成员信息
注意:查看成员个人信息时,需要配合“查看用户信息
GetUserInfos
”共同使用。
好友小队
游戏玩家可以在游戏中与好友组成固定队伍,共同达成游戏目标。这种场景可以通过 “群组 Group
”类接口实现。
当形成好友小队时:
- 玩家下线后,会接收到好有小队离线消息推送。
- 玩家上线后,会自动接收到好友小队的消息。
在好友小队中,发起组队的玩家自动为小队队长(群主),具有群主的相关权限。
注意:由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动创建群组的接口,而是通过服务端进行创建。因此需要开发者自行将创建群组的操作通过服务端来实现。
- 小队的加入:玩家使用“申请加入群组
JoinGroup
”加入小队,小队成员可以使用“邀请加入群组InviteIntoGroup
”邀请其他玩家加入小队 - 小队的退出:使用“离开群组
LeaveGroup
”离开所在的小队 - 小队的解散:使用“解散群组
DismissGroup
”解散所在的小队 - 小队成员:使用“查看成员列表
GetGroupMembers
”、“查看成员数量GetGroupMemberCount
”查看小队成员信息,使用 “移除成员RemoveGroupMembers
”将小队成员踢出
注意:查看成员个人信息时,需要配合“查看用户信息
GetUserInfos
”共同使用。
- 小队管理员:使用“新增管理员
AddGroupManagers
”、“取消管理员RemoveGroupManagers
”变更小队管理员,使用“转让群主TransferGroup
”将小队队长的角色转让
私聊
游戏玩家之间可以在游戏中发起单对单的私聊,开发者可以在云上控制台中设置游戏是否允许陌生人聊天。
频道资料
频道资料是指单个频道维度的属性,包括名称、简介、频道所有者、自定义字段等。通常,在加入频道前,游戏玩家通过看看频道资料,来决定是否加入。 频道资料包括:
参数 | 类型 | 说明 |
---|---|---|
ID | long | 频道的ID:GroupId或RoomId |
Name | string | 频道的名称 |
PortraitUrl | string | 频道头像URL |
Profile | string | 频道简介 |
attrs | string | 自定义业务信息 |
OwnerUId | long | 频道所有者ID:群主ID或房主ID |
ManagerUids | long | 频道管理员ID |
ApplyGrant | - | 频道申请加入权限:自由加入;需要频道所有者或管理员审核;禁止添加 |
InviteGrant | - | 频道邀请加入权限:所有人都可以邀请;只允许频道所有者或管理员邀请 |
注意,频道的申请加入权限可能会因频道的性质(
Group
或Room
)有所差异,具体开阀时请参考相关文档。
获取频道资料
游戏中,当加入联盟/公会或者固定小队时,玩家需要查看相关频道资料:
- 联盟/公会信息:使用 “获取群组信息
GetGroupInfos
”获取联盟/公会的信息 - 小队信息:使用 “获取群组信息
GetGroupInfos
”获取小队的信息
修改频道资料
由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动修改频道资料的接口,而是通过服务端进行创建。因此需要开发者自行将修改频道资料的操作通过服务端来实现。
会话
当玩家创建了一个私聊或小队聊天,或者玩家在游戏中加入联盟/公会,其中有消息的收发时,对应的会话就随之创建。会话可以简单概括为消息的集合。
注意:世界频道可以设置为默认存在的会话,只要有人在世界频道中发言。
会话列表
会话列表,是所有会话的集合。通过会话列表,玩家可以方便的查看产生消息的会话,并快速找到目标会话。
获取会话列表
云上IM SDK 提供 “获取会话列表 GetConversation
” 方法从服务端取得当前玩家具有的所有会话信息。
在使用“获取会话列表 GetConversation
” 方法时,方法中会返回每条会话中最后一条消息,用于UI展示。
注意:如果玩家有很多的会话时,为了避免加载过慢和网络流量消耗,建议使用本地存储会话,或者从服务端获取未读会话列表
当游戏中需要由邀请加入频道、申请加入频道、请求加入好友 等请求类功能时,在获取会话列表时,也需要将这类型的请求列表同步获取。
- 频道所有者/管理员,“获取加入群组申请列表
GetGroupApplyList
”、“获取加入房间申请列表GetRoomApplyList
” - 玩家,“获取邀请加入群组列表
GetGroupInviteList
”、“获取邀请加入房间列表GetRoomInviteList
” - 玩家,“获取自己申请加入群组列表
GetGroupRequestList
”、“获取自己申请加入房间列表GetRoomRequestList
” - 玩家,“获取加自己为好友申请列表
GetFriendApplyList
”、“获取自己发出的加好友申请列表GetFriendRequestList
”
注意,上述请求类内容均有时效,当超过时效后,该请求内容无法获取。
未读会话列表
未读会话是指玩家离线后产生的发送给玩家的消息集合。未读会话并未触达离线玩家的客户端,只是暂存在服务端,标注为“未读”。当离线玩家重新上线后,会通过拉取会话列表,来获取到有哪些消息是属于“未读”状态,进而获取到这些内容。
注意:此处的未读和游戏聊天UI上的未读,意义不同。
获取未读会话列表
为了减少玩家每次登录时拉取全部会话所带来的服务器和网络压力,开发者可以使用“获取未读会话列表 GetAllUnreadConversation
”方法来只获取未读的会话及相关信息。未读会话列表包括未读会话产生的未读消息条数。
未读会话列表仅返回会话的未读消息数量,开发者需要通过使用获取历史消息的方法,获取未读消息并展示在UI上。
注意:我们强烈建议如果游戏开发者不打算使用本地存储的话,在玩家登录时,仅使用“获取未读会话列表
GetAllUnreadConversation
”方法,避免使用“获取会话列表GetConversation
”方法造成的服务器和网络压力。 如果是玩家更换终端,也同样如此。除非游戏具备会话同步机制。
清除会话未读状态
云上IM SDK提供方法“清除会话未读状态ClearUnread
”,用于将会话未读状态清除。开发者可以再客户端拉取未读会话后,通过此方法清除未读状态,避免重复拉取。
注意:“获取未读会话列表
GetAllUnreadConversation
”方法中有参数clear
可以实现获取时即清除会话未读状态。如果不使用此参数,建议使用“清除会话未读状态ClearUnread
”方法。
消息
消息是游戏社交中的核心,通过消息传递,玩家之间达成内容分享。消息也是会话的基础,众多各种类型的消息,组成了不同的会话,简单有效的串联起了玩家。
消息类型
云上IM SDK支持多种类型消息:
消息内容 | 消息区分 | 说明 |
---|---|---|
文本消息 | 调用 sendChatMessage 方法 |
普通文字消息 |
图片消息 | 调用 sendFile 方法 |
一张图片内容 |
音频消息 | 调用 sendFile 方法 |
一段音频内容 |
视频消息 | 调用 sendFile 方法 |
一段视频内容 |
语音消息 | 调用 sendAudioMessage 方法 |
一段自定义录制的语音内容,带播放 |
文件消息 | 调用 sendFile 方法 |
一个自定义文件内容 |
开发者可以使用消息结构中的attrs
参数自定义消息,发送贴合业务需求的类型消息。
获取历史聊天消息
开发者可以使用“获取历史聊天消息GetHitoryChatMessage
”方法,来实现单个会话的历史聊天消息获取。
一般来说,当玩家点进一个会话之后,开发者需要使用该方法从服务端获取到历史聊天消息。方法中提供顺序/倒序、条数、起始结束时间、索引消息ID 等参数协助开发者实现历史聊天的获取。
注意:索引消息ID可以从获取未读会话列表方法的返回中获取到,开发者可以直接使用。
用户
云上IM SDK支持游戏中玩家信息的维护。开发者可直接游戏中的用户信息存储到云上服务端,通过服务端相关API进行读取/更新/维护操作。
用户信息
用户信息中包括:
参数 | 类型 | 说明 |
---|---|---|
ID | long | 用户ID |
Name | string | 用户名称 |
PortraitUrl | string | 用户头像URL |
Profile | string | 用户简介 |
attrs | string | 自定义业务信息 |
ApplyGrant | - | 好友申请权限:自由添加;需要用户审核;禁止添加 |
获取用户信息
玩家可以通过“获取用户信息GetUserInfos
”方法,获取到游戏中其他玩家的信息。
- 添加用户为好友时,可以使用该方法
- 查看频道用户时,可以使用该方法
修改用户信息
由于游戏中需要引入审核机制,因此云上IM SDK不提供客户端主动修改用户信息的接口,而是通过服务端进行创建。因此需要开发者自行将修改用户信息的操作通过服务端来实现。
好友关系
好友关系管理(关系链管理),是游戏社交中重要的内容。会话/消息特性,回依赖好友关系状态。游戏中玩家关系的互动串联,也是依赖于好友关系。 云上IM SDK提供允许陌生人发消息的开关,开发者可以根据游戏的使用场景,确定好友关系的使用方法。
注意,此开关是项目级开关,无法单独为游戏中玩家开放。
添加好友关系
玩家可以使用“添加好友AddFriend
”方法添加其他用户为好友。
如果允许陌生人发消息的开关为关,则添加好友成功后,双方可以开始进行会话聊天。
云上IM SDK提供默认玩家的好友人数上限为100名好友。
解除好友关系
玩家可以使用“删除好友DeleteFriends
”方法解除用户的好友关系。
如果允许陌生人发消息的开关为关,则解除好友成功后,双方无法再进行会话聊天。
黑名单处理
云上IM SDK提供玩家拉黑其他玩家的功能。同时提供消息黑名单双向验证的功能,开发者可以根据游戏使用场景,设置拉黑之后玩家之间发送聊天的规则。
注意,此开关是项目级开关,无法单独为游戏中玩家开放。
辅助能力
云上IM SDK出了提供上述功能以外,对于社交聊天场景还提供了其他功能,便于玩家之间快速交流。
离线推送
在游戏中,玩家需要随时了解其他玩家的新动态、游戏进度的拓展、战场的最新变化等内容,这会促使游戏为离线玩家提供推送服务。 为了避免维持聊天的长连接而导致的过多资源消耗,建议开发者使用各终端厂商提供的系统级推送通道来进行消息通知。 云上IM SDK支持的终端系统有:
- APNs:iOS
- Google FCM:OPPO/VIVO/华为/小米/魅族/荣耀。
使用离线推送功能,需要在程序启动时(或周期性)调用“添加推送设备AddDevice
” 方法来添加DeviceToken
。
识别翻译
云上IM SDK提供对聊天内容的文字进行实时识别翻译功能。这些功能需要通过云上控制台来完成操作。
注意:识别翻译服务属于单独服务,需要另行计费。
内容审核
针对内容审核的需求,云上IM SDK提供云端审核服务,检测聊天场景中产生文本、图片、音频、视频内容,并可以指定符合游戏需求的审核策略。这些功能需要通过云上控制台来完成操作。
注意:内容审核服务属于单独服务,需要另行计费。
实时音视频
为了更便于游戏玩家的交流,我们建议在游戏中增加实时音视频通话功能(目前主要是实时音频通话),来满足私聊、频道聊天的爽快交流。 关于RTC相关的集成使用,请参考云上RTC相关内容。
注意:实时音视频属于单独服务,需要另行计费。