【鸿蒙二开】WPS SDK 文档不落地配置
HarmonyOS 应用集成 WPS Open SDK 在端内打开 Word、Excel 时,除跑通注册与沙箱路径外,政企与金融类场景常要求文档不在 WPS 客户端侧留下持久化副本,并限制分享、打印、导出等外泄入口。对接文档把这类策略收敛到 OpenFileRequest.enableLocalization:默认不落地,仅在业务明确需要 WPS 侧缓存时才设为 true。本文只讲这一件事——字段怎么设、哪些能力会被强制关、回传后如何清理 WPS 临时文件。
不落地是什么
WPS 打开文档后,不在 WPS 侧持久化缓存副本,并限制云同步、另存为、打印等可能导致外泄的能力。对接文档称「不落地」。
enableLocalization 怎么设
赋值 | 在支持该能力的 HAR 上 |
未设置 / false | 不落地(默认) |
true | 允许落地 |
当 SdkConstants.isPersonalSdk() 返回 false 时在对应 HAR 上生效;返回 true 时设置无效。合规场景一般保持默认不落地。
不落地时会被强制关的能力
即使 extraOptions 打开也无效:云文档/登录/收藏、分享、历史版本、另存为/打印/导出 PDF、复制粘贴剪切、文档截图、自动上传/图片存相册/解压到手机、外部应用打开。
可落地(true)后,这些能力不再被 SDK 强制关,可用 extraOptions 单独配置。
推荐调用顺序
registerApp → OK
(按需)setWpsFileToken
文件拷进本应用沙箱
new OpenFileRequest → enableEdit → enableLocalization
(可选)水印 / 回传 → sendRequest
import { OpenFileRequest, WPSApi, SdkConstants } from '@wps/wps_sdk';
const req = new OpenFileRequest(context, sandboxPath);
req.enableEdit = true;
if (!SdkConstants.isPersonalSdk()) {
req.enableLocalization = false; // 不落地,默认可省略
}
await WPSApi.sendRequest(req);回传后记得删 WPS 临时文件
不落地 + URI 回传:拷贝到本应用沙箱后,建议 fs.unlink 删除 WPS 临时路径;失败只记日志。
import fs from '@ohos.file.fs';
fs.copyFileSync(wpsTempUri, appDest);
if (!SdkConstants.isPersonalSdk()) {
try { fs.unlinkSync(wpsTempUri); } catch (_) { /* log */ }
}联调顺序与常见现象
建议顺序:registerApp 到 OK → 沙箱可编辑打开 → 确认默认不落地(分享/打印应不可用)→ 需要时再设 true + extraOptions → 若开 URI 回传则拷贝后 unlink。换 HAR 或改包名后 clean 重装;注册报 1013 时先对齐凭据,不要先改策略字段。
现象 | 先查 |
分享还在 | 是否误设 true |
extraOptions 无效 | 是否仍不落地 |
设置 seemingly 无效果 | SdkConstants 形态判定 |
打不开 | 沙箱路径、注册是否 OK |
日志建议打 allowLand、形态判定、code/msg,Release 不要打 secret。把「不落地时 extraOptions 部分无效」写进模块注释,可减少测试误报。正式包发版前用商店包名再验一次注册与不落地默认,避免凭据与 bundleName 漂移导致策略字段看似失效。外部选择器 URI 务必先 copy 进本应用沙箱再 open,否则常见泛化 ERROR,勿误判为不落地失效。Ability 冷启动阶段完成 registerApp,文档页在 ready 前禁用打开按钮,弱网连点也不要堆叠 sendRequest。