#
通用状态
Tips
- SDK 保证状态有序串行从 APP 到达 MG;
- 可重复通知,无需保证通知次数;
- 通知后 SDK 会按 state 值缓存最新一次的 data 值,供 MG 随时主动获取;
- APP 仅需通知用户自己的状态,MG 服务会负责广播并同步到各对端;
- ISudFSTAPP void notifyStateChange(String state, String dataJson, ISudListenerNotifyStateChange listener)使用;
- 需要在onGameStarted之后以及onGameDestroyed之前调用
状态转换说明
0. 测试状态
- state
app_common_hello_fsm
- data
{
"msg": "Hello FSM from APP!"
}
- 说明
用于状态测试
1. 加入状态
- 最低版本: v1.1.30.xx
- state
app_common_self_in
- data
{
"isIn": true, // true 加入游戏,false 退出游戏
"seatIndex": 1, // 加入的游戏位(座位号) 默认传seatIndex = -1 随机加入,seatIndex 从0开始,不可大于座位数
"isSeatRandom": true, //(注:废弃,请使用isRandom替代) 默认为ture, 带有游戏位(座位号)的时候,如果游戏位(座位号)已经被占用,是否随机分配一个空位坐下 isSeatRandom=true 随机分配空位坐下,isSeatRandom=false 不随机分配
"isRandom": true, // 默认为ture, 带有游戏位(座位号)的时候,如果游戏位(座位号)已经被占用,是否随机分配一个空位坐下 isRandom=true 随机分配空位坐下,isRandom=false 不随机分配
"teamId": 1 // 不支持分队的游戏:数值填1;支持分队的游戏:数值填1或2(两支队伍);
}
- 说明
用户(本人)加入游戏/退出游戏
正确流程:
1.isIn=true: 加入游戏=>准备游戏=>开始游戏;
2.isIn=false: 结束=>取消准备=>退出游戏;
2. 准备状态
- 最低版本: v1.1.30.xx
- state
app_common_self_ready
- data
{
"isReady": true // true 准备,false 取消准备
}
- 说明
用户(本人)准备/取消准备
3. 游戏状态
- 最低版本: v1.1.30.xx
- state
app_common_self_playing
- data
{
"isPlaying": true, // true 开始游戏,false 结束游戏
"reportGameInfoExtras": "透传参数", // string类型,Https服务回调report_game_info参数,最大长度1024字节,超过则截断(2022-01-21)
"reportGameInfoKey": "透传参数key" // string类型,最大长度64字节,接入方服务端,可以根据这个字段来查询一局游戏的数据
}
- 说明
用户游戏状态,如果用户在游戏中,建议:
a.空出屏幕中心区:
关闭全屏礼物特效;
b.部分强操作类小游戏(spaceMax为true),尽量收缩原生UI,给游戏留出尽量大的操作空间:
收缩公屏;
收缩麦位;
如果不在游戏中,则恢复。
4. 队长状态
- 最低版本: v1.1.30.xx
- state
app_common_self_captain
- data
{
"curCaptainUID": "" // 必填,指定队长uid
}
- 说明
用户是否为队长,队长在游戏中会有开始游戏的权利。
5. 踢人
- 最低版本: v1.1.30.xx
- state
app_common_self_kick
- data
{
"kickedUID": "uid" // 被踢用户uid
}
- 说明
用户(本人,队长)踢其他玩家;
队长才能踢人;
6. 结束游戏
最低版本: v1.1.30.xx
state
app_common_self_end
- data
{}
- 说明
用户(本人,队长)结束(本局)游戏,提前结束本局游戏(所有人都不玩了)
7. 房间状态(depreated 已废弃 v1.1.30.xx)
- 请使用 app_common_self_in 代替
- state
app_common_self_room
- data
{
"isIn": true // true 在房间内,false 不在房间内
}
- 说明
用户(本人)房间状态,建议:
用户进出房间各通知一次
- 说明
用户(本人)离开
8. 麦位状态(depreated 已废弃 v1.1.30.xx)
- 请使用 app_common_self_in 代替
- state
app_common_self_seat
- data
{
"lastSeat": -1, // 之前在几号麦,从0开始,之前未在麦上值为-1
"currentSeat": 0 // 目前在几号麦,从0开始,目前未在麦上值为-1
}
- 说明
用户(本人)所处的麦位状态,建议:
进入房间后初始通知一次;
每次变更(上麦/下麦/移麦)通知一次;
9. 麦克风状态(depreated 已废弃 v1.1.30.xx)
- state
app_common_self_microphone
- data
{
"isOn": true, // true 开麦,false 闭麦
"isDisabled": false // true 被禁麦,false 未被禁麦
}
- 说明
用户(本人)麦克风状态,建议:
进入房间后初始通知一次;
每次变更(开麦/闭麦/禁麦/解麦)通知一次;
10. 文字命中状态
- state
app_common_self_text_hit
- data
{
"isHit": true, // true 命中,false 未命中
"keyWord": "关键", // 关键词
"text": "这是关键" // 聊天原始内容
}
- 说明
用户(本人)聊天信息命中关键词状态,建议:
精确匹配;
首次聊天内容命中关键词之后,后续聊天内容不翻转成未命中;
直至小游戏侧关键词更新,再将状态翻转为未命中;
11. 打开或关闭背景音乐(2021-12-27 新增)
- state
app_common_open_bg_music
- data
{
"isOpen": true // true 打开背景音乐,false 关闭背景音乐
}
- 说明
打开或者关闭背景音乐
12. 打开或关闭音效(2021-12-27 新增)
- state
app_common_open_sound
- data
{
"isOpen": true // true 打开音效,false 关闭音效
}
- 说明
打开或者关闭音效
13. 打开或关闭游戏中的振动效果(2021-12-27 新增)
- state
app_common_open_vibrate
- data
{
"isOpen": true // true 打开振动效果,false 关闭振动效果
}
- 说明
打开或者关闭振动效果
14. 设置游戏的音量大小(2021-12-31 新增)
- state
app_common_game_sound_volume
- data
{
"volume": 100 // 音量大小 0 到 100
}
- 说明
设置游戏的音量大小
15. 设置游戏玩法选项(2022-05-10 新增)
- state
app_common_game_setting_select_info
data
ludo
{
"ludo": { // 游戏名称
"mode": 0, // mode: 默认赛制,0: 快速, 1: 经典;
"chessNum": 2, // chessNum: 默认棋子数量, 2: 对应2颗棋子; 4: 对应4颗棋子;
"item": 0, // item: 默认道具, 1: 有道具, 0: 没有道具
"isReroll" // 后台的配置reroll和captainSetReroll开启后,可以通过这个参数来设置是否重摇 1:重摇,0:不重摇
}
}
- 谁是卧底
{
"whoisspy": { // 游戏名称
"mode": 0 // 0:经典 ;1:爆词
}
}
- 碰碰我最强
{
"bumper":{ // 游戏名称
"userInfos": [
{
"uid": string, // 玩家id
"mass": number, // 体型 默认值10,可填范围 10 20 30 40 50
"trail": number // 拖尾型号 1 2 3 4
},
{
"uid": string, // 玩家id
"mass": number, // 体型 默认值10,可填范围 10 20 30 40 50
"trail": number, // 拖尾型号 1 2 3 4
}
...
]
}
}
- 数字炸弹
{
"numberbomb": { // 游戏名称
"keyNum": 45, // 设置的最终的答案数字
"range": [1, 99], // 初始的显示范围
"save": 0 //是否保存 0: 不保存,就是每次的设置仅生效一次,如果下次没设置则恢复默认;1: 保存,就是每次设置会持续生效知道下次改变
}
}
- baloot
{
"baloot":{ // 游戏名称
"mode":0 // 0:经典 ;1:快速
}
}
- 找茬特攻队
{
"spot": { // 游戏名称
"maxTurn": 15, //一局游戏回合数,小于等于0则不读这个字段。非整数向上取整
"turnTime": 30, //回合限时(秒),传0则不读这个字段,-1表示无限时长;
"modeSelected": { //模式选项
"Flip": true, //反转,flase表示禁用,true表示启用
"Classic": true, //经典模式,flase表示禁用,true表示启用
"Shuffle": true, //乱序模式,flase表示禁用,true表示启用
"Spotlight": true //聚光灯模式,flase表示禁用,true表示启用
}
}
}
- 说明
设置游戏玩法选项
16. 设置游戏中的 AI 玩家(2022-05-11 新增)
- state
app_common_game_add_ai_players
- data
{
"aiPlayers": [
{
"userId": "", // 玩家id
"avatar": "", // 头像url
"name": "", // 名字
"gender": "male", // 性别 male:男,female:女
"level":1, // ai等级 1,2,3
}
],
"isReady": 1 // 机器人加入后是否自动准备 1:自动准备,0:不自动准备 默认为1
}
- 说明
设置游戏中的AI玩家
17. app 在收到游戏断开连接通知后,通知游戏重试连接(2022-06-21 新增)
- state
app_common_game_reconnect
- data
{}
- 说明
通知游戏重试连接
18. app 返回玩家当前积分
- state
app_common_game_score
- data
{
"score": 10 // 玩家当前积分
}
- 说明
app返回玩家当前积分
19. app 通知游戏点赞玩家(2022-11-19 增加,当前支持你画我猜,你说我猜,友尽闯关)
- state
app_common_self_click_good
- data
{}
- 说明
app通知游戏点赞玩家
20. app 通知游戏扔大便玩家(2022-11-19 增加,当前支持你画我猜,你说我猜,友尽闯关)
- state
app_common_self_click_poop
- data
{}
- 说明
app通知游戏点踩玩家
21. app 通知游戏设置 FPS
- state
app_common_game_fps
- data
{
"fps": 60
}
- 说明
app通知游戏设置FPS
22. app 通知游戏创建订单的结果
- state
app_common_game_create_order_result
- data
{
"result": 1 // app通知游戏创建订单的结果0:失败 1:成功
}
- 说明
app通知游戏创建订单的结果
23. app 通知游戏设置玩法(只支持 德州 pro 和 teenpattipro)
- state
app_common_game_settings
- data
{
// 具体参数请参考下文
}
- 德州 设置的数据配置(例子)
{
smallBlind: number, // 1 配置小盲,大盲为小盲的2倍[1,2,5,10,20,50,100,200,500,1000]
ante: number, // 0 前注
sBuyIn: number, // 100 带入值/最小带入配置[100,200,100,200,500,1000,2000,5000,100000]
bBuyIn: number, // 200 最大带入,无限(0)
isAutoStart: number, // 2 0表示关闭自动开始 [0,2,6,7,8,9]
isStraddle: number, // 0 0:关闭,1自由,2强制
tableDuration: number, // 0.5 牌桌时长配置(小时)[0.5,1,2,4,6,8]
thinkTime: number, // 20 思考时间(秒)[10,15,20]
}
- teenpatti 设置的数据配置(例子)
{
"ante": 10, // 底分
"darkCard": 2, // 暗牌回合
"isAutoStart": 2, // 是否自动开始
"potLimit": 1000, // 最大带入
"round": 10, // 最大回合
"singleLimit": 32, // 单注限
"tableDuration": 0.5, // 牌桌时长配置(小时)
"thinkTime": 15 // 思考时间(秒)
}
- 说明
app通知游戏创建订单的结果
24. app 通知游返回大厅(当前支持umo)
- state
app_common_game_back_lobby
- data
{}
- 说明
app通知游戏返回大厅
25. app通知游戏定制UI配置表
- state
app_common_game_ui_custom_config
- data
{
// 具体配置表内容请参考如下
}
- ludo(飞行棋)
{
"gameBoard01": "", // 棋盘底 资源url地址
"gameBoard02": "", // 棋盘 资源url地址
"diceBg": "", // 骰子白底 资源url地址
"diceBgGold": "", // 黄金骰子底 资源url地址
"dice01": "", // 骰子1 资源url地址
"dice02": "", // 骰子2 资源url地址
"dice03": "", // 骰子3 资源url地址
"dice04": "", // 骰子4 资源url地址
"dice05": "", // 骰子5 资源url地址
"dice06": "", // 骰子6 资源url地址
"diceCrown": "", // 骰子皇冠 资源url地址
"chessYellow": "", // 黄色棋子 资源url地址
"chessBlue": "", // 蓝色棋子 资源url地址
"chessGreen": "", // 绿色棋子 资源url地址
"chessRed": "", // 红色棋子 资源url地址
"players": { // 玩家单独的特定制Map, key为玩家uid, value 是定制的UIConfig, 如果没有可以不填
"uid_0" : { // 玩家的uid
"diceBg": "", // 骰子白底 资源url地址
"diceBgGold": "", // 黄金骰子底 资源url地址
"dice01": "", // 骰子1 资源url地址
"dice02": "", // 骰子2 资源url地址
"dice03": "", // 骰子3 资源url地址
"dice04": "", // 骰子4 资源url地址
"dice05": "", // 骰子5 资源url地址
"dice06": "", // 骰子6 资源url地址
"diceCrown": "", // 骰子皇冠 资源url地址
"chessYellow": "", // 黄色棋子 资源url地址
"chessBlue": "", // 蓝色棋子 资源url地址
"chessGreen": "", // 绿色棋子 资源url地址
"chessRed": "", // 红色棋子 资源url地址
"rollDiceEffect": {
"dragonSkeletonUrl": "https://xxxx/remoteDragonEffect/rundice_ske.json",
"dragonAtlasUrl": "https://xxxx/remoteDragonEffect/rundice_tex.json",
"dragonTextureUrl": "https://xxxx/remoteDragonEffect/rundice_tex.png",
"animatureName": "Armature",
"animationName": "newAnimation"
}
},
"uid_1" : { // 玩家的uid
"diceBg": "", // 骰子白底 资源url地址
"diceBgGold": "", // 黄金骰子底 资源url地址
"dice01": "", // 骰子1 资源url地址
"dice02": "", // 骰子2 资源url地址
"dice03": "", // 骰子3 资源url地址
"dice04": "", // 骰子4 资源url地址
"dice05": "", // 骰子5 资源url地址
"dice06": "", // 骰子6 资源url地址
"diceCrown": "", // 骰子皇冠 资源url地址
"chessYellow": "", // 黄色棋子 资源url地址
"chessBlue": "", // 蓝色棋子 资源url地址
"chessGreen": "", // 绿色棋子 资源url地址
"chessRed": "", // 红色棋子 资源url地址
"rollDiceEffect": {
"dragonSkeletonUrl": "https://xxxx/remoteDragonEffect/rundice_ske.json",
"dragonAtlasUrl": "https://xxxx/remoteDragonEffect/rundice_tex.json",
"dragonTextureUrl": "https://xxxx/remoteDragonEffect/rundice_tex.png",
"animatureName": "Armature",
"animationName": "newAnimation"
}
},
...
}
}
- 五子棋
{
"chessBoard": "", // 棋盘底 资源url地址
"chessBlack": "", // 黑棋 资源url地址
"chessWhite": "", // 白棋 资源url地址
"chessBg": "", // 棋子背景 资源url地址
"tipsChess": "", // 提示落棋标志 资源url地址
"curChessWhiteBg": "", // 当前出棋的白色标志 资源url地址
"curChessBlackBg": "" // 当前出棋的黑色标志 资源url地址
}
baloot
{ "bg": "", // 桌面背景 资源url地址 "cardBg": "" // 牌背 资源url地址 "players": { "uid_0" : { // 玩家的uid "popBg": "" // 气泡 资源url地址 }, "uid_1" : { // 玩家的uid "popBg": "" // 气泡 资源url地址 } ... } }
消消乐
// note: JSON格式,请确保配置正常,如果其中有配置错误或加载异常,则全部使用游戏自带的资源(相当于没有配置) { items: [ /** 5种元素列表 */ { imageUrls: ["资源url地址", "资源url地址"], // 元素图片urls,如果是仅有一张,则没有动画,多张则根据duration间隔来切换帧动画 duration: 0.1 // 可选,元素帧动画轮播间隔,单位秒,默认0.1秒 }, { imageUrls: ["资源url地址"] // 元素图片urls,如果是仅有一张,则没有动画,多张则根据duration间隔来切换帧动画 // duration: 0.1 // 可选,元素帧动画轮播间隔,默认0.1秒 }, { imageUrls: ["资源url地址", "资源url地址"], duration: 0.5 }, { imageUrls: ["资源url地址", "资源url地址"], duration: 0.1 }, { imageUrls: ["资源url地址"], duration: 0.1 } ], loadingUrl: "", // 可选,开始游戏时加载资源的loading的动画贴图url itemGridUrl: "", // 可选,元素格子url reconnectAnim: { // 可选,重连loading动画 imageUrls: ["资源url地址", "资源url地址"], // 贴图urls duration: 0.1 // 帧动画时间间隔,单位秒 } }
桌球
{ "logo": "", // logo 图片资源的url链接 https:// "players": { "uid_0" : { // 玩家的uid "stick": "", // 球杆图片连接 "table": "", // 桌布图片链接 "table_cushion": "", // 球桌框 "table_holes": " ", // 球洞 https:// }, "uid_1" : { // 玩家的uid "stick": "", // 球杆图片连接 "table": "", // 桌布图片链接 "table_cushion": "", // 球桌框 "table_holes": " ", // 球洞 https:// } ... } }
Jackaroo
{ "players": { "uid_0" : { // 玩家的uid "bg": "", // 游戏背景链接 https:// "board": "", // 棋盘图片链接 https:// "coloredHoles": "", // 棋盘上的颜色区域图片链接 https:// "marbles": " ", // 棋子图片链接 https:// "cards": " ", // 牌合图链接 https:// "pokerLayout": " ", // 牌的排列形式,1.填 "compact" 表示 紧凑排列;2. 不填或其他就是 松散排列 "pokerType": " ", // 牌的类型,1. 填 "simple" 表示 简单形式的牌;2. 不填或其他就是 牌面带效果图 }, "uid_1" : { // 玩家的uid "bg": "", // 游戏背景链接 https:// "board": "", // 棋盘图片链接 https:// "coloredHoles": "", // 棋盘上的颜色区域图片链接 https:// "marbles": " ", // 棋子图片链接 https:// "cards": " ", // 牌合图链接 https:// "pokerLayout": " ", // 牌的排列形式,1.填 "compact" 表示 紧凑排列;2. 不填或其他就是 松散排列 "pokerType": " ", // 牌的类型,1. 填 "simple" 表示 简单形式的牌;2. 不填或其他就是 牌面带效果图 }, ... } }
克朗棋
{
"players":
{
"uid_1": //玩家的uid
{
"table":"", //桌面式样。默认使用自己的资源,如果自己没有配置,则使用默认资源。https://
"table_board":"", //桌面周边的框,配置时与桌面式样成套。默认使用自己的资源,如果自己没有配置,则使用默认资源。https://
"bar":"", //桌面下方玩家操控母球位置的滑动条,配置时与桌面式样成套展示。默认使用自己的资源,如果自己没有配置,则使用默认资源。https://
"cueDisc":"", //每个玩家各自的母球,以及下方滑动条上的滑动按钮。https://
"targetDisc":"", //仅在carrom模式下生效,修改玩家的目标球式样。如果两个人玩家传入的自定义资源相同,则在自己的视角下,
//自己的目标球采用自定义资源,对方的目标球使用默认资源。设定自定义资源后,下方计数UI,开局提示UI也会有相应变化。https://
"queueDisc":"", //红球。https://
"banCueLight":"", //母球底部光效,配置时与freeCueLight成套。在移动母球与其他球重叠时显示(表示此时母球不能放置)https://
"freeCueLight":"" //母球底部光效,配置时与banCueLight成套。平时母球正常移动或者停止时显示。https://
},
"uid_2": //玩家的uid
{
"table":"",
"table_board":"",
"bar":"",
"cueDisc":"",
"targetDisc":"",
"queueDisc":"",
"banCueLight":"",
"freeCueLight":""
}
...
}
}
台湾麻将
{ "logo": "" // logo 图片资源的url链接 }
大话骰
{ "logo": "", // logo url 资源链接 }
大话骰
{ "logo": "", // logo url 资源链接 }
扫雷
{ "logo": "", // logo url 资源链接 }
连连看
{ "logo": "", // logo url 资源链接 }
跳一跳
{ "logo": "", // logo url 资源链接 }
蛇梯
{ "logo": "", // logo url 资源链接 }
26. app通知游戏玩家信息列表 (赛车)
- state
app_common_users_info
- data
{
"infos": [
{"uid": "", "avatar": "", "name": ""}, // uid: 玩家id,avatar:玩家头像url,name:玩家名字
...
]
}
- 说明
app通知游戏定制UI配置表
27. app通知游戏自定义帮助内容 (赛车)
- state
app_common_custom_help_info
- data
{
"content": [
"content1",
"content2",
"content3"
...
]
}
- 说明
app通知游戏自定义帮助内容
28. app主动调起主界面(赛车)
- state
app_common_show_game_scene
- data
{
}
- 说明
APP通知游戏客户端指令动作app主动调起主界面
29. app主动调起主界面(赛车)
- state
app_common_show_game_scene
- data
{
}
- 说明
APP通知游戏客户端指令动作app主动调起主界面
30. app主动隐藏主界面(赛车)
- state
app_common_hide_game_scene
- data
{
}
- 说明
APP通知游戏客户端指令动作app主动隐藏主界面
31. app通知游戏爆词内容(谁是卧底)
- state
app_common_game_send_burst_word
- data
{
"text": "", // 爆词内容 备注:如果不传该字段就是原始内容
}
- 说明
app通知游戏爆词内容
32. app通知游戏玩家所持有的道具卡(大富翁)
- state
app_common_game_player_monopoly_cards
- data
{
"reroll_card_count": 0, // 重摇卡的数量 (注:也可用字段 paid_events_19 替代)
"free_rent_card_count": 0, // 免租卡的数量(注:也可用字段 paid_events_18 替代)
"ctrl_dice_card_count": 0, // 购买指定骰子点数卡的数量(注:也可用字段 paid_events_20 替代)
"paid_events_19": 0, // 重摇卡的数量 (注:如果同时存在reroll_card_count,优先使用reroll_card_count)
"paid_events_18": 0, // 免租卡的数量 (注:如果同时存在free_rent_card_count,优先使用free_rent_card_count)
"paid_events_20": 0, // 购买指定骰子点数卡的数量 (注:如果同时存在ctrl_dice_card_count,优先使用ctrl_dice_card_count)
}
- 说明
app通知游戏玩家所持有的道具卡
33. app通知游戏获取到道具卡(大富翁)
- state
app_common_game_show_monopoly_card_effect
- data
{
"type": 1, // 1:重摇卡,2:免租卡,3:指定点数卡 (注: 也可用字段 paid_events_type 替代指定道具卡类型, 和paid_events_type 二选一, 如果同时存在type和paid_events_type,优先使用type)
"paid_events_type": "paid_events_19", // paid_events_19: 重摇卡,paid_events_18:免租卡,paid_events_20:指定点数卡 (注:和 type 字段二选一,如果同时存在type和paid_events_type,优先使用type)
"fromUid": "", // 发送的玩家id
"toUid":"", // 接收方玩家id
"count": 0, // 数量
}
- 说明
app通知游戏获取到道具卡
34. app通知游戏侧更新游戏币(数值游戏相关玩法)
- state
app_common_update_game_money
- data
{
}
- 说明
app通知游戏侧更新游戏币
35. app通知游戏玩家所持有的道具卡(只支持飞行棋)
- state
app_common_game_player_props_cards
- data
{
"props": "返回的json字符串如下", // 道具卡数量结构的json字符串,具体返回如下
}
ludo 返回字符串结构说明
注:返回的是一个json数据的字符串,specify_dice_roll是遥控骰子字段对应的数量 {"props": "{\"specify_dice_roll\":0}"}
说明
app通知游戏玩家所持有的飞行棋道具卡
36. app通知游戏播放玩家所获得的道具卡的特效(只支持飞行棋)
- state
app_common_game_player_props_cards_effect
- data
{
"paid_events_type": "specify_dice_roll", // 获得的道具卡名字(注:道具卡名字标注请看下方说明)
"fromUid": "", // 发送的玩家id
"toUid":"", // 接收方玩家id
"count": 0, // 数量
}
飞行棋(ludo)
paid_events_type: "specify_dice_roll" // 控制指定摇出骰子点数的道具
说明
app通知游戏播放玩家所获得的道具卡的特效
37. app通知游戏指定observer观众观看的玩家
- state
app_common_game_observe_player
- data
{
"uid":"", // 观众观看的玩家id
}
- 说明
app通知游戏指定observer观众观看的玩家 支持游戏: 怪物消消乐,连连看
38. 设置游戏的背景音音乐量大小(只修改背景音乐音量大小)
- state
app_common_game_music_volume
- data
{
"volume": 100 // 背景音量大小 0 到 100
}
- 说明
设置游戏的背景音乐音量大小
39. app向游戏下发头像新URL
- state
app_common_game_avatar
- data
{
"avatars": [
{
"uid": "user id",
"avatar": "user avatar url"
},
{
"uid": "user id",
"avatar": "user avatar url"
}
]
}
- 说明
app向游戏下发头像新URL