# 组队上车
# 应用场景
主播在直播间发起组队,粉丝在看播端通过申请后,可以直接进入到主播的游戏队伍中,无需加好友或者发送链接等其他操作.
主播侧,开启组队功能示意图
粉丝侧,发起组队申请示意图
# 核心步骤
# 主播创建游戏队伍
注意:平台在收到“创建队伍”的游戏事件时,需要保存主播和room_extra字段的映射关系。在粉丝加入队伍时需要回传该数据到livelink侧
# 粉丝加入游戏队伍
注意:平台需要在验票接口中返回上一步保存的room_extra,方便定位主播的游戏房间
# 游戏队伍更新事件
# 游戏队伍事件
基于通用数据接口,livelink会将主播游戏队伍的变更事件实时推送到平台侧,平台可以根据对应的事件,做对应的UI展示以及其他处理流程。结构如下:
{
"gameCode":"", // 游戏code
"reqType":"teamPlayGameDataReport", // 在本场景下固定为teamPlayGameDataReport
"data":"{}" // 具体数据如下
}
// data数据结构
{
"report_timestamp": 123123, // 上报时间戳
"room_owner_open_id": "1231231", // 房主openID
"room_owner_nick_name": "xxx", // 房主用户昵称
// 上报类型,取值如下:
// 1 创建队伍,这时候粉丝可以申请上车了
// 2 队伍信息变更,有粉丝加入/退出队伍
// 3 队伍销毁,主播解散了整个队伍,如果下次再开会触发类型1
// 4 游戏开始,告知粉丝游戏正在进行中,可以等待下一局
// 5 游戏结束,一局游戏结束,粉丝可以重新申请上车
"report_type": 1,
"room_data": "xxxxxxx" // json序列化下述数据结构
}
// room_data数据结构
{
// [关键字段] 游戏透传信息,主播创建游戏队伍(即report_type=1)时推送到平台,平台需要记录下来,在观众调用验票接口时回传,方便游戏侧定位主播的游戏房间
"room_extra":"",
// 当前房间全部成员列表,包含房主
"member_list":[
{
// 用户openID
"open_id":"abc123",
// 游戏用户昵称
"nick_name": "xxx",
},
{
// 用户openID
"open_id":"abc123",
// 游戏用户昵称
"nick_name": "xxx",
}
],
// 上一次更新房间信息到此次为止被主播强制踢出房间的成员用户id,用户主动退出的不记录在此
"kicked_user_open_id_list":["userid123455"],
// 游戏房间总容量
"team_size":10,
// 游戏模式
"game_mode": "排位赛",
// 游戏模式id
"game_mode_id": "123",
// 地图名称
"map_name": "地图1",
// 地图id
"map_id": "12",
// 区服限制
"enable_region": ["wx", "qq"],
// 最低段位
"min_rank_level": "至尊星耀V",
// 最高段位
"max_rank_level": "最强王者",
// 最低星级限制 除王者外暂未使用
"min_rank_grade": "0",
// 最高星级限制 除王者外暂未使用
"max_rank_grade": "25",
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 平台需提供的接口
接口签名方式和数据接口保持一致
# 验证票据
在主播/粉丝通过schema拉起游戏,登录到游戏内之后,livelink会调用平台的该接口,验证用户的身份是否正确。平台可以在此处校验用户是否满足上车的条件,类似是否关注直播间、是否完成其他任务等。
请求:
{
"gameCode": "xxxxx", // 对应的游戏代号
"uid": "xxxxxx", // 绑定的平台用户id
"ticket": "xxxx", // 通过schema拉起游戏时透传的平台票据,平台自定义
"userType": 1 // 1主播2粉丝
}
响应:
{
"ret":0, // 非零表示用户身份不正确
"msg":"ok", // 错误原因
"data":{
// [关键字段] 接收到创建队伍的通知时,平台需要保存该字段,在粉丝验票的时候需要回传,方便游戏把粉丝拉进主播的队伍里
"room_extra":"",
// 票据有效期,单位为秒
"expire_seconds":1209600
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# livelink提供的接口
接口签名方式和数据接口保持一致
# 开启/关闭玩法
主播在开启/关闭组队上车功能时,平台可以调用该接口; 游戏侧收到主播关闭玩法的通知时,应主动断开后续的监听事件,避免资源浪费。
请求方式:
POST https://welive.qq.com/dataproxy/feature/setFeatureFlag
请求结构:
{
"plat":"douyin", // 平台业务code
"game":"yxzj", // 游戏业务code
"uid":"xxxx", // 平台绑定的用户ID
"feature":"yjkh", // 玩法标识,本场景固定为yjkh
"op":1, //1开启 2关闭
}
响应结构:
{
"ret":0,
"tid":"",
"msg":"ok"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 支持的游戏
- 王者荣耀
- 和平精英
- 元梦之星