Install
openclaw skills install harmonyos-flyverify-integretionInteractive guide for integrating MobTech FlyVerify (秒验/妙验) into HarmonyOS NEXT projects. Use when the user wants one-click verification or one-click login in a HarmonyOS app and needs help with ohpm dependencies, build-profile.json5, module.json5 permissions, privacy timing, preVerify/verify calls, auth page theme customization, or return-code troubleshooting.
openclaw skills install harmonyos-flyverify-integretion当用户提到以下任一主题时,使用本 skill:
如果用户的问题明确涉及 HarmonyOS NEXT 工程、ohpm 依赖、build-profile.json5、module.json5、MobTech appKey / appSecret、ZztSDK.init(...)、ZztSDK.submitPolicyGrantResult(...)、FlyVerify.preVerify(...)、FlyVerify.verify(...)、ThemeConfig 或错误码排查,应优先使用本 skill。
>= 12ohpm install @zztsdk/zztcoreohpm install @zztsdk/flyverifybuild-profile.json5 需要:
compatibleSdkVersion: "5.0.0(12)"buildOption.strictMode.useNormalizedOHMUrl: trueentry 模块 module.json5 需要的权限:
ohos.permission.INTERNETohos.permission.GET_NETWORK_INFOZztSDK.init(context, "您的AppKey", "您的AppSecret")ZztSDK.submitPolicyGrantResult(true)ZztSDK.submitPolicyGrantResult(true, controller)context 获取方式:
@Component 页面中通过 getContext(this) 获取UIAbility 中使用 this.context 作为 init / verify 的 UI 上下文,否则可能影响主题设置FlyVerify.preVerify(callback)FlyVerify.preVerifySync()FlyVerify.verify(uiContext, callback)FlyVerify.verifySync(uiContext)FlyVerify.setPreVerifyTimeout(timeout)3000-5000 毫秒FlyVerify.setTheme(theme)ThemeConfig扩展业务文档里存在命名不一致:
ZztSDK / ZztCustomControllerMobSDK / MobCustomController执行规则:
集成指南 和 SDK API 中的 ZztSDK / FlyVerify 为准ZztCustomController 还是 MobCustomController所有写文件和改文件操作前,都必须先展示计划修改内容并等待用户确认。
为了避免在 OpenClaw 中一次性追问太多问题,执行本 skill 时必须遵守以下规则:
bundleName 优先从工程配置读取;只有在读取失败、存在多个候选值或发现冲突时才询问用户ohpm install 只在以下条件都满足后再问:
appKey / appSecret 已齐推荐输出顺序:
主动询问用户提供 HarmonyOS 项目根路径,例如:
/Users/xxx/your-harmony-project
至少检查以下文件中的一种或多种是否存在:
build-profile.json5oh-package.json5entry/src/main/module.json5src/main/module.json5优先识别 entry 模块的 module.json5。
如果路径不合法或不像 HarmonyOS 工程,提示:
路径验证失败,未识别到有效的 HarmonyOS 工程结构。
请确认项目根目录下至少存在以下文件之一:
- build-profile.json5
- oh-package.json5
- entry/src/main/module.json5
执行:
assets/generate_excel_template.pyassets/FlyVerify_HarmonyOS_Config_Template.xlsxFlyVerify_HarmonyOS_Config.xlsx明确要求用户填写:
appKeyappSecret等待用户回复“填好了”后再继续。
读取 FlyVerify_HarmonyOS_Config.xlsx 后,至少校验:
appKey:必填,不能为空appSecret:必填,不能为空needPreVerify:必须可转换为 true / falseneedVerify:必须可转换为 true / falseneedOneClickLogin:必须可转换为 true / falseneedCustomTheme:必须可转换为 true / falsepreVerifyTimeoutMs:如填写,必须是整数,建议 3000-5000类型转换规则:
appKey、appSecret 一律按字符串处理true / falsepreVerifyTimeoutMs 统一转为整数若校验失败:
appKey / appSecret 硬性规则如果 appKey 或 appSecret 缺失,流程必须在这里直接停止,并明确告知用户:
当前缺少 MobTech 的 appKey 或 appSecret,按本 skill 规则不继续执行后续工程修改、联调或验收。
请先前往 Mob 开发者后台申请并获取应用配置:
https://new.dashboard.mob.com/#/summary
拿到 appKey 和 appSecret 后再继续。
停止规则:
build-profile.json5module.json5确认后再执行以下修改。
官方安装命令:
ohpm install @zztsdk/zztcore
ohpm install @zztsdk/flyverify
如果用户希望你代执行,应先展示完整命令并说明会修改依赖文件。
build-profile.json5 修改在项目级 build-profile.json5 中确认或补齐:
{
"app": {
"products": [
{
"compatibleSdkVersion": "5.0.0(12)",
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
}
]
}
}
执行规则:
productbuildOptionuseNormalizedOHMUrlmodule.json5 修改必须优先在 entry 模块的 module.json5 中处理。
文档明确要求增加:
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" },
{ "name": "ohos.permission.GET_NETWORK_INFO" }
]
执行规则:
requestPermissions初始化代码:
ZztSDK.init(context, "您的AppKey", "您的AppSecret")
执行规则:
context 优先来自 @Component 页面中的 getContext(this)UIAbility 中直接使用 this.context 作为页面 UI 上下文去做 verify 或主题配置submitPolicyGrantResult(...)、preVerify(...)、verify(...)如果工程入口无法快速确认,先扫描以下位置:
entry/src/main/ets/pages/*.etsentry/src/main/ets/entryability/EntryAbility.etsentry/src/main/ets/app.ets向用户说明:
根据 MobTech 隐私合规要求和中国区 App 上架规范,使用 FlyVerify 需要在用户同意隐私政策后才能初始化 SDK。
你需要在 App 中:
1. 首次启动时展示《隐私政策》弹窗
2. 用户点击"同意"按钮后,调用隐私授权代码
3. 用户点击"不同意"则不应调用
请告知我:用户点击隐私政策"同意"按钮的回调代码在哪个文件、哪个方法中?
例如:LoginPage.ets 的 onPrivacyAgreed() 方法或者具体位置如:com/kit/app/LoginPage.ets:80
通用方案:
ZztSDK.submitPolicyGrantResult(true)
带主动控制器方案:
ZztSDK.submitPolicyGrantResult(true, controller)
执行规则:
ZztCustomController不要一次性把所有问题都抛给用户。按下面顺序逐个确认:
needCustomTheme=true,最后才确认 UI 定制细节主动询问用户时,每次只问当前一个问题。例如:
下一步需要确认预取号落点。
请告诉我:`FlyVerify.preVerify(...)` 想放在哪个页面、哪个方法中?
例如:`LoginPage.ets` 的 `aboutToAppear()`
异步方式:
let callback: OperationCallback<void> = {
onSuccess: () => {},
onFailure: (e) => {}
};
FlyVerify.preVerify(callback);
同步方式:
FlyVerify.preVerifySync().then(() => {
}).catch((e: VerifyException) => {
});
规则:
verify,应先调用 preVerifyaboutToAppear() 或用户点击登录前的预热阶段调用FlyVerify.setPreVerifyTimeout(timeout);
建议值:3000-5000
异步方式:
let callback: OperationCallback<VerifyResult> = {
onSuccess: (data) => {
// data.operator 运营商名称: CUCC / CTCC / CMCC
// data.opToken token
// data.token 运营商 token
},
onFailure: (error) => {}
};
FlyVerify.verify(uiContext, callback);
同步方式:
FlyVerify.verifySync(uiContext).then((data) => {
}).catch((e: VerifyResult) => {
});
执行规则:
uiContext 必须来自组件页面可用的上下文opToken / token 交给业务服务端校验入口:
let theme = new ThemeConfig().setNumberSize(18).setLogBtnText('本机号码一键登录');
FlyVerify.setTheme(theme);
可按需配置:
setSystemBarProperties(...)setLoginPageComponent(...)所有 UI 定制代码都应先展示给用户确认再写入。
完成集成后,在用户项目中生成一份 FLYVERIFY_HARMONYOS_README.md,至少包含:
https://www.mob.com/wiki/detailed?wiki=717&id=78https://www.mob.com/wiki/detailed?wiki=754&id=78build-profile.json5 修改结果module.json5 权限修改结果至少收录以下错误码:
6119108:运营商配置为空6119121:功能关闭6119000:未知运营商6119127 / 6119128 / 6119129:移动/联通/电信预取号失败6119123:预取号代码抛异常6119124:预取号超时6119170:运营商无配置6119167 / 6119168 / 6119169:移动/联通/电信取号失败6119165:取号代码抛异常6119164:取号超时6119171:取号前未调预取号6119172:调用过于频繁执行这个 skill 时,优先输出: