3.2 KiB
name, description
| name | description |
|---|---|
| native-bridge-contract | Use when 要实现/修改 Cocos 前端与原生侧、配置服务的对接——远程配置文件读取(gameserver / urlserver)、window.settings 同步取值、WebViewJavascriptBridge (WVJB) handler 注册与互调(分享/视频/语音/电话/通讯录/电量/网络/摇一摇),或需要核对这些接口名、数据格式、回调约定、URL 构造。 |
客户端侧适配约束:远程配置 / 原生数据接口 / 原生↔H5 桥接(须与原项目逐字一致)
继「服务器零改动」之后的第二类不可妥协约束:除 WebSocket 协议外,前端还通过「远程配置文件」与「原生接口」获取大量数据。新 Cocos 前端必须与原项目逐字一致地复刻这些读取/互调/注册方式(接口名、数据格式、回调约定、URL 构造),让原生侧与配置服务零改动即可对接。三类机制:
-
远程配置文件读取:入口
Game_Config.Debugger.gameserver(projects/Game_Surface_3/js/01_SubGame/00_SubGame_Config.js:11,远程.txtURL +ifast_random()防缓存 +serverType切正式/本地)。读取链:Logic.setGameServer()(解析 URL 参数gameconfig或Func.getothername("gameserver")覆盖,12_Logic.js:1259-1281)→get_config(gameserver)(引擎层函数,GET 远程 txt,12_Logic.js:521)→ServerUrl_Succ(_msg)回调(12_Logic.js:533)→GameData.Server = _msg.data.urlserver(12_Logic.js:549)。URL 构造、请求方式、回包字段解析须一致。 -
原生同步数据接口(注入对象):
Func.getothername(name)→window.settings.getothername(name)(js/00_Surface/05_Func.js:2467-2471)。window.settings是原生注入的全局对象,用于同步取配置(如渠道/包信息/gameserver 覆盖)。 -
原生↔H5 异步桥 = WebViewJavascriptBridge (WVJB)(
05_Func.js:2627起):- 初始化
setupWebViewJavascriptBridge(callback)(经window.WVJBCallbacks/WebViewJavascriptBridgeReady事件 /wvjbscheme://__BRIDGE_LOADED__iframe)。 - H5 注册供原生调用:
bridge.registerHandler("<name>", (data, responseCallback) => {…})。已注册 handler(名称/数据结构须一致):getVideoinfo、sharelogin、sharesuccess、gameui_play_voice、gameui_stop_voice、getphoneinfo、getAddressBook、phonestate、appservice、getaudiourl、getBattery、getwifiLevel、getnetwork、shakeEnd等(05_Func.js:2651+)。 - H5 调用原生:
bridge.callHandler("<name>", data, responseCallback)(WVJB 约定)。 - 覆盖能力:分享、视频、语音录制/播放、电话状态、通讯录、电量/wifi/网络、摇一摇等。
- 初始化
Cocos 适配注意:原项目是 H5(WebView + WVJB +
window.settings+ 引擎get_config)。新 Cocos 前端无论走 WebView 还是原生(jsb),都必须对接同名 handler、同样的数据结构与回调约定,并保持远程配置读取流程一致,使原生侧与配置服务无需改动即可互通。这套桥接的落地属 sdk/平台层范畴(后续 Plan)。改这部分前先核对上述源码位置,不要臆测接口名或数据格式。