DoggyZhang 71b37c4b9b feat: init 5 месяцев назад
..
src 71b37c4b9b feat: init 5 месяцев назад
.gitignore 71b37c4b9b feat: init 5 месяцев назад
README.md 71b37c4b9b feat: init 5 месяцев назад
build.gradle 71b37c4b9b feat: init 5 месяцев назад

README.md

Game数据协议说明

Native To Game

方法调用

JsbBridge.sendToScript(methodName, dataJson)

dataJson数据结构

{
    "callback_id": "123456789",
    "data": {}
}

数据描述:

  • callback_id:回调方法名,Game如果判断有callback_id则需要在完成逻辑处理后触发该方法回调
  • data:json object格式数据,根据场景解析具体数据内容

如果data是Game To Native调用的callback数据结构:

{
    "code": 0, //0: 成功,其他:错误码
    "data": {}
}

Game To Native

方法调用

native.bridge.sendToNative(methodName, dataJson);

dataJson数据结构

{
    "callback_id": "123456789",
    "data": {} //具体数据
}

数据描述:

  • callback_id:回调方法名,Native如果判断有callback_id则需要在完成逻辑处理后触发该方法回调
  • data:json object格式数据,根据场景解析具体数据内容

如果data是Native To Game调用的callback数据结构:

{
    "code": 0, //0: 成功,其他:错误码
    "data": {}
}

网络请求数据

请求数据

{
    "type": 0, //0: http,1: socket
    "path": "/game/op", //协议path
    "data": {
        "code": 0,
        "message": "",
        "data": {}
    }
}

通知数据

uri格式:game<游戏编号><业务>

dataJson数据:

{
    "data": "" //服务端下发数据的json string
}

Ludo数据协议说明

Native To Game

开始游戏

JsbBridge.sendToScript("startGame", dataJson); //在onGetGameView之后调用

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "channel": "10000",
        "game_id": "ludo_game:111",
        "uid": 1001, //用户自己uid
        "game_meta_data": {
            "serviceInstanceId": 1,
            "serviceRegion": "2"
        },
        "game_players": [
            {
                "playerId": 1234, //玩家uid
                "playerName": "", //玩家名
                "playerAvatarUrl": "", //playerAvatarPath为空时,从网络加载
                "playerAvatarPath": "" //玩家头像本地图片路径,不为空时优先展示
            }
        ],
        "game_config": {
            "gameMode": 0, //游戏模式 0:经典模式 1:快速模式
            "gameFee": 500, //游戏参与费用
            "magicMode": 0, //是否道具场 0:关闭道具模式,1:开启道具模式
            "maxPlayerCount": 2, //参与人数
        },
        "local": false, //是否本地模式,0: 不是, 1: 是
        "game_record": "" //local游戏记录
    }
}

网络下行通知

JsbBridge.sendToScript("networkNotify", dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": "{"uri":"game_1_init","data":{}}" //服务端下发数据的json string,直接透传
}

网络状态通知

JsbBridge.sendToScript("networkStatus", dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "available": true
    }
}

操作游戏

JsbBridge.sendToScript("opGame", dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "op": 1, //操作码
        "data": {} //操作数据
    }
}

操作说明:

  • 说话状态:op=2,data={"uid": 1001, "volume":0}

重置游戏为初始状态

JsbBridge.sendToScript("resetGame", dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "channel": "10000",
    }
}

获取玩家游戏内状态

JsbBridge.sendToScript("getPlayerGameStatus", dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "uid": 1001
    }
}

callback数据:

{
    "callback_id": "678912345", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "code": 0, //0:成功,其他:错误码
        "data": {
            "uid": 1001,
            "status": 0 //0: 已退出游戏,1: 游戏中
        }
    }
}

获取玩家头像坐标

JsbBridge.sendToScript("getPlayerAvatarView", dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "uid": 1001
    }
}

callback数据:

{
    "callback_id": "678912345", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "code": 0, //0:成功,其他:错误码
        "data": {
            "postion": { //左上角坐标
                "x": 0,
                "y": 0
            },
            "size": { //视图大小
                "width": 0,
                "height": 0
            }
        }
    }
}

