【鸿蒙二开】WPS Open SDK 统一版接入概览
已经或准备接鸿蒙 WPS Open SDK 的同学,常会先问:统一版到底统一了什么?按对接文档,专业版(ToB)与个人版(ToC)仍是不同 HAR / 凭据,但对外是一套 API:WPSApi + OpenFileRequest。本帖给一份最短概览,适合刚拿到包、准备收敛封装的同学。目标不是背参数表,而是确认工程里是否只剩一处打开 Facade。
统一了什么
单例入口:registerApp / setWpsFileToken / sendRequest
同一打开模型:OpenFileRequest(只读/可编辑、水印、extraOptions、回传)
同一结果面:Result / ResultCode
个人版注册成功后通常即可打开,无需激活序列号;专业版建议在注册成功回调里一次 setWpsFileToken,不要每次打开塞 wpsToken。不落地等能力按交付形态生效,方案评审先确认约定再测菜单。
WPSApi.registerApp(APP_KEY, APP_SECRET, {
onCallback: (result: Result): void => {
if (result.code !== ResultCode.OK) {
console.error(result.code, result.msg);
return;
}
if (!SdkConstants.isPersonalSdk()) {
WPSApi.setWpsFileToken(PRO_SN);
}
}
});凭据与包名绑定,专业版 / 个人版不可混用。换 HAR 或换包名后 clean,再验正式包是否 1013。调试包正常、正式包失败时,优先查 bundleName 与申请批次。
打开怎么写
async function openDoc(
ctx: UIAbilityContext,
src: string,
editable: boolean,
needTransfer: boolean
): Promise<Result> {
await prepareWps(); // 内部完成 registerApp + 可选 setWpsFileToken
const path = copyToSandbox(ctx, src);
const req = new OpenFileRequest(ctx, path);
req.enableEdit = editable;
if (needTransfer) {
req.wpsTransferType = TransferType.TRANSFER_TYPE_URI;
}
return WPSApi.sendRequest(req);
}路径先拷到应用沙箱再打开。enableEdit 控制只读 / 可编辑;需要关窗结果时再开 wpsTransferType,与可编辑开关独立。联调顺序建议:注册 → 只读 → 可编辑 → 水印 / 菜单 → 回传。一次堆满所有开关,ResultCode.ERROR 很难归因。extraOptions 仅显式赋值生效;未赋值不要假设默认全关。
上手检查表
全仓是否只有一处 new OpenFileRequest
是否还残留逐次 request.wpsToken
Release 是否打印完整 secret
正式包包名与申请凭据是否一致
关窗回传是否在真机验过 Result.data
建议把上面五条写进 PR 模板。多人并行接入时,冻结新增平行 Helper,统一走 Facade。统一版解决的是研发模型一致;产品选哪套客户端、是否要求不落地,仍按合规与授权决定。开发侧坚持一套 Facade,页面只调 prepare / open。字段语义以官方对接文档为准,随 SDK 版本核对。路径务必先落到沙箱;外部 URI 权限不足时常见泛化 ERROR。可编辑与回传按入口语义组合,不要在复制粘贴中写死「编辑=回传」。换 HAR 后务必 clean。新人上手时,先画清调用链再对照对接文档核对字段,比直接复制 Demo 更稳。本帖仅作社区交流备忘,细节以官方文档与当前 HAR 说明为准。
小结与获取 SDK
鸿蒙侧把 WPS 文档二开压成一条主线:注册成功 → 沙箱打开 → 按需叠策略与回传。统一版让专业版与个人版共用同一套接口学习成本;差异收在适配层即可。
更多参数见官方对接文档:https://365.kdocs.cn/l/clQl5cek2NoT
申请 SDK HAR 与凭据:m_open_sdk@wps.cn(注明包名与专业版/个人版需求)。
技术交流 QQ 群:628436767
