【鸿蒙二开】SdkConstants 判断当前 WPS SDK

接入 WPS Open SDK 鸿蒙版时,对外 API 虽统一,专业版 HAR 与个人版 HAR 仍是两份交付包,凭据也不可混用。运行时请用 SdkConstants.isPersonalSdk() 判断当前进程加载的是哪一份:true 为 ToC 个人版,false 为 ToB 专业版。不要解析设备上的 WPS 客户端包名,也不要用升级弹窗结果代替 HAR 识别。下文按清单整理,方便对照联调。细节以官方对接文档为准。把判断收进适配层之后,再决定要不要 setWpsFileToken

判断什么、不判断什么

入口

当前 HAR 形态

SdkConstants.isPersonalSdk()

注册门禁

registerApp / RegisterAppRequest

打开

sendRequest + OpenFileRequest

客户端升级弹窗

wpsUpdateInfo(与 HAR 无关)

个人版注册成功即可打开,无需序列号。专业版通常在注册 OK 后 setWpsFileToken。查询只放适配层,页面不要散落 if (isPro)。换 HAR 后 clean。凭据与包名绑定,不可混用。

enableLocalization 在个人版设置不生效。联调「不落地没反应」先看 isPersonalSdk(),再查字段。同一周验两套 flavor,建议分机,避免串包 1013。

短示例

function flavor(): 'personal' | 'pro' {
  return SdkConstants.isPersonalSdk() ? 'personal' : 'pro';
}

async function ensureWps(ctx: UIAbilityContext, cred: Cred) {
  const r = await WPSApi.sendRequest(
    new RegisterAppRequest(ctx, cred.key, cred.secret)
  );
  if (r.code !== ResultCode.OK) throw new Error(String(r.code));
  if (!SdkConstants.isPersonalSdk() && cred.sn) {
    WPSApi.setWpsFileToken(cred.sn);
  }
}
  1. HAR 与申请渠道一致,clean 重编

  1. 日志打印 flavor()

  1. 专业版确认 Token;个人版确认未设

  1. 沙箱只读打开

  1. 可编辑;(可选)URI 回传拷贝

  1. 正式包包名再验 1013

未注册禁止 sendRequest。外部文件先入 filesDir。打开按钮在 ready 前禁用。Release 不打印 secret。

高频坑

现象

说明

猜包名

换渠道包即失效,应用 Constants

1013

HAR / 包名 / key 不是一套

Token 无效

个人版不应设;专业版漏设

不落地无效

ToC 该字段不生效

抛异常

未注册

业务页不要复制两套打开函数。差异收在 ensure。PR 勾选:是否页面直接调 isPersonalSdk、是否解析 WPS 包名。周五正式包再跑 flavor → 注册 → 只读 → 可编辑。

日志固定:isPersonalSdk()、包名后缀、code/msg。客服把「打不开」拆成 flavor / 注册 / 路径 / Token。字段以官方对接文档为准。欢迎帖下补充真机对照,代码仍只信 Constants。

未注册就打开会进 catch,这不是路径问题。外部 URI 直传容易笼统 ERROR,先拷进 filesDir。开了 URI 回传要等关窗,并拷贝 fileUri。未开回传时 data 空属正常。预览与编辑共用一个 open 函数,只差 enableEdit。同一工程多渠道包列全 Bundle 名;换包名须重新申请凭据。构建变体注入 CRED,不要运行时读 har 文件名。

接入评审把「HAR 与申请渠道一致」「查询只在 adapter」「专业版 OK 后 Token」写成三项。真机至少覆盖:调试包 flavor 日志、正式包 1013、个人版不设 Token、专业版漏 Token 的对照。每步只改一类行为,失败回滚到上一绿点。并发打开时拷贝目录隔离。密钥勿进公开仓。反馈请带:flavor()、是否已注册、code/msg

把「禁止解析 WPS 包名」写进 PR 模板。若联调机装了多个 WPS 客户端,仍然只信 isPersonalSdk()。策略字段(水印、extraOptions)单独验收,不要和 flavor 判断写进同一个巨大 if。坚持清单两周,入口类误报通常会下降。周五再跑一遍正式包:flavor → 注册 → 只读 → 可编辑。

小结

判断当前 SDK = SdkConstants.isPersonalSdk() 收在适配层 + 专业版注册后 Token + 再 sendRequest。不要用客户端包名或更新弹窗代替 HAR 识别。把「换 HAR 必须 clean」写进检查项。坚持清单两周,串包类问题通常会下降。接入评审确认 HAR 与包名。新人 Onboarding 先讲 Constants,再讲打开字段。

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

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

技术交流 QQ 群:628436767

湖北省
浏览 32
收藏
3
分享
3 +1
+1
全部评论