在线咨询
Skip to content

平台能力 ​

微应用运行时自动注入全局对象 xunlei,它是微应用访问宿主能力的唯一入口。本页是 API 总览与权限模型,各模块的详细用法见对应章节。

调用约定 ​

  • 访问宿主能力一律返回 Promise:任务、存储、WebView 等异步 API 都需要 await;
  • 只读快照与日志是同步的:xunlei.info、xunlei.settings 属性读取和 xunlei.logger.* 不返回 Promise;
  • 无需引入:xunlei 是全局对象,页面与事件脚本中直接使用;TypeScript 工程依赖 @xunlei-open/miniapp-types 即可获得类型提示。

API 总览 ​

模块能力所需权限详细文档
xunlei.info微应用自身信息(identity / name / author / title / version),只读无数据与日志
xunlei.logger日志输出(debug / info / warn / error)无数据与日志
xunlei.settings读取用户设置(只读快照,按 manifest.settings[].name 挂载)无数据与日志
xunlei.storage页面与事件脚本共享的键值对存储(get / set / remove / clear / keys),按微应用隔离并持久化无数据与日志
网络请求(fetch 等)访问 network.urls白名单内的地址network能力与限制
xunlei.tasks下载任务管理(create / createGroup / list / detail / update / delete / file.access)按具体方法声明权限,见下表任务 API
xunlei.events注册生命周期事件回调(onResolve / onStart / onError / onDone)无钩子事件
xunlei.runtime.blob把 Blob / 数据流转为可下载的临时 URLblob任务 API · Blob 与数据下载
xunlei.runtime.webview打开受控辅助 WebView(页面数据提取、表单操作)webview辅助 WebView
xunlei.host.env宿主环境查询(默认下载目录 / 主题模式),页面与事件脚本可用无页面与窗口
xunlei.host.ui宿主界面操作(目录选择器 / 跳转任务列表),仅页面可用无页面与窗口

权限模型 ​

涉及宿主敏感资源的能力,必须在 manifest 的 permissions 中预先声明:

权限保护对象说明
network直接网络请求配合 network.urls 白名单使用,见网络白名单
tasks.createxunlei.tasks.create、xunlei.tasks.createGroup创建下载任务或任务组
tasks.listxunlei.tasks.list查询任务列表
tasks.detailxunlei.tasks.detail查询任务详情
tasks.file.accessxunlei.tasks.file.access获取任务文件的只读访问 URL
tasks.updatexunlei.tasks.update修改任务
tasks.deletexunlei.tasks.delete删除任务(含删除文件)
blobxunlei.runtime.blob完整的 Blob 数据转 URL 能力
webviewxunlei.runtime.webview完整的辅助 WebView 能力

不需要权限的能力:存储、日志、设置读取、xunlei.info、事件注册、xunlei.host。

校验语义 ​

理解权限模型的三个要点:

  1. API 表面不收缩:xunlei.tasks 始终以完整形态暴露,未声明权限时调用对应方法会返回 PERMISSION_DENIED 错误(而不是方法消失),便于统一做错误处理:

    js
    try {
      await xunlei.tasks.list();
    } catch (error) {
      // error.code === 'PERMISSION_DENIED'
      // error.details.permission 为缺失的权限名,如 'tasks.list'
    }
  2. 页面与事件脚本均可调用任务 API:两个运行时都注入完整的 xunlei.tasks,各方法按上表对应的权限校验。未声明 webview 权限时,isAvailable() 返回 false,open() 返回 PERMISSION_DENIED。

  3. 事件上下文单独授权:scripts[].event 与 scripts[].match 声明了事件脚本的触发范围。ctx.task.meta.req.setUrl()、ctx.task.continue() 等上下文方法不受任务权限控制;事件脚本直接调用 xunlei.tasks 方法时仍须声明对应权限。

权限不足 vs 宿主能力不可用 ​

权限不足返回 PERMISSION_DENIED;宿主侧能力暂时不可用(如任务系统未就绪)属于其它错误类型。两者错误码不同,排查问题时先区分。

错误格式 ​

平台 API 的错误统一为 { code, message, details } 结构,常见错误码及处理建议见错误码。

下一步 ​