Install
openclaw skills install ios-flyverify-integration面向 iOS 工程的 MobTech FlyVerify(秒验) 集成 skill。默认先扫描工程,优先使用 CocoaPods,以最小改动完成依赖接入、隐私合规、一键登录流程接线和项目内说明文档落地。
openclaw skills install ios-flyverify-integration当用户希望把 MobTech FlyVerify 集成到 iOS 工程,或者排查已有 FlyVerify 接入问题时,使用本 skill。
当用户提到以下任一主题时,使用本 skill:
Info.plist 配置agreePrivacy 调用时机preLogin / openAuthPageWithModel 用法如果用户问题明确与 iOS 秒验接入、工程配置、隐私合规、一键登录流程或授权页 UI 定制有关,应优先使用本 skill。
优先使用以下线上资料,不依赖本机资料路径:
主文档:
如果某个深链失效,先从 MobTech 文档中心 搜索对应标题,不要回退到本机绝对路径。
以下信息已经可作为执行依据,不需要再猜测:
Xcode 9.1.0+、iOS 8.0+CocoaPods 和手动导入两种集成方式pod 'FlyVerify'libsqlite3.tbd、libc++.tbd、libz.1.2.5.tbdOther Linker Flags 需要添加 -ObjCInfo.plist 需要配置 flyverifykey 与 flyverifysecretplist 中添加 FlyVerifyPLevel = 2zzx9.cncmpassport.comid6.mewostore.cnmdn.open.wo.cnagreePrivacy 是 FlyVerify 业务起点,必须在用户同意隐私政策后、使用 SDK 能力前调用preLogin 回调在全局队列,error == nil 才视为成功openAuthPageWithModel 的 uiConfigure.currentViewController 为必传manualDismiss = @(YES) 后手动调用 finishLoginVcAnimated:Completion:opToken、operator、tokenPodfile.lock 中实际安装版本确认,不要只凭本地缓存判断以下内容在当前资料里没有被稳定、明确地定义,禁止猜:
Info.plist 配置读取,还是代码显式 initKey:secret:privacyLevel:如果缺这些信息且会阻塞安全修改,必须明确写:
文档未明确,需向用户确认
CocoaPodsBundle ID、Target 名称、入口类名、Info.plist 路径,因为这些应由扫描工程自动推断pod install、xcodebuild 或其他会改动依赖状态的命令,先展示计划,再执行Pods/ 提交进项目;如项目未忽略 Pods/,补充 .gitignore,保留 Podfile 与 Podfile.lock严格按以下顺序推进:
优先扫描以下内容:
.xcodeproj / .xcworkspacePodfilePodfile.lockPackage.swiftAppDelegate / SceneDelegate / SwiftUI @mainInfo.plistFlyVerify、FVSDKHyVerify、FlyVerifyC、flyverifykey、flyverifysecret、FlyVerifyPLevel.gitignore 是否忽略 Pods/.xcworkspace 是否包含 contents.xcworkspacedata推荐命令:
rg --files -g '*.xcodeproj' -g '*.xcworkspace' -g 'Podfile' -g 'Podfile.lock' -g 'Package.swift' -g '*Info.plist' -g '.gitignore'rg --files -g '*.m' -g '*.h' -g '*.mm' -g '*.swift'rg -n 'FlyVerify|FVSDKHyVerify|FlyVerifyC|flyverifykey|flyverifysecret|FlyVerifyPLevel|agreePrivacy|preLogin|openAuthPageWithModel|SWIFT_OBJC_BRIDGING_HEADER'扫描后先给一段简短结论,至少包含:
Podfile、Podfile.lock、Pods/、*.xcworkspace/contents.xcworkspacedataFlyVerify_iOS_Config.xlsx如果用户项目根目录还没有 FlyVerify_iOS_Config.xlsx:
assets/generate_excel_template.pyassets/FlyVerify_iOS_Config_Template.xlsx 复制到用户项目根目录FlyVerify_iOS_Config.xlsx必须明确告诉用户只需要填写这些最小字段:
appKeyappSecret同时明确说明以下内容不需要填表:
Bundle IDTargetInfo.plist 路径其中工程信息应由 Agent 扫描后推断;扩展业务主动控制器不作为前置配置项,只在最终文档中说明。
读取 FlyVerify_iOS_Config.xlsx 后,至少校验:
appKey:必填,按字符串处理,不做数值推断appSecret:必填,按字符串处理,不做数值推断秒验审核:必须明确是 是 / 否授权页自定义:必须明确是 是 / 否如不合法,列出具体问题并要求用户修正,不要继续改工程。
读取配置后,再次结合工程做推断:
{Target}-Bridging-Header.h 与 SWIFT_OBJC_BRIDGING_HEADER-ObjC、系统库链接*.xcworkspace 是否有效;只有目录但缺少 contents.xcworkspacedata 时,应运行 pod install 重新生成Pods/ 是否完整;如果只有空 framework 目录或缺少 Info.plist、Headers、binary,不要按手动 SDK 接入硬改工程,应优先重新 pod install以下信息必须分两类处理:
agreePrivacy 应插入到哪个“同意”回调preLogin 放在 viewDidLoad、按钮前预热还是其他业务时机如果必须确认,串行一次只问一个问题。
修改前必须向用户展示本次最小改动计划,通常包括:
Podfile:按需加入 pod 'FlyVerify'.gitignore:按需加入 Pods/Info.plist:写入 flyverifykey、flyverifysecret、FlyVerifyPLevel-ObjCSWIFT_OBJC_BRIDGING_HEADERagreePrivacypreLogin 与 openAuthPageWithModelFlyVerify_README.md没有确认前,不要直接改。
默认优先 CocoaPods:
pod 'FlyVerify'pod install 后确认 *.xcworkspace/contents.xcworkspacedata 已生成pod install 可能需要写用户级 CocoaPods cache;如遇 ~/Library/Caches/CocoaPods 权限错误,应按当前执行环境申请授权后重试pod install 修改 .xcodeproj,不要再手写重复的 Pods framework、xcconfig、shell script phasepod install如果用户明确要求手动导入:
-ObjC 与 Info.plistInfo.plist 配置默认写入或校正:
flyverifykeyflyverifysecretFlyVerifyPLevel = 2ATS 处理规则:
在用户同意隐私政策后、首次使用 FlyVerify 能力前接入:
#import <FlyVerifyCSDK/FlyVerifyCSDK.h>
[FlyVerifyC agreePrivacy:YES onResult:nil];
Swift 工程必须先确保桥接头可访问 SDK 头文件:
#import <FlyVerifyCSDK/FlyVerifyCSDK.h>
#import <FlyVerify/FVSDKHyVerify.h>
然后在用户同意隐私政策后的 Swift 回调中调用:
FlyVerifyC.agreePrivacy(true, onResult: nil)
如果用户明确采用代码初始化方案,才补:
[FlyVerifyC initKey:@"<appKey>" secret:@"<appSecret>" privacyLevel:2];
否则优先沿用 Info.plist 配置,不同时强塞两套初始化方案。
建议流程:
agreePrivacypreLoginopenAuthPageWithModeltoken / opToken 后保留服务端置换手机号注释占位接入时必须注意:
preLogin 成功判断以 error == nil 为准preLogin 回调不是主线程,涉及 UI 必须切回主线程currentViewController 必须传当前页面或顶层页面manualDismiss = @(YES),成功或失败后按业务自行关闭授权页FVSDKHyVerify 与 FVSDKHyUIConfigureopenAuthPageWithModel:openAuthPageListener:cancelAuthPageListener:oneKeyLoginListener: 时,首参标签应为 withModel:,不是 with:TODO 注释标明只有用户明确需要时,才继续改 UI。
优先通过以下方式做最小定制:
FVSDKHyUIConfigure 基本属性FVSDKVerifyDelegatefvVerifyAuthPageViewDidLoad:userInfo: 中设置布局或自定义控件若用户要复杂弹窗、暗黑模式、横竖屏、自定义 loading、协议页接管,优先提示参考官方 Demo 与线上文档:
完成改动后,按条件执行:
pod installgeneric/platform=iOS 真机目标building for 'iOS-simulator', but linking in object file ... built for 'iOS',说明某运营商 framework 只有真机切片,应改用真机目标验证[CP] Copy Pods Resources 被 User Script Sandboxing 拦截,可在目标 Build Settings 中将 ENABLE_USER_SCRIPT_SANDBOXING = NO,或用等价命令行参数验证xcodebuild 无法访问 CoreSimulator 或 Xcode 用户目录,应按当前环境申请授权后重试然后生成项目内 FlyVerify_README.md,至少包含:
appKey / appSecret 的配置位置agreePrivacy 的调用位置preLogin 与授权页拉起位置Podfile、Podfile.lock、实际安装的 FlyVerify / FlyVerifyCSDK 版本FlyVerifyCPrivacyDelegate遇到失败时优先检查:
agreePrivacy 是否在隐私同意后已调用currentViewController 是否为当前顶层可 present 的 VCflyverifykey / flyverifysecret 是否和后台一致withModel:pod install 或构建前先征求确认