Game To Native

获取游戏视图信息

native.bridge.sendToNative('onGetGameView', dataJson); //游戏需要初始化数据时调用

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {}
}

callback数据:

{
    "code": 0,
    "data": {
        "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
        "data": {
            "lang_code": "ar", //语言码
            "sound_open": true, //音效是否打开
            "vibrate_open": true, //振动是否打开
            "view_size": { //游戏区域size
                "width": 0,
                "height": 0
            },
            "safe_area": { //游戏安全区域
                "postion": { //左上角坐标
                    "x": 0,
                    "y": 0
                },
                "size": { //安全区域大小
                    "width": 0,
                    "height": 0
                }
            }
        }
    }
}

获取用户货币数量

native.bridge.sendToNative('onGetCurrency', dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "type": 0 //0: 金币,1: 钻石
    }
}

callback数据:

{
    "code": 0,
    "data": {
        "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
        "data": {
            "count": 1000, //货币数量
        }
    }
}

通知Native游戏已开始

native.bridge.sendToNative('onGameStart', dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {}
}

通知Native游戏已结束

native.bridge.sendToNative('onGameEnd', dataJson);

dataJson数据:

{
    "callback_id": "123456789",
    "data": {}
}

操作Native

native.bridge.sendToNative('onGameOp', dataJson);

dataJson数据:

{
    "callback_id": "123456789", //回调的方法名,每次调用生成,确保全局唯一
    "data": {
        "op": 1, //操作码
        "data": {} //操作数据
    }
}

操作说明:

  • 点击头像:op=1,data={"uid":1001}
  • 点击音效开关:op=2,data={}
  • 点击振动开关:op=3,data={}
  • 点击退出:op=4,data={}
  • 振动:op=6,data={"duration": 50} //duration振动时长,单位ms,-1: 长振动,0: 短振动
  • 播放音效:op=7,data={"sound_name": "dice.mp3"} //sound_name 音效名带拓展名
  • 振点击音效开关:op=8,data={}
  • 点击振动开关:op=9,data={}

网络请求

native.bridge.sendToNative('onNetworkRequest', dataJson);

dataJson数据:

{
    "callback_id": "123456789",
    "data": {"type":0,"path":"game/ludo","data":{}} //type(0:http, 1:socket), path(协议路径), data(传输数据)
}

响应数据:

{
    "callback_id": "123456789",
    "data": {
        "code": 0, //0:成功,其他:错误码
        "data": "{}" //服务端返回数据的json string,直接透传
    }
}

Native日志

native.bridge.sendToNative('log', dataJson);

dataJson数据:

{
    "callback_id": "123456789",
    "data": {
        "tag": "tag_ludo",
        "msg": "error:1001",
        "xlog": true //是否输出
    }
}

展示弹窗

native.bridge.sendToNative('onShowDialog', dataJson);

dataJson数据:

{
    "callback_id": "123456789",
    "data": {
        "type": 1, //弹窗类型
        "id": 1234, //弹窗id
        "data" {} //弹窗数据,根据类型定义不同数据
    }
}

type说明:

  • 1: 退出游戏弹窗, data:{"game_record": ""} //退出游戏,local场有game_record
  • 2: 结束托管提示弹窗, data:{}
  • 3: 游戏结果弹窗, data:{"is_over":1,"plays":[{"id":1018,"coin":0,"win":1},{"id":5005,"coin":0,"win":0}]}
  • 4: 货币不足弹窗, data:{"type":0} //type 0:金币 1:钻石

关闭弹窗

native.bridge.sendToNative('onDismissDialog', dataJson);

dataJson数据:

{
    "callback_id": "123456789",
    "data": {
        "id": 1234 //弹窗id
    }
}

Native错误码

  • 0: 成功
  • 10001: 请求方法名为空
  • 10002: Native没有注册处理方法
  • 10003: Native处理方法实例化异常
  • 10004: 数据解析错误
  • 10005: 回调超时
  • 10006: 数据转换成json错误
  • 10007: 回调数据为null
  • 10008: 未知的网络类型
  • 10009: 数据为null
  • 10010: http请求路径为空错误