已收录

【鸿蒙二开】WPS SDK:HAR 到 OpenFileRequest 联调

社区里做鸿蒙 WPS 文档二开,首轮目标应收敛为一条可重复的闭环:@wps/wps_sdk HAR 集成成功 → RegisterAppRequest 经 WPSApi.sendRequest 注册返回 ResultCode.OK → 沙箱路径构造 OpenFileRequest 完成只读打开。reject 多来自未注册,打开失败看 Result.code,两者日志要分 stage。下面按工程步骤写实现与排错,便于发帖自查与互相核对日志字段。

一、ohpm 与 HAR

libs/wps_sdk.har + oh-package.json5 file 依赖 → ohpm install。import WPSApi、RegisterAppRequest、OpenFileRequest、ResultCode。凭据与 bundleName 绑定,换包重新申请。

二、注册 Facade

let wpsReady = false;

async function ensureRegistered(ctx: UIAbilityContext) {
  if (wpsReady) return;
  const r = await WPSApi.sendRequest(
    new RegisterAppRequest(ctx, APP_KEY, APP_SECRET)
  );
  if (r.code === ResultCode.ERROR_CODE_AUTH_FAILURE) {
    throw new Error(`1013: ${r.msg}`);
  }
  if (r.code !== ResultCode.OK) throw new Error(`register ${r.code}`);
  wpsReady = true;
}

冷启动注册;按钮在 wpsReady 前禁用。

三、沙箱打开

async function openDoc(ctx: UIAbilityContext, path: string, edit: boolean) {
  await ensureRegistered(ctx);
  const req = new OpenFileRequest(ctx, path);
  req.enableEdit = edit;
  const r = await WPSApi.sendRequest(req);
  if (r.code !== ResultCode.OK) console.error(r.code, r.msg);
}

选择器文件先 copy 到 filesDir。enableEdit 默认只读。

四、联调清单

现象

查

reject

ensureRegistered

1013

包名、key、HAR

ERROR 打开

沙箱路径

OK 无 data

是否开回传

日志带 stage 与 code,勿只发「打不开」截图。

五、扩展顺序

只读通过 → 可编辑 → 水印/回传。全仓一处 new OpenFileRequest。换 HAR 后 clean 重装;正式包与内测包包名不同须分别申请凭据,否则易出现偶发 1013。

六、日志与提问格式

发帖或提工单建议贴:stage=register|open、Result.code、msg、是否 await ensureRegistered、打开路径是否在 filesDir。避免只发「打不开」无 code。Ability 冷启动注册完成后再放开按钮,可减少 reject。

集成冒烟用例:内置一份小 docx 到沙箱,只读打开成功后再测 enableEdit=true。监控可对注册失败、打开失败分计数,维度带 code。

选择器 URI 务必 copy 到 filesDir 再打开;直接传外部路径常见 ERROR 且难排查。预览与编辑共用 openDoc(ctx, path, edit),enableEdit 默认只读。进程被杀后 wpsReady 重置,须重新注册。Facade 内统一 sendRequest,页面不堆文档未列参数。水印与 extraOptions 在最小打开通过后以可选参数扩展,勿复制第三份打开逻辑。发版对照 HAR 版本与文档 revision,避免字段漂移。RegisterAppRequest 与 OpenFileRequest 均通过 WPSApi.sendRequest 发出,不要在业务层绕过 Facade 直接 new 多个入口。错误 key 联调时预期注册失败,应断言 code 而非强行打开。沙箱路径打印建议仅 debug 开启。多模块工程把 Facade 放在独立库,entry 只依赖接口。若打开成功但 UI 无响应,先确认是否切到 WPS 前台而非回调未触发。

七、小结

最小 Facade + 错误码表进仓库,比每页抄 Demo 稳。先跑通注册与沙箱打开再叠参数。sendRequest 返回 Promise,务必 .then 处理 Result 并 .catch 未注册异常;不要把 reject 与 ERROR 混为一谈。内置测试附件随包打进 rawfile 再拷贝到沙箱,可排除选择器权限干扰。联调会议只讨论 stage/code/msg 三字段,效率高于无日志截图。

更多参数见官方对接文档:https://365.kdocs.cn/l/clQl5cek2NoT

申请 SDK HAR 与凭据:m_open_sdk@wps.cn(注明包名与场景)。

技术交流 QQ 群:628436767

湖北省
浏览 54
收藏
3
分享
3 +1
+1
全部评论