抖音开放平台Logo
开发者文档
控制台
观众一键同玩能力,是指在主播开启了观众连线互动玩法后,开发者使用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,可以从其中获取ErrorCodeErrorMessage
对应开放平台接口的错误码为 链接

调用示例

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,可以从其中获取ErrorCodeErrorMessage
对应开放平台接口的错误码为 链接

调用示例

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,可以从其中获取ErrorCodeErrorMessage
对应开放平台接口的错误码为 链接

调用示例

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; } }