观众一键同玩能力
收藏
我的收藏观众一键同玩能力,是指在主播开启了观众连线互动玩法后,开发者使用LiveOpenSDK给开发者提供的接口,可以获取直播间的基本信息及麦位信息,还可以通过接口邀请麦上用户启动玩法,关闭玩法。
前提条件 |
|
注意事项 | 接入观众一键同玩能力后,在一个直播间能够有主播、嘉宾多个人开启玩法,观众可以给主播或嘉宾送礼,只有主播能够开启和关闭推送,开启后,直播间内的所有玩法都会收到推送 |
玩法需开通能力
开发者想要使用观众一键同玩能力,需要在开放平台控制台界面开启两个能力。
观众一键同玩能力
弹幕云启动能力
嘉宾只能通过云游戏的方式启动玩法,所以需要开启弹幕云启动能力。
查询直播间麦位信息
语法
Task<ILinkInfo> QueryLinkmicInfoAsync();
返回数据类型
ILinkInfo
麦位基本信息及麦上用户基本信息列表
名称 | 类型 | 说明 |
BaseInfo | 麦位基本信息 | |
UserList | 麦上用户基本信息列表 |
ILinkBaseInfo
麦位基本信息
名称 | 类型 | 说明 |
LinkerId | string | 本次连麦唯一ID |
TotalCount | int | 麦位总数 |
FreeCount | int | 麦位剩余数量 |
ILinkUserInfo
麦上用户基本信息列表
名称 | 类型 | 说明 |
OpenId | string | 麦上用户的openId |
AvatarUrl | string | 麦上用户的头像 |
NickName | string | 麦上用户的昵称 |
LinkState | int | 连麦状态;1-已在麦上;2-邀请上麦中 |
LinkPosition | int | 麦上用户的麦位位置 |
DisableMicrophone | int | 麦上用户是否禁用麦克风;1-未禁用;2-已禁用。 |
MicrophoneState | int | 麦上用户麦克风打开/关闭状态;1-已打开;2-已关闭。 |
DisableCamera | int | 麦上用户是否禁用摄像头;1-未禁用;2-已禁用。 |
CameraState | int | 麦上用户摄像头打开/关闭状态;1-已打开;2-已关闭。 |
AppInfo | ILinkAppInfo | 麦上用户玩法相关信息 |
ILinkAppInfo
麦上用户玩法相关信息
名称 | 类型 | 说明 |
HostAppStartAppAvailable | bool | 麦上用户宿主是否支持云启动玩法 |
错误码
使用try catch的方式捕获
Exception
,类型为WebcastOpenApiException
,可以从其中获取ErrorCode
,ErrorMessage
。调用示例
public class Test : MonoBehaviour { public Button Sdk_ShowRoomPanelBtn; private ILiveOpenSdk Sdk => LiveOpenSdk.Instance; Sdk_ShowRoomPanelBtn.onClick.AddListener(async () => { Debug.Log($"获取房间麦位基本信息及麦位列表界面");开发者使用LiveOpenSD var linkInfo = await Sdk.GetRoomInfoService().QueryLinkmicInfoAsync(); }); }
嘉宾云启动玩法
语法
Task InviteAudienceJoinGameAsync(string openId);
错误码
使用try catch的方式捕获
Exception
,类型为WebcastOpenApiException
,可以从其中获取ErrorCode
,ErrorMessage
。调用示例
void Start() { string userInfoOpenId; // 麦位嘉宾的OpenId可以通过查询直播间麦位信息的接口获得 InviteBtn.onClick.AddListener(async () => { try { await LiveOpenSdk.Instance.GetAudienceLinkmicService()!.InviteAudienceJoinGameAsync(userInfo.OpenId); } catch (WebcastOpenApiException e) { Debug.LogWarning($"\nInvite errCode: {e.ErrorCode}, errMsg: {e.ErrorMessage}, LogId: {e.LogId}"); } }); }
关闭嘉宾玩法
语法
Task RequestAudienceLeaveGameAsync(string openId);
错误码
使用try catch的方式捕获
Exception
,类型为WebcastOpenApiException
,可以从其中获取ErrorCode
,ErrorMessage
。调用示例
void Start() { string userInfoOpenId; // 麦位嘉宾的OpenId可以通过查询直播间麦位信息的接口获得 LeaveBtn.onClick.AddListener(async () => { try { await LiveOpenSdk.Instance.GetAudienceLinkmicService()!.RequestAudienceLeaveGameAsync(userInfo.OpenId); } catch (WebcastOpenApiException e) { Debug.LogWarning($"\nLeave errCode: {e.ErrorCode}, errMsg: {e.ErrorMessage}, LogId: {e.LogId}"); } }); }
注意事项
嘉宾结束同玩并关闭云启动游戏
嘉宾结束同玩并关闭云启动游戏,除了主动调用关闭嘉宾玩法的接口外,还有以下几种情况
- 1.主动下麦
- 2.被主播断开连线
接入观众同玩能力后对礼物推送的影响
- 1.同一个直播间内的礼物、点赞、评论、粉丝团推送消息会推送到该直播间内的所有玩法
- 2.只有主播的玩法能执行开启/关闭推送接口
- 3.接入观众同玩能力后,在一个主播间中,可能有主播和多个嘉宾同时启动玩法的情况,此时,观众可以指定礼物送给主播或嘉宾,原礼物推送消息将增加字段AudienceSecOpenId,当礼物是送给主播的,则此字段为空,当礼物是送给嘉宾的,则此字段为该嘉宾的OpenId
/// <summary> /// 送礼消息的数据结构。 /// </summary> public interface IGiftMessage : IPushMessage { /// <summary> /// 送礼用户的信息。 /// </summary> IUserInfo Sender { get; } /// <summary> /// 加密的礼物 ID。 /// </summary> string SecGiftId { get; } /// <summary> /// 送出的礼物数量。 /// </summary> long GiftCount { get; } /// <summary> /// 礼物总价值,单位是分。 /// </summary> long GiftValue { get; } /// <summary> /// 是否为测试数据。 /// </summary> /// <remarks> /// 已报备完成兼容的玩法,对于非真实的测试数据,会下发该字段。 /// </remarks> bool IsTestData { get; } /// <summary> /// 如果被送礼的是嘉宾,则此处为嘉宾的openid /// </summary> string AudienceSecOpenId { get; } }