iOS人脸识别打uniapp插件包

info.plist

1.疑问:涉及到UIViewController,那开发是应该写在module里还是component? 或者,module可以支持viewcontroller的方法吗

answer:要在uniapp的页面中嵌套页面的话使用component, 如果是跳转到新页面的话用module就行。

  1. uniapp没有VC,所以要寻找创建返回
    参考官方文档

准备工作

  • 百度人脸识别sdk文档
  • uniapp打原生iOS插件包文档
  • 参考文章-iOS插件打包
确保电脑装了HBuilder和Xcode
下载uniapp sdk包

在uniapp官方文档里找到并下载,下载后我放到了桌面


iOS SDK和人脸识别的示例工程

遇到的坑:

  1. 真机运行时提示没有provision profile -> signing那里选择automatically manage signing, 并且修改自带的bundle id

  2. Undefined symbol: OBJC_CLASS$_BDFaceDetectionViewController -> 示例工程里写的class文件,拖拽进项目时应该勾选 create group选项。

  3. Undefined symbol: OBJC_CLASS$_IDLFaceDetectionManager ->依赖的框架中的文件undefined,把人脸识别用到的idlfacesdk的framework文件添加到plugin hbuilder项目而不是自己写的framework项目。自己写的项目不需要拖入资源,但是要在framework里添加依赖

  4. image.png

去header search path那里将.h文件所在的文件夹拖进去,选择recursive。

5.
bitcode

在build settings里找到 enable bitcode,选择NO

步骤说明

1. 双击打开下载好的uniplugindemo的xcodeproj工程
2.点击运行,如果是真机运行,则要打开配置页面,选择automatically manage signing,修改demo项目的bundle id后再重新运行
3. 按照人脸识别的官方文档配置相机权限,修改插件test项目的bundle id,与申请证书时填写的id保持一致. 相机权限记得要在主工程和插件工程的info里都写上。否则很可能导致在xcode中能运行打包后却提示无插件。
4. 按照人脸识别的官方文档,先做鉴权初始化,我是在点击testModule按钮的同步方法里调用的鉴权方法,直接复制官方文档中的代码。(此时会提示IDLFaceSDK...not found)
5.把人脸识别官方示例项目中的bundle,IDLFaceSDK.framework,key,license这几个文件夹放进主工程。 可以看到此时自己写的framework项目中build settings里的 framework search path 是有路径的,就可以解决4中的问题。此时运行,报错是
image.png
6.把整个BDFaceSDKUI都拖进项目里,跟testModule同级。记得勾选create group和add to target.在testModule里面引入"FaceParameterConfig.h"

image.png

解决library not load 请点击这里

7. FaceSDK功能初始化

将人脸示例工程的ViewController里的配置参数复制过来,包括initSDK,initLivenesswithList和destorySDK三个函数。并根据报错提示在testModule.m文件中引入对应的.h文件

8. 写实现方法

把BDFaceUI那个文件夹整个拖进来, 这个文件夹里引用到的IDLFaceSDK里的头文件放到一个文件夹里, 也放到插件工程里。因为最后生成插件包时所有依赖都会和插件包平级。所以如果插件工程使用第三方sdk时,需要把sdk放到主工程,但是手动引入里面的.h文件。

9. 打包

在xcode运行无误后,按照文档, release模式,command+b编译成插件包。 编写package.json,要在framework里面写上依赖的sdk,在resources里写好bundle和授权文件,这些文件都放到iOS文件夹下。

你可能感兴趣的:(iOS人脸识别打uniapp插件包)