已收录

【鸿蒙二开】WPS SDK 常见错误码排查

键盘测试ABC123

社区里做鸿蒙 WPS 文档二开时,打开失败常被笼统说成「SDK 报错」。其实 @wps/wps_sdk 里,注册失败、未注册就发送、打开参数错误、关窗回传失败,落在 Result.code / 异常上的表现不同。下面按清单写,方便对照联调。细节以官方对接文档为准。

调用顺序与 Result 字段

推荐顺序:集成 HAR 并对齐包名与 appKey/appSecretregisterAppResultCode.OK → 需要时在回调里 setWpsFileToken → 选择器文件拷进 context.filesDirnew OpenFileRequest → 设 enableEdit(默认只读)→ 需要时开回传 → WPSApi.sendRequest

字段

用途

requestType

请求类型

code

状态码

msg

可读信息

data

回传业务数据(fileUri/transferFd 等)

未注册就发送会 抛异常,不是带 code 的打开失败。多数已注册请求即便失败也会 resolve Result,务必判断 code。Promise 落定不等于业务成功。

错误码速查

code

常量

怎么处理

0

OK

成功;开回传时再读 data

-1

NONE

默认值,勿当成功

-2

ERROR

查参数、路径、打开异常

1013

ERROR_CODE_AUTH_FAILURE

查凭据与 Bundle

其它正整数

关闭回传业务失败

抛异常

先完成注册

常见串台:把回传正整数当成注册失败去改 appKey;把只读当成打开失败去改错误码分支;把 throw 当成 -2。日志请带 stage=register|open|transfer|throw

示例

import { common } from '@kit.AbilityKit';
import { WPSApi, OpenFileRequest, Result, ResultCode } from '@wps/wps_sdk';

let ready = false;

WPSApi.registerApp(APP_KEY, APP_SECRET, {
  onCallback: (r: Result) => {
    if (r.code === ResultCode.ERROR_CODE_AUTH_FAILURE) {
      console.error('1013', r.msg);
      ready = false;
      return;
    }
    if (r.code !== ResultCode.OK) {
      ready = false;
      return;
    }
    // 需要激活序列号时在此 setWpsFileToken
    ready = true;
  }
});

async function openDoc(ctx: common.UIAbilityContext, path: string) {
  if (!ready) {
    console.error('gate closed');
    return;
  }
  const req = new OpenFileRequest(ctx, path);
  req.enableEdit = true;
  try {
    const r = await WPSApi.sendRequest(req);
    if (r.code === ResultCode.OK) {
      // 若开启回传,再消费 r.data,并拷贝到本沙箱
      return;
    }
    console.error(r.code, r.msg, r.requestType);
  } catch (e) {
    console.error('not registered?', e);
  }
}

说明:1013 先修凭据,不要靠改水印/回传去碰运气。-2 优先确认文件已进沙箱。回传正整数按「关窗回传失败」上报,并保留原始 codeenableEdit 默认只读,可编辑必须显式 true

联调勾选

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>注册已 OK 再打开

<input class="kdocs-unchecked-list" disabled="true" type="checkbox"/>1013 或已处理凭据

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>路径在应用沙箱

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>同时处理非 OK 与 throw

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>回传成功才消费 data,并拷贝到本沙箱

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>日志含 requestType / code / msg

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>Release 未打印完整 secret

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>enableEdit 与产品预期一致(默认只读)

<input class="kdocs-unchecked-list" type="checkbox" disabled="true"/>回传正整数按 transfer 归因,不误判为注册失败

关闭回传成功时再读 Result.data;未开回传时 code=0data 为空属于正常。调试包与正式包包名不同时,凭据需分别对齐,否则易出现偶发 1013

小结与获取 SDK

排错核心:分清异常通道与 Result 通道,再按注册 / 打开 / 回传读 code。把 msg 打进日志,定位会快很多。门闩 ready 可减少未注册就发送的抛异常。社区联调时把 codemsg 一并贴出,比只说「打不开」更容易对症。

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

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

技术交流 QQ 群:628436767

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