抖音开放平台Logo
开发者文档
控制台

ICloudSwitchManager

收藏
我的收藏
云游戏切流管理。
前提条件
业务背景
使用限制
注意事项
相关教程

ICloudSwitchManager.Token

本云游戏实例的 Token 数据,。配合 ICloudSwitchTokenProvider 使用。
此 Token 只读,请勿修改。

语法

public string Token { get; }

ICloudSwitchManager.SwitchTo(...)

作为 Client 切流到指定的 Host 云游戏实例上,接收 Host 画面。
此方法为同玩

语法

public Task<SwitchResult> SwitchTo(string token, SeatIndex myIndex, string matchKey = null);

参数说明

参数名
类型
默认值
必填
说明
token
string
目标云游戏 Host 房主实例的 token 。
myIndex
SeatIndex
我的座位号。 我作为玩家切到目标云游戏 Host 房主实例上时,分配到指定的座位号。
matchKey
string
null
匹配唯一ID,调试用。

返回值说明

切换成功与否,错误码等信息,参考 SwitchResult 。

代码示例

async void Test() { }

ICloudSwitchManager.BeginHost(...)

本实例作为 Host,准备接收其它端连入。
注意:此方法为同玩 Host 端专用,作用是:将本云游戏实例开启为“房间”模式,其它用户可以连入并同屏游戏。

语法

public IHostRoom BeginHost(ICloudSwitchTokenProvider tokenProvider);

参数说明

参数名
类型
默认值
必填
说明
tokenProvider
ICloudSwitchTokenProvider
其它端 Token 提供器

返回值说明

返回 IHostRoom 对象,参考:IHostRoom。

代码示例

async void Test() { }

ICloudSwitchManager.OnEndMatchGame (事件)

结束同玩了(返回单播)

语法

public delegate void EndMatchGameHandler(string info); public event EndMatchGameHandler OnEndMatchGame;

事件参数说明

参数名
类型
说明
info
string
结束同玩时从 Host 端透传的结束信息(参考:IHostRoom.Kick、IHostRoom.End)

SwitchResult

调用 SwitchTo 方法的返回结果。

SwitchResult.Code

调用 SwitchTo 方法的返回结果的错误码。

语法

public SwitchResultCode Code;

SwitchResult.Sccuess

调用 SwitchTo 方法是否成功。

语法

public bool Success => Code == SwitchResultCode.Success;

SwitchResult.Message

调用 SwitchTo 方法的返回结果的错误信息。

语法

public string Message;

Enum SwitchResultCode

语法

public enum SwitchResultCode { /// <summary> /// 成功 /// </summary> Success, /// <summary> /// 传递的 Token 无效 /// </summary> InvalidToken, /// <summary> /// 传递的座位号无效 /// </summary> InvalidIndex, /// <summary> /// 当前状态无效(可能调用过 SwitchTo, BeginHost 方法) /// </summary> InvalidState, /// <summary> /// 切流失败 /// </summary> Error, /// <summary> /// 被 Host 端拒绝 /// </summary> Rejected, }

ICloudSwitchTokenProvider

SwitchToken 提供器:在 Host 端中,为 ICloudSwitchManager 提供指定座位号的 Switch Token 信息。
注意:此接需要开发者实现。

ICloudSwitchTokenProvider.GetToken(...)

语法

public Task<string> GetToken(ICloudClient client, CancellationToken cancellationToken);

参数说明

参数名
类型
默认值
必填
说明
client
ICloudClient
目标 ICloudClient
cancellationToken
CancellationToken
取消操作的 CancellationToken

返回值说明

切换成功与否,错误码等信息,参考 SwitchResult 。

IHostRoom

IHostRoom.Kick(...)

将指定座位上的 Client 踢回原实例,并可透传、携带额外信息。
可用于以下情形:
    对局结束时,非 Host 主播想要结束匹配同玩状态回到单播时,可以使用该接口。即:在 Host 实例上将自己踢出 Host 房间。

语法

public void Kick(SeatIndex index, string info);

参数说明

参数名
类型
默认值
必填
说明
index
SeatIndex
要踢出 Host 房间 CloudClient 对应的座位号。不能是房主自己(SeatIndex.Index0)。
info
string
踢出时需要透传、携带的信息。当被踢出房间的主播回到自己的云实例时可以进行处理。
建议透传的自定义 JSON 信息。

代码示例

场景举例:
某游戏中,A, B 两主播开播,经匹配后 A 所在的云游戏作为 Host 端(房间),B 连接并同玩。
对局结束后,游戏显示了结算界面,B 主播点击了结束界面的 “离开” 按钮。此时应调用 Kick(...) 来让 B 离开并回退到原云游戏实例中。
以下为伪代码,不建议直接使用:
流程
代码示例
在 Host 端逻辑
/// <summary> /// 对局结束,显示 /// </summary> private void OnGameEnd() { ShowGameEndView(); // 显示结束 ... } /// <summary> /// 主播 B(非 Host 主播)点击了结束界面的 “离开” 按钮。 /// </summary> private async void OnAnchorBLeaveClicked() { var room = ICloudSync.Instance.SwitchManager.CurrentRoom; var extraJson = "..."; // 建议透传的自定义 JSON 信息 room.Kick(_clientB.Index, extarJson); }
在 B 端逻辑
private void InitSdk() { ... ICloudSync.Instance.SwitchManager.OnEndMatchGame += OnEndMatchGame; ... } /// <summary> /// 回到了自己的实例,可以通过 extraJson 来处理相关数据。 /// </summary> private void OnEndMatchGame(string extraJson) { Debug.Log("我刚才的同玩结束了,回到了我自己的云游戏实例上。"); Debug.Log($"透传信息:{extraJson}"); }

IHostRoom.End(...)

Host 房主结束当前同玩状态,并且将其它所以端都踢回原实例。
可用于以下情形:
    对局结束时,Host 主播想要结束匹配同玩状态回到单播时,可以使用该接口。即:在 Host 实例上将除了自己的其它所有主播踢出房间。

语法

public void Kick(SeatIndex index, string info);

参数说明

参数名
类型
默认值
必填
说明
info
string
将其它端都踢回原实例时需要透传的信息。
建议透传的自定义 JSON 信息。