【鸿蒙二开】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