互动数据履约上报
使用
Unity SDK
,开发者需要将LiveOpenSdk.Instance.GetMessagePushService().OnMessage
设置为自定义的处理函数,这样当收到互动消息(点赞、评论、送礼、粉丝团)的推送时,就会执行 OnMessage
函数。在设置给
OnMessage
的处理函数的最后,开发者应该调用SDK
的履约上报能力接口上报已处理完毕。目前这不是必须的,但是,如果开发者进行上报,平台将统计玩法的互动消息的处理是否正常,是否超时。如果有异常,将收到告警消息,及时联系开发者定位问题,解决异常。因此,强烈建议开发者在调用履约上报接口。履约上报时序图
开发者需要做的履约方案如下:
开发者客户端在处理完推送数据后使用
SDK
的履约上报接口进行履约上报。注意:
使用
SDK
方式,确认收到推送数据由SDK
自动上报,开发者仅需在完成推送数据处理后进行一次履约上报即可。
履约上报接口
根据消息
IPushMessage
的msgId
和msgType
进行上报。语法
/// <summary>/// 上报互动消息在小玩法内的展现。/// </summary> /// <param name="msgId">要上报的消息 ID</param> /// <param name="msgType">要上报的消息的类型</param> /// <seealso cref="PushMessageTypes"/> void ReportAck(string msgId, string msgType);
调用参数
属性名 | 类型 | 默认值 | 必填 | 说明 |
msgId | string | 无 | 是 | 要上报的消息 ID |
msgType | string | 无 | 是 | 要上报的消息的类型,参考 PushMessageTypes |
使用示例
履约上报的接口需要置于开发者设置的OnMessage的函数中,如下:
// 玩法sdk初始化成功后执行 public static async Task Init() { // 必须等待直播间信息可用后才能进行后续操作。 await LiveOpenSdk.Instance.GetRoomInfoService().WaitForRoomInfoAsync(); // 设置OnMessage 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; } Debug.Log(sb.ToString()); // 使用 msgId,msgType履约上报 LiveOpenSdk.Instance.GetMessageAckService().ReportAck(message.MsgId, message.MsgType); }