非端环境降级(浏览器兼容)
SuperSDK 支持在非 App 环境(如浏览器)中运行,提供合理的降级行为,使前端项目在浏览器中也能基本运行和调试。
initFallback(config)
Section titled “initFallback(config)”在非端环境下初始化降级配置。配置会先校验,端内(有 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 退化为内存存储(每次会话不同)
isFallbackMode()
Section titled “isFallbackMode()”判断当前是否处于降级模式。
if (SuperSDK.isFallbackMode()) { // 非端环境且已调用 initFallback // 可用于条件渲染(如隐藏不支持的功能按钮)}返回 true 的条件:非端环境(无 appbridge)且已调用 initFallback。
各 API 降级行为
Section titled “各 API 降级行为”| 分类 | API | 降级行为 | 需要 initFallback |
|---|---|---|---|
| 页面导航 | openPage / openExternal / openWithBrowser / openBrowser | window.open(url, '_blank') | 否 |
closePage | window.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..." | - |