跳转到内容

非端环境降级(浏览器兼容)

SuperSDK 支持在非 App 环境(如浏览器)中运行,提供合理的降级行为,使前端项目在浏览器中也能基本运行和调试。

在非端环境下初始化降级配置。配置会先校验,端内(有 appbridge)的合法调用才会被忽略。

SuperSDK.initFallback({
baseUrls: ['https://api.supersdk.com/superapi'], // 服务端地址列表(用于 reportEvent 上报;业务 path 追加到 baseUrl 后)
baseUrl: 'https://api.supersdk.com/superapi', // 兼容旧字段;未传 baseUrls 时使用,可省略 /superapi
spid: 'ab12cd34', // 替换为控制台签发的真实 spid(8 位小写字母数字)
environment: 'staging', // 可选,缺省 prod;1..10 位小写字母数字
appName: 'MyApp', // 应用名称
appIcon: '', // 应用图标 Base64(可选)
deviceId: '', // 设备标识(可选,不传则自动生成)
});

行为规则:

  • config 必须是 plain object,spid 必须匹配 ^[a-z0-9]{8}$;environment 省略时为 prod,显式传入时必须匹配 ^[a-z0-9]{1,10}$
  • 旧 aid 字段不兼容;不 trim、不转换大小写,非法输入立即抛错且不修改已生效配置
  • 端内(有 appbridge)也会先执行上述校验;合法时忽略 fallback 配置,所有 API 走原有端内逻辑
  • 可多次调用,采用 merge 语义(只更新本次传入的字段,未传入字段保留前次值)
  • baseUrls 优先于 baseUrl;未配置时默认 ['https://api.supersdk.com/superapi'];旧 baseUrl 字段会兼容补齐 /superapi
  • 请求会优先使用上次成功的 baseUrl,其余候选随机排序;HTTP 非 2xx 或网络错误时切换下一个 baseUrl
  • 不调用 initFallback 时,环境配置类 API 返回默认空值(不会 reject)

deviceId 说明:

  • 未传入时自动生成 UUID 并存入 localStorage(key: supersdk_device_id),跨会话保持一致
  • 清除方式:localStorage.removeItem('supersdk_device_id')
  • 隐私模式下 localStorage 可能受限,deviceId 退化为内存存储(每次会话不同)

判断当前是否处于降级模式。

if (SuperSDK.isFallbackMode()) {
// 非端环境且已调用 initFallback
// 可用于条件渲染(如隐藏不支持的功能按钮)
}

返回 true 的条件:非端环境(无 appbridge)且已调用 initFallback。

分类API降级行为需要 initFallback
页面导航openPage / openExternal / openWithBrowser / openBrowserwindow.open(url, '_blank')否
closePagewindow.close() 或 history.back()否
UI 反馈showToast(msg)console.log('[SuperSDK Toast]:', msg)否
share(content)console.log('[SuperSDK Share]:', content)否
环境配置getEnv()resolve { os:'web', spid, environment, appName, deviceId, ... }否(有配置返回更多字段)
setAPIEnvironment(env) / getAPIEnvironment()web 降级下可运行时切换项目环境;端内 set reject(环境由原生宿主控制)、get 透传原生值set 是(需先 initFallback)
getAppName() / getAppIcon()resolve 配置值或 ""否
Settings 系列resolve {} 或 null否
埋点上报reportEvent(name, params)fetch POST 到 {baseUrl}/v2/reportEvent;body 带 basic_data.host_spid/env,header 带 X-Aid=<spid> 与 X-Super-API-ENV是(需 baseUrl/baseUrls + spid)
用户反馈submitFeedback(params)fetch POST 到 {baseUrl}/v2/feedback;body 带 spid/env/platform=web,header 带 X-Aid=<spid> 与 X-Super-API-ENV;业务拒绝(INVALID_REQUEST/NOT_FOUND)不换线路是(需 baseUrl/baseUrls + spid)
事件监听subscribe / onForeground / onBackground 等正常注册(但不会收到 Native 推送)否
不可降级callHostMethod / requestShortUrl / downloadWithCache / 文件操作 / ZIP / 归因 / 支付 / nativeBlock 等reject,错误信息 "Not in app environment..."-