用户快捷选队能力

收藏
我的收藏
快捷选队能力是指观众可以从小摇杆中看到快捷选队界面并进行队伍选择,使用 Unity SDK,开放平台收到观众选择队伍的消息后,会推送至 SDK,开发者即收到了观众的选择结果。

前置条件

玩法需要在【开放平台控制台】->【能力】->【进阶互动能力】中开启快捷选队能力,如下图:

时序图

涉及接口

在上面的时序图中,可以看到要实现快捷选队的能力,所需要使用到的接口,其中,初始化是使用 SDK 必须先执行的,不再赘述,其他接口说明如下:

开启快捷选队推送

开启快捷选队的推送和开启点赞、评论、送礼、粉丝团的推送是同一方式,区别仅在于传参类型为快捷选队类型PushMessageTypes.LiveTeam,示例如下:
LiveOpenSdk.Instance.GetMessagePushService().StartPushTaskAsync(PushMessageTypes.LiveTeam)

开启对局

快捷选队操作只有在开始对局的状态下才生效,所以,玩法开发者需要执行开启对局操作,示例如下:
public async Task<IRoundDataRes> StartRoundAsync() { RoundStatusInfo roundStatusInfo = new RoundStatusInfo() { RoundId = 1, // 对局Id StartTime = DateTimeOffset.Now.ToUnixTimeSeconds(), Status = 1, // 开始对局 }; // 同步对局状态为 开始对局 var result = await LiveOpenSdk.Instance.GetRoundApi().UpdateRoundStatusInfoAsync(roundStatusInfo); return result; }

注册推送选队消息监听与监听处理

快捷选队的推送消息和点赞、评论、送礼、粉丝团的推送是同一路径,注册方式如下:
LiveOpenSdk.Instance.GetMessagePushService().OnMessage -= OnMessage; LiveOpenSdk.Instance.GetMessagePushService().OnMessage += OnMessage;
在收到推送后,可以从消息中获取到快捷选队的推送,示例如下:
void OnMessage(IPushMessage message) { var sb = new StringBuilder(); sb.AppendLine($"收到推送消息:{message.MsgId} {message.MsgType}"); switch (message) { case ICommentMessage data: sb.Append($"{data.Sender.Nickname} 说:{data.Content}"); break; case ILikeMessage data: sb.Append($"{data.Sender.Nickname} 点了 {data.LikeCount} 个赞"); break; case IGiftMessage data: sb.Append($"{data.Sender.Nickname} 送了 {data.GiftCount} 个礼物,价值 {data.GiftValue} 分"); break; case IFansClubMessage data: if (data.FansClubMessageType == IFansClubMessage.MessageType.Join) { sb.Append($"{data.Sender.Nickname} 加入了粉丝团"); } else if (data.FansClubMessageType == IFansClubMessage.MessageType.LevelUp) { sb.Append($"{data.Sender.Nickname} 的粉丝团等级升到了 {data.FansClubLevel} 级"); } break; case ITeamMessage data: JoinGroup(data.Sender.OpenId, data.GroupId); sb.Append($"{data.Sender.Nickname} 通过小摇杆加入了 {data.GroupId} 队伍"); break; } // 完成指令渲染后发送履约 MessageAckService.ReportAck(message); } async void JoinGroup(string openId, string groupId) { // 上报阵营数据 var result = await LiveOpenSdk.Instance.GetRoundApi().UpdateUserGroupInfoAsync(new RoundUserGroupInfo() { RoundId = _roundId, OpenId = openId, GroupId = groupId }); }

结束对局

一局结束后,应调用同步对局状态接口LiveOpenSdk.Instance.GetRoundApi().UpdateRoundStatusInfoAsync结束对局。

上传审核包问题

当在【开放平台控制台】->【能力】->【进阶互动能力】中开启了【快捷选队】能力,在【开放平台控制台】->【开发】->【版本管理】->【审核版本】上传包体,提交审核时会进行 API 检查。
必须通过 SDK 使用调试版本或本地启动等方式正确执行后,才能成功上传审核包,否则无法成功上传。
常见报错如下:
情况一、未接入【同步对局结束状态】API
对局开启后,需要正确结束,即调用LiveOpenSdk.Instance.GetRoundApi().UpdateRoundStatusInfoAsync接口并获得正确返回。
情况二、未接入【上报用户阵营数据】API
开发者注册了推送消息监听,在监听中收到推送快捷选队消息后,需要正确调用上报阵营接口,即调用LiveOpenSdk.Instance.GetRoundApi().UpdateUserGroupInfoAsync接口并获得正确返回。