跳转到内容

宿主方法调用

调用宿主 App 自定义的方法,实现业务扩展。

const result = await SuperSDK.callHostMethod('getUserInfo', { id: '123' });
console.log(result);

参数说明:

参数类型说明
methodNamestring方法名
paramsobject参数对象

注意: 此方法无超时限制,Promise 会一直等待宿主返回结果。如需超时控制,请在业务层自行实现。

宿主 App 需实现 HostMethodService 接口注册自定义方法。

上报事件到 SDK 内置埋点(通过 SReporter 实现)。

await SuperSDK.reportEvent('page_view', { page: 'home', duration: 1200 });

参数说明:

参数类型说明
eventNamestring事件名称
paramsobject事件参数(可选)

打开浏览器页面(SDK 内置实现,Android 使用系统浏览器,iOS 使用 SFSafariViewController)。

SuperSDK.openBrowser('https://example.com', '示例页面');

参数说明:

参数类型说明
urlstring要打开的 URL
titlestring页面标题

显示 Toast 提示(SDK 内置实现,Android 使用系统 Toast,iOS 使用自定义浮层)。

SuperSDK.showToast('操作成功');

参数说明:

参数类型说明
messagestring消息内容

reportEvent、showToast、openBrowser 均为 SDK 内置实现,无需宿主额外处理。

设置埋点公共参数。设置后,本 WebView 后续所有 reportEvent 上报都会自动带上该公共参数(常用于统一注入页面来源、AB 实验分组等上下文)。

SuperSDK.addEventCommonParam('source', 'home_banner');
SuperSDK.addEventCommonParam('ab_group', 'B');
// 之后的 reportEvent 都会带上 source / ab_group

参数说明:

参数类型说明
keystring公共参数键
valuestring公共参数值(非字符串会被转为字符串,null/undefined 转为空串)

同步方法,无返回值。非端环境(无 appbridge)下为 no-op,不抛错。

提交一条用户反馈。端内经 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 } // 可选 · 附加信息
});

参数说明:

参数类型必填说明
scenestring✓反馈场景,≤64 字符
subScenestring子场景,≤64 字符
titlestring✓标题,≤200 字符
contentstring✓反馈内容,≤5000 字符
userIdstring业务用户 ID,≤128 字符;未传则控制台 user_id 为空
extraobject附加信息,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。提交不是幂等的,请勿在业务侧对同一内容重复重试。

设置状态栏深色/浅色模式。

// 深色背景页面:状态栏图标显示为白色
SuperSDK.setStatusBarDarkMode(true);
// 浅色背景页面:状态栏图标显示为黑色
SuperSDK.setStatusBarDarkMode(false);

参数说明:

参数类型说明
isDarkbooleantrue=深色背景(状态栏图标白色);false=浅色背景(图标黑色)

同步方法,无返回值。非端环境下为 no-op,不抛错。

唤起软键盘。

SuperSDK.showKeyboard('#search-input');

参数说明:

参数类型说明
selectorstring目标输入框的 CSS 选择器(可选,iOS 使用)

同步方法,无返回值。非端环境下为 no-op,不抛错。

平台差异:Android 为空实现(WebView 中对输入框调用 JS focus() 即可自动唤起键盘,无需此方法);iOS 转发到 Native 处理。

⚠️ 内部接口,业务代码请勿调用。onJSBridgeReady 是 SDK 在脚本加载时自动调用的就绪通知,用于让 Native 端 flush 在 JSBridge 就绪前缓冲的消息。业务无需也不应主动调用。