宿主方法调用
callHostMethod(methodName, params)
Section titled “callHostMethod(methodName, params)”调用宿主 App 自定义的方法,实现业务扩展。
const result = await SuperSDK.callHostMethod('getUserInfo', { id: '123' });console.log(result);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| methodName | string | 方法名 |
| params | object | 参数对象 |
注意: 此方法无超时限制,Promise 会一直等待宿主返回结果。如需超时控制,请在业务层自行实现。
宿主 App 需实现
HostMethodService接口注册自定义方法。
reportEvent(eventName, params)
Section titled “reportEvent(eventName, params)”上报事件到 SDK 内置埋点(通过 SReporter 实现)。
await SuperSDK.reportEvent('page_view', { page: 'home', duration: 1200 });参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| eventName | string | 事件名称 |
| params | object | 事件参数(可选) |
openBrowser(url, title)
Section titled “openBrowser(url, title)”打开浏览器页面(SDK 内置实现,Android 使用系统浏览器,iOS 使用 SFSafariViewController)。
SuperSDK.openBrowser('https://example.com', '示例页面');参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| url | string | 要打开的 URL |
| title | string | 页面标题 |
showToast(message)
Section titled “showToast(message)”显示 Toast 提示(SDK 内置实现,Android 使用系统 Toast,iOS 使用自定义浮层)。
SuperSDK.showToast('操作成功');参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| message | string | 消息内容 |
reportEvent、showToast、openBrowser均为 SDK 内置实现,无需宿主额外处理。
addEventCommonParam(key, value)
Section titled “addEventCommonParam(key, value)”设置埋点公共参数。设置后,本 WebView 后续所有 reportEvent 上报都会自动带上该公共参数(常用于统一注入页面来源、AB 实验分组等上下文)。
SuperSDK.addEventCommonParam('source', 'home_banner');SuperSDK.addEventCommonParam('ab_group', 'B');// 之后的 reportEvent 都会带上 source / ab_group参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| key | string | 公共参数键 |
| value | string | 公共参数值(非字符串会被转为字符串,null/undefined 转为空串) |
同步方法,无返回值。非端环境(无 appbridge)下为 no-op,不抛错。
submitFeedback(params)
Section titled “submitFeedback(params)”提交一条用户反馈。端内经 JSB 由 Native 补齐 spid / env / device_id / platform / app_version / sdk_version / os_version / device_model 后上报到 POST /superapi/v2/feedback;非端环境(已 init/initFallback 提供 baseUrl(s) + spid)由 JSSDK 直接 fetch。服务端记录提交时间与用户 IP,控制台「业务运营 → 用户反馈」按项目 × 环境查看、搜索并标记处理状态。
const { feedbackId } = await SuperSDK.submitFeedback({ scene: 'settings', // 必填 · 反馈场景 subScene: 'about', // 可选 · 子场景 title: '打开设置页闪退', // 必填 content: '进入设置页后约 1 秒必现闪退,Pixel 8 / Android 14', // 必填 userId: 'u_123456', // 可选 · 业务用户 ID(SDK 不维护用户身份,由调用方按次传入) extra: { page: 'settings', build: 42 } // 可选 · 附加信息});参数说明:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scene | string | ✓ | 反馈场景,≤64 字符 |
| subScene | string | 子场景,≤64 字符 | |
| title | string | ✓ | 标题,≤200 字符 |
| content | string | ✓ | 反馈内容,≤5000 字符 |
| userId | string | 业务用户 ID,≤128 字符;未传则控制台 user_id 为空 | |
| extra | object | 附加信息,JSON object,序列化后 ≤4KB |
返回值: Promise<{ feedbackId: number }> —— 服务端反馈记录 ID。
错误:
| 场景 | 端内(JSB) | web |
|---|---|---|
| 参数不合法(长度/类型) | reject Error('INVALID_PARAMS'),err.detail 为原因 | SuperSDKError INVALID_ARGUMENT |
| 未初始化 | - | NOT_INITIALIZED |
| 服务端业务拒绝 | 字段被服务端拒绝 → reject Error('INVALID_ARGUMENT');项目/环境不存在 → reject Error('BRIDGE_ERROR')(Native 按 JSB 注册表归一 code,err.detail 为脱敏 message) | INVALID_ARGUMENT,err.nativeCode 为服务端 code(INVALID_REQUEST / NOT_FOUND …) |
| 触发限流(每 IP 10 次/分钟 · 每项目 600 次/分钟) | reject Error('RATE_LIMITED') | RATE_LIMITED |
| 网络/超时 | reject Error('NETWORK_ERROR' / 'TIMEOUT') | NETWORK_ERROR / TIMEOUT / UNAVAILABLE(自动轮换 baseUrls) |
| Native 过旧(无此 JSB) | reject Error('SDK_TOO_OLD') | - |
字段长度以服务端校验为准(JSSDK 本地校验只是同一规则的镜像);所有字符串会被 trim。提交不是幂等的,请勿在业务侧对同一内容重复重试。
setStatusBarDarkMode(isDark)
Section titled “setStatusBarDarkMode(isDark)”设置状态栏深色/浅色模式。
// 深色背景页面:状态栏图标显示为白色SuperSDK.setStatusBarDarkMode(true);
// 浅色背景页面:状态栏图标显示为黑色SuperSDK.setStatusBarDarkMode(false);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| isDark | boolean | true=深色背景(状态栏图标白色);false=浅色背景(图标黑色) |
同步方法,无返回值。非端环境下为 no-op,不抛错。
showKeyboard(selector)
Section titled “showKeyboard(selector)”唤起软键盘。
SuperSDK.showKeyboard('#search-input');参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| selector | string | 目标输入框的 CSS 选择器(可选,iOS 使用) |
同步方法,无返回值。非端环境下为 no-op,不抛错。
平台差异:Android 为空实现(WebView 中对输入框调用 JS
focus()即可自动唤起键盘,无需此方法);iOS 转发到 Native 处理。
onJSBridgeReady(内部接口)
Section titled “onJSBridgeReady(内部接口)”⚠️ 内部接口,业务代码请勿调用。
onJSBridgeReady是 SDK 在脚本加载时自动调用的就绪通知,用于让 Native 端 flush 在 JSBridge 就绪前缓冲的消息。业务无需也不应主动调用。