Push 概念篇
Push 概念篇
UOS Push
UOS Push 是 Unity 资深团队打造的专业游戏内实时信息推送。通过这种功能,游戏系统能即时地向玩家发送相关的消息和通知,实现游戏中的各种实时聊天系统(包括世界聊天,团队聊天,群组聊天,在线私聊)。
这种推送信息可以包括各种类型,例如:
- 社交互动:如果游戏有社交元素,实时信息推送可能包括好友请求,私人消息,团队邀请等。
- 游戏事件:游戏可能会实时推送关于即将发生的活动,新的游戏内容,或者游戏更新的信息,服务器维护,错误报告,规则更改等。
频道
频道是 UOS Push 系统中用于推送和收取信息最小单位,频道可分为公共频道和非公共频道:
- 公共频道:任何人都可以加入,查看和参与的频道。可用于世界服聊天和对所有玩家发布系统通知。公共频道需预先 配置。无法通过客户端SDK创建公共频道
- 非公共频道:无需预先配置,可通过客户端SDK创建和订阅。这种频道通常可用于对特定的团队或群体开放,例如在线游戏中的团队/小队聊天频道, 公会聊天频道。
对于频道消息,在线且订阅频道的玩家应该实时收到频道消息,同时支持频道消息缓存,会缓存该频道最新的20条消息,之后上线的玩家订阅某个频道时可收到20条该频道的历史缓存消息(非正式用户只能收到5条), 频道缓存时效为1小时,若1小时内该频道既无玩家读取信息,也没有玩家发送消息,缓存将会过期。另外需要注意的时:频道订阅信息是非持久化信息,玩家下线后所有已订阅信息将自动取消,上线时需重新订阅所有需要订阅的频道
玩家消息
频道消息主要用于团队,世界服聊天, 而玩家消息则用于玩家与玩家的通信,当前仅支持对在线玩家发送信息,如果对方玩家离线,则对方无法收到消息。
异地登陆
异地登陆,即一个玩家正在进行游戏时,另一个玩家用同一个账户也登陆进去。 Uos Push可用于解决这一问题。
- 一种方法是Uos Push提供的异地登陆回调的接口,可在初始化SDK时传入(见SDK接入文档), 当第二个玩家登陆同一账户时,第一个玩家的异地登陆回调接口会得到执行,可在该方法里执行玩家退出等操作
- 另一种方法是,如果你想让第一个玩家退出时知道更多的信息(比如第二个玩家的位置,设备信息),你可以不使用异地登陆回调接口,而是选择在第二个玩家登陆时,给第一个玩家发送一条玩家消息(如果玩家Id一样,两个玩家将同时收到该消息,可自行通过消息内容来判断该消息是谁发送的),第一个玩家收到消息后,查看消息内容,可得知自己是被哪个地方的哪个设备挤下线的
玩家封禁
Push支持对在线玩家直接封禁功能,在发送玩家消息时,如果指定 banPlayer 参数,则代表封禁指定玩家,玩家客户端收到该封禁消息后,其UOS 的 auth token信息将会被立即清除掉,意味着该玩家再次操作UOS相关资源时,会被要求重新登录;同时也会相应onPlayerBanned回调方法,可通过该回调指引玩家退出游戏。
组队服务
Teams 是基于 UOS Push 构建的智能组队服务,旨在为玩家提供高效的组队体验,同时增强游戏的社交互动性。通过实时连接管理和自动化逻辑,Teams 确保组队流程顺畅,让玩家更专注于游戏乐趣。
- 自由组队:玩家可创建队伍或加入其他玩家的队伍,轻松开启多人协作。支持自定义队伍人数上限、命名空间等,适配不同游戏需求。
- 历史记录:随时查看过往队友信息,快速找回曾经的队友。
玩家服务
玩家服务指Push提供的玩家在线状态管理,属性管理以及根据条件随机在线玩家的功能 (此服务需联系我们开通方可使用)
Push 中玩家状态分为三种:
- 在线状态(ONLINE): 玩家通过SDK Connect方法连接成功会处于该状态
- 繁忙状态(BUSY): 玩家可自己设置自己的在线状态为BUSY, 比如当玩家处于游戏对局中,不想再被别人邀请加入对战时,可将自己设为BUSY状态
- 离线状态(OFFLINE): 玩家通过SDK Disconnect方法断开连接或是后台检测到玩家异常断开时会处于该状态。
Push提供 SetPlayerStatus 方法供玩家设置状态,可以设置为ONLINE和BUSY,不可通过该方法将自己的状态设置为OFFLINE。
玩家属性是指Push 提供 SetPlayerProperties 方法供玩家设置自己的属性,比如设置战力值为4000,设置等级为20,那么当需要随机一批在线玩家的时候,即可 设置条件,比如随机等级20-30之间,战力3000-4000之间的10为玩家。