已收录

【鸿蒙二开】WPS SDK 统一版解决了哪些工程痛点

社区里做鸿蒙 WPS 文档二开,常见吐槽不是「API 太长」,而是:预览/编辑各写一套打开、换交付包就要全仓改注册、个人用户场景覆盖不了。WPS Open SDK 鸿蒙统一版把接口收成 WPSApi + OpenFileRequest,按场景换 HAR 与凭据即可,业务 Facade 可共用。下面按三条痛点写收敛思路。

痛点 1:多套平行打开代码

现象

收敛

预览/编辑复制构造

单一 openDoc(editable)

水印/回传又复制一份

可选参数扩展 Facade

Review 找不到入口

全仓一处 new OpenFileRequest

痛点 2:注册与鉴权散落

未注册就 sendRequest 会 reject;1013 查包名与凭据。建议 ensureRegistered 集中注册,成功后再 setWpsFileToken(按 HAR 约定)。

let ready = false;

async function ensureRegistered(ctx: UIAbilityContext) {
  if (ready) 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}`);
  if (!SdkConstants.isPersonalSdk() && SN) {
    WPSApi.setWpsFileToken(SN);
  }
  ready = true;
}

冷启动 await ensureRegistered;按钮在 ready 前禁用。Release 不打 secret。

痛点 3:路径与只读默认值

选择器路径先 copy 到 filesDirenableEdit 默认只读,编辑须显式 trueOK 且无 data 在未开回传时正常,勿当上传失败。

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);
  }
}

四、联调、错误码与 Facade 纪律

勾选项:注册 OK 再打开;沙箱路径;编辑显式 enableEdit;日志带 code/msg;换 HAR 后 clean。

现象

优先查

reject

是否 ensureRegistered

1013

包名、key、HAR

ERROR

沙箱路径、enableEdit

OK 无 data

是否开启回传

社区常问 Facade 纪律:全仓一处 new OpenFileRequest;注册与 setWpsFileToken 在 bootstrap;预览 enableEdit=false、编辑显式 true;水印用可选参数扩展;Release 不打 secret。日志带 stage=register|open|transfer,驻场排查更快。正式包与调试包包名不同时,凭据须分别申请,否则易出现偶发 1013。

五、小结与获取 SDK

统一版降低的是接口分裂与维护成本,不是取消凭据对齐。把 ensureRegistered + openDoc 放进基础库,比每个页面抄 Demo 稳。同仓库多客户交付时,按 flavor 换 HAR/凭据即可,UI 与 Facade 可长期共用。联调先把「注册 OK → 沙箱打开」跑绿,再叠水印与回传,能避免一次堆参难查根因。

社区联调常见误区:把 OK 且无 data 当成上传失败(未开回传时属正常);把只读当成打开失败(忘写 enableEdit);把 reject 当成 ERROR(其实是未注册)。建议在群里贴日志时带上 stagecode,比只说「打不开」更易对症。Ability 冷启动完成注册后再放开按钮,可减少连点 reject。正式包与内测包包名不同须分别申请凭据,否则易出现偶发 1013。水印、extraOptions 请在最小打开通过后以可选参数扩展 Facade,不要复制第三份 openDoc

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

申请 SDK HAR 与凭据:m_open_sdk@wps.cn(注明包名与专业版/个人版需求)。

技术交流 QQ 群:628436767

湖北省
浏览 91
收藏
4
分享
4 +1
+1
全部评论