阿里云实人认证iOS SDK 升级
背景
阿里云在今年早些时候给后台发送了通知:我们原先接入的实人认证 SDK(RPSDK)即将停止服务,需要将这一功能迁移到金融级实人认证这个新 SDK。
Android 版本的升级很顺利,但 iOS 版本在过程中遇到了很多困难。其中最迷惑人的是”二次安装白屏”问题:只有首次运行可以在设备上正常运行,想覆盖安装就需要大退 Xcode。这个问题一度让我误以为是金融级实人认证 SDK 导致的,花了好久才确定了问题规律,其实它是 Xcode 调试的 bug,与 SDK 本身无关。
相关文档:
- 原有实人认证 SDK(RPSDK):https://help.aliyun.com/zh/id-verification/cloudauth/developer-reference/ios-integration
- 新版金融级实人认证 SDK:https://help.aliyun.com/zh/id-verification/financial-grade-id-verification/integrate-the-service-into-an-ios-application-4
删除 RPSDK
1. 删除 SDK 相关文件
我们项目原本使用的是手动导入 SDK 的方式。文档方式二中提到的 SDK 相关 framework 文件和资源文件,都需要取消在项目中的引入,即删除:
AliyunOSSiOS.framework |
以及:
RPSDK.bundle |
需要注意的是,我们原先的接入方式并不标准,在 Unity-iPhone 和 UnityFramework 两个 Target 中都对文件进行了接入,所以这两个 Target 都要完成 framework 的删除。
删除 framework 的方式是:选中目标 Target,进入 General 页签,在 Frameworks, Libraries, and Embedded Content 中选中要删除的 framework,点击下方的 - 即可。
导入的资源的删除方式:选中 Target,点击 Build Phases 页签,展开 Copy Bundle Resources,检查列表中是否有 RPSDK 相关的 bundle 文件,选中并删除。除此之外,左侧文件浏览器中的 RPSDK 相关 framework 和 bundle 文件也需要一并删除。
2. 删除代码中的调用
完成 SDK 文件删除后,最后一步是删除代码中 RPSDK 相关的逻辑。在全局搜索关键词 RPSDK,注释或删除相关调用即可。
接入金融级实人认证
金融级实人认证的文档可读性比较差,其中提到了各种过时的内容,接入时需要适当忽略。
1. 导入 SDK framework
下载并解压 SDK 文件后,在 Xcode 工程 SDK 接入路径中新建一个 AliFaceauth 目录,将所有 framework 文件拷贝进去。
接下来添加 framework 文件。SDK 相关的 framework 和系统库依赖都要添加到 UnityFramework 这个 Target 中:
- 选中 UnityFramework,进入 General 页签,在 Frameworks, Libraries, and Embedded Content 下方点击 **+**。
- 点击左下角的 **Add Other → Add Files…**,浏览到 SDK 相关 framework 文件,点击 Open 添加。
- 添加完成后,需要修改 Embed 类型。默认是 Embed & Sign,需要改成 Do Not Embed,否则在上传时会报错。
注意:多语言支持的库在我们项目中出现了运行时导致 UnityFramework 加载失败的情况。如果遇到同样的问题,需要取消
MultiFactorFacade.framework的引入。
2. 添加系统库依赖
系统依赖在点击 + 后,直接搜索名字即可找到。但这里要注意:framework 一次就能添加成功,而 tbd 类型的库需要添加两次才能出现在列表中,推测是 Xcode 刷新逻辑导致的显示 bug。为了以防万一,建议添加两次。
3. 拷贝 SDK 资源
完成库文件的添加后,接下来拷贝 SDK 资源,根据文档列出的 bundle 列表添加即可:
- 选中 UnityFramework,点击 Build Phases 页签,展开 Copy Bundle Resources。
- 点击下方的 **+**,操作和添加 SDK 相关库时一致,选中 framework 目录下需要添加的 bundle 文件即可完成添加。
4. 修改代码
最后是代码相关。根据原有 RPSDK 逻辑的位置,分别进行头文件引入、初始化 SDK,然后在初始化调用下方获取 metainfo,再调用 SDK 开始认证的逻辑,具体可以参考文档内容。
这里需要注意的是,extParams 结构的必填参数 currentCtr 的示例写得很简略。在我所使用的 Xcode 版本中,需要传入的 ViewController 的获取方式是:
GetAppController().rootViewController |
也就是实际调起时传入参数的全部代码为:
NSMutableDictionary *extParams = [NSMutableDictionary dictionary]; |
踩坑总结
- 二次安装白屏:只有首次运行正常,覆盖安装需要大退 Xcode。这是 Xcode 调试的 bug,不要第一时间怀疑新 SDK。
- Embed 类型:framework 默认是 Embed & Sign,必须改成 Do Not Embed,否则上传时会报错。
- MultiFactorFacade.framework:在部分项目中会导致 UnityFramework 运行时加载失败,遇到相同问题时移除该库。
- tbd 系统库:需要添加两次才能出现在列表中,建议重复添加以防万一。
完成以上步骤后,RPSDK 到金融级实人认证的迁移就基本完成了。整个过程本身不复杂,坑点大多藏在 Xcode 和 Unity 导出工程的细节里,希望这篇记录能帮到遇到同样问题的朋友。



