提交 fb2fae44 authored 作者: 祁增奎's avatar 祁增奎

iOS依赖库缺少问题修改

上级 901038d9
...@@ -7,11 +7,18 @@ ...@@ -7,11 +7,18 @@
*/ */
"APBToygerFacade:取消"="Cancel"; "APBToygerFacade:取消"="Cancel";
"APBToygerFacade:取消(引导页)"="Cancel";
"APBToygerFacade:再试一次"="Try Again"; "APBToygerFacade:再试一次"="Try Again";
"APBToygerFacade:再试一次(验证中断)"="Try Again";
"APBToygerFacade:再试一次(网络中断)"="Try Again";
"APBToygerFacade:退出"="Quit"; "APBToygerFacade:退出"="Quit";
"APBToygerFacade:退出(无法启动相机)"="Quit";
"APBToygerFacade:退出(验证中断)"="Quit";
"APBToygerFacade:确定"="OK"; "APBToygerFacade:确定"="OK";
"APBToygerFacade:确定(引导页)"="OK";
"APBToygerFacade:继续"="Continue"; "APBToygerFacade:继续"="Continue";
"APBToygerFacade:我知道了"="Got it"; "APBToygerFacade:我知道了"="Got it";
"APBToygerFacade:我知道了(系统不支持刷脸)"="Got it";
"APBToygerFacade:其他登录方式"="Another login method"; "APBToygerFacade:其他登录方式"="Another login method";
"APBToygerFacade:刷脸失败"="Face scan failed"; "APBToygerFacade:刷脸失败"="Face scan failed";
"APBToygerFacade:当前设备不支持刷脸"="Face scan not supported on your device"; "APBToygerFacade:当前设备不支持刷脸"="Face scan not supported on your device";
...@@ -22,7 +29,9 @@ ...@@ -22,7 +29,9 @@
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Face scan is only available on iOS8 or above"; "APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Face scan is only available on iOS8 or above";
"APBToygerFacade:系统错误"="System error"; "APBToygerFacade:系统错误"="System error";
"APBToygerFacade:确定退出吗?"="Are you sure to quit face scan?"; "APBToygerFacade:确定退出吗?"="Are you sure to quit face scan?";
"APBToygerFacade:确定退出吗?(引导页)"="Are you sure to quit face scan?";
"APBToygerFacade:露个脸就能通过"="You can succeed by simply showing your face"; "APBToygerFacade:露个脸就能通过"="You can succeed by simply showing your face";
"APBToygerFacade:露个脸就能通过(引导页)"="You can succeed by simply showing your face";
"APBToygerFacade:操作超时"="Time out"; "APBToygerFacade:操作超时"="Time out";
"APBToygerFacade:正对手机,更容易成功"="Face straight at the phone and ensure you have enough light"; "APBToygerFacade:正对手机,更容易成功"="Face straight at the phone and ensure you have enough light";
"APBToygerFacade:提示:正对手机,更容易成功"="Face straight at the phone and ensure you have enough light"; "APBToygerFacade:提示:正对手机,更容易成功"="Face straight at the phone and ensure you have enough light";
......
"APBToygerFacade:取消"="Batalkan"; "APBToygerFacade:取消"="Batalkan";
"APBToygerFacade:取消(引导页)"="Batalkan";
"APBToygerFacade:再试一次"="Harap coba lagi"; "APBToygerFacade:再试一次"="Harap coba lagi";
"APBToygerFacade:再试一次(验证中断)"="Harap coba lagi";
"APBToygerFacade:再试一次(网络中断)"="Harap coba lagi";
"APBToygerFacade:退出"="Keluar"; "APBToygerFacade:退出"="Keluar";
"APBToygerFacade:退出(无法启动相机)"="Keluar";
"APBToygerFacade:退出(验证中断)"="Keluar";
"APBToygerFacade:确定"="OK"; "APBToygerFacade:确定"="OK";
"APBToygerFacade:确定(引导页)"="OK";
"APBToygerFacade:继续"="Lanjutkan"; "APBToygerFacade:继续"="Lanjutkan";
"APBToygerFacade:我知道了"="OK"; "APBToygerFacade:我知道了"="OK";
"APBToygerFacade:我知道了(系统不支持刷脸)"="OK";
"APBToygerFacade:其他登录方式"="Ubah Metode Logon"; "APBToygerFacade:其他登录方式"="Ubah Metode Logon";
"APBToygerFacade:刷脸失败"="Pengenalan wajah gagal"; "APBToygerFacade:刷脸失败"="Pengenalan wajah gagal";
"APBToygerFacade:当前设备不支持刷脸"="Perangkat Anda tidak mendukung pengenalan wajah"; "APBToygerFacade:当前设备不支持刷脸"="Perangkat Anda tidak mendukung pengenalan wajah";
...@@ -14,7 +21,9 @@ ...@@ -14,7 +21,9 @@
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Hanya iOS 7 dan setelahnya yang mendukung pengenalan wajah"; "APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Hanya iOS 7 dan setelahnya yang mendukung pengenalan wajah";
"APBToygerFacade:系统错误"="Terjadi Kesalahan Sistem"; "APBToygerFacade:系统错误"="Terjadi Kesalahan Sistem";
"APBToygerFacade:确定退出吗?"="Apakah Anda yakin ingin keluar?"; "APBToygerFacade:确定退出吗?"="Apakah Anda yakin ingin keluar?";
"APBToygerFacade:确定退出吗?(引导页)"="Apakah Anda yakin ingin keluar?";
"APBToygerFacade:露个脸就能通过"="Anda hanya perlu memperlihatkan wajah Anda"; "APBToygerFacade:露个脸就能通过"="Anda hanya perlu memperlihatkan wajah Anda";
"APBToygerFacade:露个脸就能通过(引导页)"="Anda hanya perlu memperlihatkan wajah Anda";
"APBToygerFacade:操作超时"="Waktu operasi habis"; "APBToygerFacade:操作超时"="Waktu operasi habis";
"APBToygerFacade:正对手机,更容易成功"="Arahkan wajah lurus menghadap ponsel untuk membuat wajah Anda lebih mudah dipindai"; "APBToygerFacade:正对手机,更容易成功"="Arahkan wajah lurus menghadap ponsel untuk membuat wajah Anda lebih mudah dipindai";
"APBToygerFacade:本次操作失败"="Operasi gagal"; "APBToygerFacade:本次操作失败"="Operasi gagal";
......
"APBToygerFacade:取消"="キャンセル"; "APBToygerFacade:取消"="キャンセル";
"APBToygerFacade:取消(引导页)"="キャンセル";
"APBToygerFacade:再试一次"="もう一度お試しください"; "APBToygerFacade:再试一次"="もう一度お試しください";
"APBToygerFacade:再试一次(验证中断)"="もう一度お試しください";
"APBToygerFacade:再试一次(网络中断)"="もう一度お試しください";
"APBToygerFacade:退出"="終了"; "APBToygerFacade:退出"="終了";
"APBToygerFacade:退出(无法启动相机)"="終了";
"APBToygerFacade:退出(验证中断)"="終了";
"APBToygerFacade:确定"="OK"; "APBToygerFacade:确定"="OK";
"APBToygerFacade:确定(引导页)"="OK";
"APBToygerFacade:继续"="続行"; "APBToygerFacade:继续"="続行";
"APBToygerFacade:我知道了"="OK"; "APBToygerFacade:我知道了"="OK";
"APBToygerFacade:我知道了(系统不支持刷脸)"="OK";
"APBToygerFacade:其他登录方式"="ログイン方法を切り替え"; "APBToygerFacade:其他登录方式"="ログイン方法を切り替え";
"APBToygerFacade:刷脸失败"="顔を認識できませんでした"; "APBToygerFacade:刷脸失败"="顔を認識できませんでした";
"APBToygerFacade:当前设备不支持刷脸"="お使いのデバイスは顔認識をサポートしていません"; "APBToygerFacade:当前设备不支持刷脸"="お使いのデバイスは顔認識をサポートしていません";
...@@ -14,7 +21,9 @@ ...@@ -14,7 +21,9 @@
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="顔認識は iOS 7 以降でサポートされています"; "APBToygerFacade:刷脸仅在iOS7及以上系统可用"="顔認識は iOS 7 以降でサポートされています";
"APBToygerFacade:系统错误"="システムエラー"; "APBToygerFacade:系统错误"="システムエラー";
"APBToygerFacade:确定退出吗?"="終了してもよろしいですか"; "APBToygerFacade:确定退出吗?"="終了してもよろしいですか";
"APBToygerFacade:确定退出吗?(引导页)"="終了してもよろしいですか";
"APBToygerFacade:露个脸就能通过"="顔を見せるだけです"; "APBToygerFacade:露个脸就能通过"="顔を見せるだけです";
"APBToygerFacade:露个脸就能通过(引导页)"="顔を見せるだけです";
"APBToygerFacade:操作超时"="操作がタイムアウトしました"; "APBToygerFacade:操作超时"="操作がタイムアウトしました";
"APBToygerFacade:正对手机,更容易成功"="顔をスキャンしやすいように、電話の方を向いてください"; "APBToygerFacade:正对手机,更容易成功"="顔をスキャンしやすいように、電話の方を向いてください";
"APBToygerFacade:本次操作失败"="操作に失敗しました"; "APBToygerFacade:本次操作失败"="操作に失敗しました";
......
"APBToygerFacade:取消"="취소"; "APBToygerFacade:取消"="취소";
"APBToygerFacade:取消(引导页)"="취소";
"APBToygerFacade:再试一次"="다시 시도하세요"; "APBToygerFacade:再试一次"="다시 시도하세요";
"APBToygerFacade:再试一次(验证中断)"="다시 시도하세요";
"APBToygerFacade:再试一次(网络中断)"="다시 시도하세요";
"APBToygerFacade:退出"="종료"; "APBToygerFacade:退出"="종료";
"APBToygerFacade:退出(无法启动相机)"="종료";
"APBToygerFacade:退出(验证中断)"="종료";
"APBToygerFacade:确定"="확인"; "APBToygerFacade:确定"="확인";
"APBToygerFacade:确定(引导页)"="확인";
"APBToygerFacade:继续"="계속"; "APBToygerFacade:继续"="계속";
"APBToygerFacade:我知道了"="확인"; "APBToygerFacade:我知道了"="확인";
"APBToygerFacade:我知道了(系统不支持刷脸)"="확인";
"APBToygerFacade:其他登录方式"="로그온 방법 전환"; "APBToygerFacade:其他登录方式"="로그온 방법 전환";
"APBToygerFacade:刷脸失败"="안면 인식에 실패했습니다"; "APBToygerFacade:刷脸失败"="안면 인식에 실패했습니다";
"APBToygerFacade:当前设备不支持刷脸"="귀하의 디바이스는 안면 인식을 지원하지 않습니다"; "APBToygerFacade:当前设备不支持刷脸"="귀하의 디바이스는 안면 인식을 지원하지 않습니다";
...@@ -14,7 +21,9 @@ ...@@ -14,7 +21,9 @@
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="iOS 7 및 그 이상의 버전에서만 안면 인식이 지원됩니다"; "APBToygerFacade:刷脸仅在iOS7及以上系统可用"="iOS 7 및 그 이상의 버전에서만 안면 인식이 지원됩니다";
"APBToygerFacade:系统错误"="시스템 오류"; "APBToygerFacade:系统错误"="시스템 오류";
"APBToygerFacade:确定退出吗?"="정말로 종료하시겠습니까?"; "APBToygerFacade:确定退出吗?"="정말로 종료하시겠습니까?";
"APBToygerFacade:确定退出吗?(引导页)"="정말로 종료하시겠습니까?";
"APBToygerFacade:露个脸就能通过"="얼굴만 보여주시면 됩니다"; "APBToygerFacade:露个脸就能通过"="얼굴만 보여주시면 됩니다";
"APBToygerFacade:露个脸就能通过(引导页)"="얼굴만 보여주시면 됩니다";
"APBToygerFacade:操作超时"="작업 시간이 초과되었습니다"; "APBToygerFacade:操作超时"="작업 시간이 초과되었습니다";
"APBToygerFacade:正对手机,更容易成功"="얼굴을 더 쉽게 스캔할 수 있도록 휴대전화를 정면으로 바라보세요"; "APBToygerFacade:正对手机,更容易成功"="얼굴을 더 쉽게 스캔할 수 있도록 휴대전화를 정면으로 바라보세요";
"APBToygerFacade:本次操作失败"="작동에 실패했습니다"; "APBToygerFacade:本次操作失败"="작동에 실패했습니다";
......
...@@ -8,11 +8,18 @@ ...@@ -8,11 +8,18 @@
"APBToygerFacade:取消"="取消"; "APBToygerFacade:取消"="取消";
"APBToygerFacade:取消(引导页)"="取消";
"APBToygerFacade:再试一次"="再試一次"; "APBToygerFacade:再试一次"="再試一次";
"APBToygerFacade:再试一次(验证中断)"="再試一次";
"APBToygerFacade:再试一次(网络中断)"="再試一次";
"APBToygerFacade:退出"="退出"; "APBToygerFacade:退出"="退出";
"APBToygerFacade:退出(验证中断)"="退出";
"APBToygerFacade:退出(无法启动相机)"="退出";
"APBToygerFacade:确定"="確定"; "APBToygerFacade:确定"="確定";
"APBToygerFacade:确定(引导页)"="確定";
"APBToygerFacade:继续"="继续"; "APBToygerFacade:继续"="继续";
"APBToygerFacade:我知道了"="我知道了"; "APBToygerFacade:我知道了"="我知道了";
"APBToygerFacade:我知道了(系统不支持刷脸)"="我知道了";
"APBToygerFacade:其他登录方式"="其他登录方式"; "APBToygerFacade:其他登录方式"="其他登录方式";
"APBToygerFacade:刷脸失败"="刷臉失敗"; "APBToygerFacade:刷脸失败"="刷臉失敗";
"APBToygerFacade:当前设备不支持刷脸"="目前系統不支援刷臉"; "APBToygerFacade:当前设备不支持刷脸"="目前系統不支援刷臉";
...@@ -23,7 +30,9 @@ ...@@ -23,7 +30,9 @@
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="刷脸仅在iOS7及以上系统可用"; "APBToygerFacade:刷脸仅在iOS7及以上系统可用"="刷脸仅在iOS7及以上系统可用";
"APBToygerFacade:系统错误"="系統錯誤"; "APBToygerFacade:系统错误"="系統錯誤";
"APBToygerFacade:确定退出吗?"="確定退出嗎?"; "APBToygerFacade:确定退出吗?"="確定退出嗎?";
"APBToygerFacade:确定退出吗?(引导页)"="確定退出嗎?";
"APBToygerFacade:露个脸就能通过"="露個臉就能通過"; "APBToygerFacade:露个脸就能通过"="露個臉就能通過";
"APBToygerFacade:露个脸就能通过(引导页)"="露個臉就能通過";
"APBToygerFacade:操作超时"="操作超時"; "APBToygerFacade:操作超时"="操作超時";
"APBToygerFacade:正对手机,更容易成功"="對準手機,更容易成功"; "APBToygerFacade:正对手机,更容易成功"="對準手機,更容易成功";
"APBToygerFacade:本次操作失败"="本次操作失敗"; "APBToygerFacade:本次操作失败"="本次操作失敗";
......
...@@ -8,11 +8,18 @@ ...@@ -8,11 +8,18 @@
"APBToygerFacade:取消"="取消"; "APBToygerFacade:取消"="取消";
"APBToygerFacade:取消(引导页)"="取消";
"APBToygerFacade:再试一次"="再试一次"; "APBToygerFacade:再试一次"="再试一次";
"APBToygerFacade:再试一次(验证中断)"="再试一次";
"APBToygerFacade:再试一次(网络中断)"="再试一次";
"APBToygerFacade:退出"="退出"; "APBToygerFacade:退出"="退出";
"APBToygerFacade:退出(验证中断)"="退出";
"APBToygerFacade:退出(无法启动相机)"="退出";
"APBToygerFacade:确定"="确定"; "APBToygerFacade:确定"="确定";
"APBToygerFacade:确定(引导页)"="确定";
"APBToygerFacade:继续"="继续"; "APBToygerFacade:继续"="继续";
"APBToygerFacade:我知道了"="我知道了"; "APBToygerFacade:我知道了"="我知道了";
"APBToygerFacade:我知道了(系统不支持刷脸)"="我知道了";
"APBToygerFacade:其他登录方式"="其他登录方式"; "APBToygerFacade:其他登录方式"="其他登录方式";
"APBToygerFacade:刷脸失败"="刷脸失败"; "APBToygerFacade:刷脸失败"="刷脸失败";
"APBToygerFacade:当前设备不支持刷脸"="当前设备不支持刷脸"; "APBToygerFacade:当前设备不支持刷脸"="当前设备不支持刷脸";
...@@ -23,7 +30,9 @@ ...@@ -23,7 +30,9 @@
"APBToygerFacade:刷脸仅在iOS8及以上版本可用"="刷脸仅在iOS8及以上版本可用"; "APBToygerFacade:刷脸仅在iOS8及以上版本可用"="刷脸仅在iOS8及以上版本可用";
"APBToygerFacade:系统错误"="系统错误"; "APBToygerFacade:系统错误"="系统错误";
"APBToygerFacade:确定退出吗?"="确定退出吗?"; "APBToygerFacade:确定退出吗?"="确定退出吗?";
"APBToygerFacade:确定退出吗?(引导页)"="确定退出吗?";
"APBToygerFacade:露个脸就能通过"="露个脸就能通过"; "APBToygerFacade:露个脸就能通过"="露个脸就能通过";
"APBToygerFacade:露个脸就能通过(引导页)"="露个脸就能通过";
"APBToygerFacade:操作超时"="操作超时"; "APBToygerFacade:操作超时"="操作超时";
"APBToygerFacade:正对手机,更容易成功"="正对手机,更容易成功"; "APBToygerFacade:正对手机,更容易成功"="正对手机,更容易成功";
"APBToygerFacade:本次操作失败"="本次操作失败"; "APBToygerFacade:本次操作失败"="本次操作失败";
...@@ -67,3 +76,8 @@ ...@@ -67,3 +76,8 @@
"APBToygerFacade:人脸检测中"="人脸检测中"; "APBToygerFacade:人脸检测中"="人脸检测中";
"APBToygerFacade:刷脸失败次数过多,请稍后再试"="刷脸失败次数过多,请稍后再试"; "APBToygerFacade:刷脸失败次数过多,请稍后再试"="刷脸失败次数过多,请稍后再试";
"APBToygerFacade:请保持单人操作"="请保持单人操作"; "APBToygerFacade:请保持单人操作"="请保持单人操作";
"APBToygerFacade:请缓慢靠近"="请缓慢靠近";
"APBToygerFacade:请缓慢远离"="请缓慢远离";
"APBToygerFacade:请保持不动"="请保持不动";
"APBToygerFacade:把脸移入圈内"="把脸移入圈内";
...@@ -8,11 +8,18 @@ ...@@ -8,11 +8,18 @@
"APBToygerFacade:取消"="取消"; "APBToygerFacade:取消"="取消";
"APBToygerFacade:取消(引导页)"="取消";
"APBToygerFacade:再试一次"="再試一次"; "APBToygerFacade:再试一次"="再試一次";
"APBToygerFacade:再试一次(验证中断)"="再試一次";
"APBToygerFacade:再试一次(网络中断)"="再試一次";
"APBToygerFacade:退出"="退出"; "APBToygerFacade:退出"="退出";
"APBToygerFacade:退出(验证中断)"="退出";
"APBToygerFacade:退出(无法启动相机)"="退出";
"APBToygerFacade:确定"="確定"; "APBToygerFacade:确定"="確定";
"APBToygerFacade:确定(引导页)"="確定";
"APBToygerFacade:继续"="繼續"; "APBToygerFacade:继续"="繼續";
"APBToygerFacade:我知道了"="我知道了"; "APBToygerFacade:我知道了"="我知道了";
"APBToygerFacade:我知道了(系统不支持刷脸)"="我知道了";
"APBToygerFacade:其他登录方式"="其他登入方式"; "APBToygerFacade:其他登录方式"="其他登入方式";
"APBToygerFacade:刷脸失败"="刷臉失敗"; "APBToygerFacade:刷脸失败"="刷臉失敗";
"APBToygerFacade:当前设备不支持刷脸"="目前設備不支援刷臉服務"; "APBToygerFacade:当前设备不支持刷脸"="目前設備不支援刷臉服務";
...@@ -23,7 +30,9 @@ ...@@ -23,7 +30,9 @@
"APBToygerFacade:刷脸仅在iOS8及以上系统可用"="刷脸仅在iOS8及以上系统可用"; "APBToygerFacade:刷脸仅在iOS8及以上系统可用"="刷脸仅在iOS8及以上系统可用";
"APBToygerFacade:系统错误"="系統錯誤"; "APBToygerFacade:系统错误"="系統錯誤";
"APBToygerFacade:确定退出吗?"="確定退出嗎?"; "APBToygerFacade:确定退出吗?"="確定退出嗎?";
"APBToygerFacade:确定退出吗?(引导页)"="確定退出嗎?";
"APBToygerFacade:露个脸就能通过"="露個臉就能通過"; "APBToygerFacade:露个脸就能通过"="露個臉就能通過";
"APBToygerFacade:露个脸就能通过(引导页)"="露個臉就能通過";
"APBToygerFacade:操作超时"="操作超時"; "APBToygerFacade:操作超时"="操作超時";
"APBToygerFacade:正对手机,更容易成功"="對準手機,更容易成功"; "APBToygerFacade:正对手机,更容易成功"="對準手機,更容易成功";
"APBToygerFacade:本次操作失败"="本次操作失敗"; "APBToygerFacade:本次操作失败"="本次操作失敗";
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#import <BioAuthEngine/APBLogger.h> #import <BioAuthEngine/APBLogger.h>
#import <BioAuthEngine/AFEAlertView.h> #import <BioAuthEngine/AFEAlertView.h>
#import <APBToygerFacade/APBToygerUtils.h> #import <APBToygerFacade/APBToygerUtils.h>
#import <BioAuthEngine/APBToygerRemoteConfig.h> #import <DTFUtility/APBToygerRemoteConfig.h>
#import <BioAuthEngine/APBToygerBehavlogManager.h> #import <BioAuthEngine/APBToygerBehavlogManager.h>
//#import "APBToygerDataCenter.h" //#import "APBToygerDataCenter.h"
#import <BioAuthEngine/BioAuthCommonSetting.h> #import <BioAuthEngine/BioAuthCommonSetting.h>
...@@ -42,16 +42,17 @@ typedef void (^APFAlertExtraAction)(); ...@@ -42,16 +42,17 @@ typedef void (^APFAlertExtraAction)();
//@property(nonatomic, assign)BOOL isLoginMode; //当前场景是否为登录场景 //@property(nonatomic, assign)BOOL isLoginMode; //当前场景是否为登录场景
@property(nonatomic, assign)BOOL isMYBank; //是否是网商银行 @property(nonatomic, assign)BOOL isMYBank; //是否是网商银行
@property(nonatomic, strong)DTFLogMonitor *monitor; //埋点 @property(nonatomic, strong)DTFLogMonitor *monitor; //埋点
@property(nonatomic, weak) id<BioAuthTaskDelegate> delegate;
- (void)exitWithResult:(APBResultType)result failReason:(NSString *)failReason retCodeSub:(NSString *)retCodeSub retMessageSub:(NSString *)retMessageSub; - (void)exitWithResult:(APBResultType)result failReason:(NSString *)failReason retCodeSub:(NSString *)retCodeSub retMessageSub:(NSString *)retMessageSub;
- (void)eventQuitWithCompletionCallback:(BioAuthExecCallback)callback; - (void)eventQuitWithCompletionCallback:(BioAuthExecCallback)callback;
/** /**
* 用户选择重试 * 刷脸重试
*/ */
- (void)handleRetryActionWithScene:(NSString *)scene - (void)handleRetryActionWithScene:(NSString *)scene
buttonTitle:(NSString *)title buttonTitle:(NSString *)title
extAction:(APFAlertExtraAction)action; retryIncrement:(BOOL)retryIncrement;
/** /**
* 用户选择退出 * 用户选择退出
......
...@@ -12,11 +12,16 @@ ...@@ -12,11 +12,16 @@
#import <BioAuthEngine/BioAuthEngine.h> #import <BioAuthEngine/BioAuthEngine.h>
#import <DTFUtility/CameraService.h> #import <DTFUtility/CameraService.h>
#define kFaceCameraPreviewWidth 480
#define kFaceCameraPreviewHeight 640
#define kFaceAVCaptureSessionPreset AVCaptureSessionPreset640x480
@interface APBToygerCherryDetectTask : APBToygerBaseTask <DTFCameraServiceDelegate, DTFFaceViewDelegate, ToygerServiceInstanceDelegate> @interface APBToygerCherryDetectTask : APBToygerBaseTask <DTFCameraServiceDelegate, DTFFaceViewDelegate, ToygerServiceInstanceDelegate>
@property (nonatomic, assign) BOOL photinusFlags; @property (nonatomic, assign) BOOL photinusFlags;
@property (nonatomic, strong) DTFCameraService *cameraService; @property (nonatomic, strong) DTFCameraService *cameraService;
@property (nonatomic, strong) id instance; //Toyger对象 @property (nonatomic, strong) id instance; //Toyger对象
@property (nonatomic, assign) BOOL useNativePhotinus;
- (void)onButtonCancel; - (void)onButtonCancel;
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#import <APBToygerFacade/APBToygerUtils.h> #import <APBToygerFacade/APBToygerUtils.h>
#import <APBToygerFacade/APBToygerUploadTask.h> #import <APBToygerFacade/APBToygerUploadTask.h>
#import <APBToygerFacade/APBToygerFacadeDefine.h> #import <APBToygerFacade/APBToygerFacadeDefine.h>
#import <BioAuthEngine/APBToygerRemoteConfig.h> #import <DTFUtility/APBToygerRemoteConfig.h>
#import <BioAuthEngine/APBToygerBehavlogManager.h> #import <BioAuthEngine/APBToygerBehavlogManager.h>
#import <BioAuthEngine/APBToygerDataCenter.h> #import <BioAuthEngine/APBToygerDataCenter.h>
#import <APBToygerFacade/APBToygerViewController.h> #import <APBToygerFacade/APBToygerViewController.h>
......
...@@ -52,6 +52,12 @@ dispatch_semaphore_signal(locker); ...@@ -52,6 +52,12 @@ dispatch_semaphore_signal(locker);
+ (UIWindow *)lastWindow; + (UIWindow *)lastWindow;
+ (APBToygerTips *)toygerTipsConfig;
+ (BOOL)useElemeEquipmentUI:(APBToygerRemoteConfig *)config;
+ (BOOL)useNearFarLiveness:(APBToygerRemoteConfig *)config;
@end @end
......
...@@ -19,8 +19,11 @@ ...@@ -19,8 +19,11 @@
- (void)handleFaceStateChange:(ToygerMessage)state - (void)handleFaceStateChange:(ToygerMessage)state
stateTips:(NSString *)tips stateTips:(NSString *)tips
actionGuideType:(ToygerStaticMessage)guideType
actionGuide:(NSString *)guide actionGuide:(NSString *)guide
progress:(CGFloat)progress; progress:(CGFloat)progress
extInfo:(NSDictionary *)extInfo;
- (void)faceDectectComplete; - (void)faceDectectComplete;
- (void)setPhotinusColor:(UIColor *)color; - (void)setPhotinusColor:(UIColor *)color;
- (void)showBlur:(UIImage *)image; - (void)showBlur:(UIImage *)image;
......
...@@ -110,4 +110,8 @@ typedef NS_ENUM(NSInteger, ASSAddressFlag) ...@@ -110,4 +110,8 @@ typedef NS_ENUM(NSInteger, ASSAddressFlag)
//===================测试联调 api====================// //===================测试联调 api====================//
- (void)setRpcConfiguration:(NSDictionary *) config; - (void)setRpcConfiguration:(NSDictionary *) config;
+(BOOL) isSupportFaceShield;
+(BOOL) isTrackingAuthorization;
@end @end
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
</data> </data>
<key>Headers/APSecureSdk.h</key> <key>Headers/APSecureSdk.h</key>
<data> <data>
ywtAfrae7i2g9jT6cXJt775tdng= MXM1OJAiXpW6nnot0SH2kDLtVy8=
</data> </data>
<key>Headers/APSign.h</key> <key>Headers/APSign.h</key>
<data> <data>
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
</data> </data>
<key>Info.plist</key> <key>Info.plist</key>
<data> <data>
iJIQ3hx3R9PDehqmni7k6WFuCCI= rnUOBUjn0OMe0SPq7xgsMLCff4Y=
</data> </data>
<key>en.lproj/InfoPlist.strings</key> <key>en.lproj/InfoPlist.strings</key>
<dict> <dict>
...@@ -338,11 +338,11 @@ ...@@ -338,11 +338,11 @@
<dict> <dict>
<key>hash</key> <key>hash</key>
<data> <data>
ywtAfrae7i2g9jT6cXJt775tdng= MXM1OJAiXpW6nnot0SH2kDLtVy8=
</data> </data>
<key>hash2</key> <key>hash2</key>
<data> <data>
S8aripi9OWRTxz5CBuWeYoSqMhcgLX2GUUT5Ihnwd8o= bl6AOc/gkaKL/sCIDvxpsfcgDIIV97nocPpmnssA4tQ=
</data> </data>
</dict> </dict>
<key>Headers/APSign.h</key> <key>Headers/APSign.h</key>
......
...@@ -40,6 +40,10 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -40,6 +40,10 @@ NS_ASSUME_NONNULL_BEGIN
extParams:(NSDictionary *)params extParams:(NSDictionary *)params
onCompletion:(void (^)(ZIMResponse *response))callback; onCompletion:(void (^)(ZIMResponse *response))callback;
+ (void)setCustomUI:(nonnull NSString *)configuration type:(nonnull NSString *)type completion:(void(^)(BOOL success, NSError *error))completion;
+ (void)setCustomLanguage:(nonnull NSString *)configuration type:(nonnull NSString *)type completion:(void(^)(BOOL success, NSError *error))completion;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
framework module AliyunFaceAuthFacade {
umbrella header "AliyunFaceAuthFacade.h"
export *
module * { export * }
}
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
@property (nonatomic, strong) NSMutableArray<UIColor *> *gradientColors; @property (nonatomic, strong) NSMutableArray<UIColor *> *gradientColors;
@property (nonatomic, assign) CGFloat progress; @property (nonatomic, assign) CGFloat progress;
@property (nonatomic, strong) UIColor *progressBarTrackColor; @property (nonatomic, strong) UIColor *progressBarTrackColor;
@property (nonatomic, assign) BOOL supportCustomUI;
- (void)setProgress:(CGFloat)percent animation:(BOOL)animated; - (void)setProgress:(CGFloat)percent animation:(BOOL)animated;
- (void)_updateCircularPath; - (void)_updateCircularPath;
......
...@@ -44,7 +44,13 @@ ...@@ -44,7 +44,13 @@
@property (nonatomic, assign) double widthCoefficient; @property (nonatomic, assign) double widthCoefficient;
@property (nonatomic, copy) NSDictionary *bottomTipAttrDict; @property (nonatomic, copy) NSDictionary *bottomTipAttrDict;
@property (nonatomic, copy) NSDictionary *tipAttrDict; @property (nonatomic, copy) NSDictionary *tipAttrDict;
@property (nonatomic, assign) BOOL supportCustomUI;
@property (nonatomic, strong) UIView *tipView;
@property (nonatomic, strong) UIImageView *tipImageView;
@property (nonatomic, strong) UILabel *tipLabel;
@property (nonatomic, assign) CGSize tipTextSize;
- (instancetype)initWithSupportCustomUI:(BOOL)supportCustomUI;
- (void)showPercent:(CGFloat)stage; - (void)showPercent:(CGFloat)stage;
- (void)showtip:(NSString *)tip; - (void)showtip:(NSString *)tip;
- (void)showBottomTip:(NSString *)bottomTip; - (void)showBottomTip:(NSString *)bottomTip;
...@@ -63,7 +69,7 @@ ...@@ -63,7 +69,7 @@
- (void)showStopScanTip:(NSString *)stopScanTip; - (void)showStopScanTip:(NSString *)stopScanTip;
- (void)hideViewList; - (void)hideViewList;
- (void)showViewList; - (void)showViewList;
- (void)_buildShowView;
- (void)_updateView; - (void)_updateView;
@end @end
......
...@@ -9,11 +9,18 @@ ...@@ -9,11 +9,18 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <BioAuthEngine/AFEStatusBar.h> #import <BioAuthEngine/AFEStatusBar.h>
#import <WebKit/WebKit.h> #import <WebKit/WebKit.h>
#import "APBToygerRemoteConfig.h" #import <DTFUtility/APBToygerRemoteConfig.h>
#import "DTFUICustom.h"
typedef NS_ENUM(NSUInteger, AFEWebGuideCancelType) {
AFEWebGuideCancelTypeActiveWithdrawal = 0,//主动退出
AFEWebGuideCancelTypeNotCertifiedYet,//暂不认证
};
@protocol AFEWebGuideViewDelegate <NSObject> @protocol AFEWebGuideViewDelegate <NSObject>
- (void)onButtonBegin:(BOOL)suitableType; - (void)onButtonBegin:(BOOL)suitableType query:(NSDictionary *)dict;
- (void)onButtonCancel; - (void)onButtonCancel:(AFEWebGuideCancelType)cancelType;//退出
@optional @optional
- (void)onLoadFinished:(BOOL)success; - (void)onLoadFinished:(BOOL)success;
...@@ -22,7 +29,9 @@ ...@@ -22,7 +29,9 @@
@end @end
@interface AFEWebTopBar: UIView
@end
@interface AFEWebGuideView : UIView <IStatusBarDelegate,WKScriptMessageHandler, WKUIDelegate, WKNavigationDelegate> @interface AFEWebGuideView : UIView <IStatusBarDelegate,WKScriptMessageHandler, WKUIDelegate, WKNavigationDelegate>
...@@ -30,9 +39,12 @@ ...@@ -30,9 +39,12 @@
@property(nonatomic, assign)BOOL loaded; @property(nonatomic, assign)BOOL loaded;
@property(nonatomic, strong)APBToygerAlertConfig *toygerAlertConfig; @property(nonatomic, strong)APBToygerAlertConfig *toygerAlertConfig;
@property(nonatomic, strong)UIViewController *currentViewController; @property(nonatomic, weak)UIViewController *currentViewController;
@property(nonatomic, strong)DTFUICustom *customProtocol;
@property(nonatomic, strong)NSDictionary *alertParam;
- (void)setWebGuideViewDelegate:(id<AFEWebGuideViewDelegate>)webGuideViewDeleage; - (void)setWebGuideViewDelegate:(id<AFEWebGuideViewDelegate>)webGuideViewDeleage;
- (void)setURL:(NSURL *)url; - (void)setURL:(NSURL *)url;
//清除网页的localstorage,localStorage存储了自定义UI信息
- (void)clearUICustomSettingWebLocalStorage;
@end @end
...@@ -20,7 +20,6 @@ typedef NS_ENUM(NSInteger, APBBackwardCommandType) { ...@@ -20,7 +20,6 @@ typedef NS_ENUM(NSInteger, APBBackwardCommandType) {
BACKWARD_COMMNAD_STOP_SCANCE = 401, //关闭扫描 BACKWARD_COMMNAD_STOP_SCANCE = 401, //关闭扫描
BACKWARD_COMMNAD_OCRUPLOAD_DATA = 402, //EKYC OCR上传 BACKWARD_COMMNAD_OCRUPLOAD_DATA = 402, //EKYC OCR上传
BACKWARD_COMMNAD_OCRUPLOADCONFIRM_DATA = 403, //EKYC OCR确认 BACKWARD_COMMNAD_OCRUPLOADCONFIRM_DATA = 403, //EKYC OCR确认
}; };
typedef NS_ENUM(NSInteger, APBTimerCommandType) { typedef NS_ENUM(NSInteger, APBTimerCommandType) {
......
...@@ -7,17 +7,17 @@ ...@@ -7,17 +7,17 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <BioAuthEngine/APBBisUploadGwRequest.h> #import <DTFUtility/APBBisUploadGwRequest.h>
#import <BioAuthEngine/APBBehavLogModel.h> #import <BioAuthEngine/APBBehavLogModel.h>
#import <DTFUtility/ToygerData.h>
@interface APBBisRequestBuilder : NSObject @interface APBBisRequestBuilder : NSObject
+(APBBisUploadGwRequest *) buildRequestwithpubKey:(NSString *) pubKey +(APBBisUploadGwRequest *) buildRequestwithpubKey:(NSString *) pubKey
token:(NSString *) bistoken token:(NSString *) bistoken
contentData:(NSString *)content contentData:(ToygerUploadContent *)content
behaveLog:(BisBehavLog *)behavlog behaveLog:(BisBehavLog *)behavlog
andCypherData:(NSString *) aesKeyData andCypherData:(NSString *) aesKeyData;
encrypt:(BOOL) encrypt;
+ (APBBisUploadGwRequest *)buildEKYCRequestWithContentData:(NSString *)content + (APBBisUploadGwRequest *)buildEKYCRequestWithContentData:(NSString *)content
behaveLog:(BisBehavLog *)behavlog behaveLog:(BisBehavLog *)behavlog
......
...@@ -6,9 +6,12 @@ ...@@ -6,9 +6,12 @@
// Copyright © 2018 DTF. All rights reserved. // Copyright © 2018 DTF. All rights reserved.
// //
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "DTFCustomActivityIndicator.h"
@interface APBDTFUploadToastView : UIView @interface APBDTFUploadToastView : UIView
@property(nonatomic,strong)UIActivityIndicatorView* indicator; @property(nonatomic,strong)UIActivityIndicatorView *indicator;
@property(nonatomic,strong)DTFCustomActivityIndicator *customActivityIndicator;
- (instancetype)initWithFrame:(CGRect)frame; - (instancetype)initWithFrame:(CGRect)frame;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <DTFUtility/APBToygerBioBisConfigManager.h>
@class UIViewController; @class UIViewController;
extern NSString *const kKeepUploadPageKey; //extInfo key: 生物识别产品是否要保持上传界面,默认不保持 extern NSString *const kKeepUploadPageKey; //extInfo key: 生物识别产品是否要保持上传界面,默认不保持
...@@ -14,11 +15,11 @@ extern NSString *const kKeepUploadPageKey; //extInfo key: ...@@ -14,11 +15,11 @@ extern NSString *const kKeepUploadPageKey; //extInfo key:
@interface APBRequest : NSObject @interface APBRequest : NSObject
@property(nonatomic, weak, readonly)UIViewController *vc; //显示的viewController @property(nonatomic, weak, readonly)UIViewController *vc; //显示的viewController
@property(nonatomic, copy, readonly)NSString *protocol; //服务端下发的配置参数 @property(nonatomic, strong, readonly)APBToygerBioBisConfigManager *protocolModel; //服务端下发的配置参数
@property(nonatomic, strong, readonly)NSDictionary *extInfo; //扩展业务参数 @property(nonatomic, strong, readonly)NSDictionary *extInfo; //扩展业务参数
- (instancetype)initWithViewController:(UIViewController *)vc - (instancetype)initWithViewController:(UIViewController *)vc
protocolInfo:(NSString *)protocol protocolModel:(APBToygerBioBisConfigManager *)protocolModel
extInfo:(NSDictionary *)ext; extInfo:(NSDictionary *)ext;
@end @end
...@@ -39,6 +39,8 @@ typedef enum { ...@@ -39,6 +39,8 @@ typedef enum {
APB_RESULT_USE_PASSWORD = 300, //用户选择账密登录(弹框) APB_RESULT_USE_PASSWORD = 300, //用户选择账密登录(弹框)
APB_RESULT_OTHER_VERIFICATION = 303, //其他核身方式 APB_RESULT_OTHER_VERIFICATION = 303, //其他核身方式
APB_RESULT_LOCALVERIFY_FAIL = 304, //本地比对失败 APB_RESULT_LOCALVERIFY_FAIL = 304, //本地比对失败
APB_RESULT_TOYGERSERVICE_FAILED = 305, //toyer 模型异常
APB_RESULT_UPLOAD_IMAGE_NIL = 306, //上传的图片为空
}APBResultType; }APBResultType;
@interface APBResponse : NSObject @interface APBResponse : NSObject
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <BioAuthEngine/BioAuthEngine.h> #import <BioAuthEngine/BioAuthEngine.h>
#import <DTFUtility/ToygerData.h>
@class BisBehavTask; @class BisBehavTask;
...@@ -60,7 +61,7 @@ ...@@ -60,7 +61,7 @@
* @param panoImage 全景图,若该参数指定,将替换之前的全景图 * @param panoImage 全景图,若该参数指定,将替换之前的全景图
*/ */
- (void)addMonitorImage:(UIImage *)monitorImage - (void)addMonitorImage:(UIImage *)monitorImage
replacePanoImage:(NSString *)panoImage replacePanoImage:(ToygerUploadContent *)panoImage
andCypherKeyData:(NSString *)cypherKey; andCypherKeyData:(NSString *)cypherKey;
#endif #endif
...@@ -113,11 +114,6 @@ ...@@ -113,11 +114,6 @@
- (APBBisUploadGwRequest *)buildUploadRequestWithRetryCnt:(NSInteger)retry; - (APBBisUploadGwRequest *)buildUploadRequestWithRetryCnt:(NSInteger)retry;
- (APBBisUploadGwRequest *)buildUploadRequestWithContent:(NSData *)data
cypherKey:(NSData *)cypherKeyData
invokeType:(NSString *)type
retryCnt:(NSInteger)retry;
- (NSString *)rsaImage:(NSString *)pubkey image:(UIImage *)image ; - (NSString *)rsaImage:(NSString *)pubkey image:(UIImage *)image ;
......
...@@ -76,6 +76,7 @@ static NSString *const kBioAuthParamAlertViewSecondButtonTitle = @"kBioAuthParam ...@@ -76,6 +76,7 @@ static NSString *const kBioAuthParamAlertViewSecondButtonTitle = @"kBioAuthParam
static NSString *const kBioAuthParamAlertViewFirstCallback = @"kBioAuthParamAlertViewFirstCallback"; static NSString *const kBioAuthParamAlertViewFirstCallback = @"kBioAuthParamAlertViewFirstCallback";
static NSString *const kBioAuthParamAlertViewSecondCallback = @"kBioAuthParamAlertViewSecondCallback"; static NSString *const kBioAuthParamAlertViewSecondCallback = @"kBioAuthParamAlertViewSecondCallback";
static NSString *const kBioAuthParamAlertViewLogReason = @"kBioAuthParamAlertViewLogReason"; static NSString *const kBioAuthParamAlertViewLogReason = @"kBioAuthParamAlertViewLogReason";
static NSString *const kBioAuthParamAlertType = @"kBioAuthParamAlertType";
static NSString *const kBioAuthParamInterrupt = @"interrupt"; static NSString *const kBioAuthParamInterrupt = @"interrupt";
static NSString *const kBioAuthParamCancel = @"cancel"; static NSString *const kBioAuthParamCancel = @"cancel";
......
...@@ -9,9 +9,7 @@ ...@@ -9,9 +9,7 @@
#ifndef BioAuthEngine_h #ifndef BioAuthEngine_h
#define BioAuthEngine_h #define BioAuthEngine_h
#import <BioAuthEngine/APBBisUploadGwRequest.h>
#import <BioAuthEngine/APBBehavLogModel.h> #import <BioAuthEngine/APBBehavLogModel.h>
#import <BioAuthEngine/APBBisProtocol.h>
#import <BioAuthEngine/NSTimer+bioAuth.h> #import <BioAuthEngine/NSTimer+bioAuth.h>
#import <BioAuthEngine/APBAlertController.h> #import <BioAuthEngine/APBAlertController.h>
...@@ -37,6 +35,8 @@ ...@@ -37,6 +35,8 @@
#import <BioAuthEngine/BioAuthCommonSetting.h> #import <BioAuthEngine/BioAuthCommonSetting.h>
#import <BioAuthEngine/APBConfig.h> #import <BioAuthEngine/APBConfig.h>
#import <BioAuthEngine/APBBisRequestBuilder.h> #import <BioAuthEngine/APBBisRequestBuilder.h>
#import <BioAuthEngine/DTFFaceViewProtocol.h>
#endif /* BioAuthEngine_h */ #endif /* BioAuthEngine_h */
......
...@@ -7,14 +7,14 @@ ...@@ -7,14 +7,14 @@
// //
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "APBTaskContext.h" #import "IBioAuthTask.h"
@interface DTFBaseViewController : UIViewController @interface DTFBaseViewController : UIViewController
@property(nonatomic, assign) BOOL isClose; @property(nonatomic, assign) BOOL isClose;
@property(nonatomic, strong) NSString *platformInfo; @property(nonatomic, strong) NSString *platformInfo;
@property(nonatomic, strong) UIActivityIndicatorView *activityIndicatorView; @property(nonatomic, strong) UIActivityIndicatorView *activityIndicatorView;
@property(nonatomic, weak) APBTaskContext *context; @property(nonatomic, weak) id<IBioAuthTask> currentTask;
- (void)addWebGuideView:(UIView *)guideView; - (void)addWebGuideView:(UIView *)guideView;
- (void)showLoadingView; - (void)showLoadingView;
......
//
// DTFColorModel.h
// BioAuthEngine
//
// Created by 汪澌哲 on 2024/1/23.
// Copyright © 2024 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DTFColorModel : NSObject
@property (nonatomic, strong) UIColor *titleColor;
@property (nonatomic, strong) UIColor *msgColor;
@property (nonatomic, strong) UIColor *cancelColor;
@property (nonatomic, strong) UIColor *confirmColor;
@property (nonatomic, strong) UIColor *cancelBGColor;
@property (nonatomic, strong) UIColor *confirmBGColor;
@end
NS_ASSUME_NONNULL_END
//
// DTFCustomActivityIndicator.h
// BioAuthEngine
//
// Created by 汪澌哲 on 2024/1/16.
// Copyright © 2024 Alipay. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface DTFCustomActivityIndicator : UIImageView
- (instancetype)initWithImage:(UIImage *)image frame:(CGRect)frame;
- (void)startAnimating;
- (void)stopAnimating;
- (BOOL)isAnimating;
@end
NS_ASSUME_NONNULL_END
//
// DTFCustomAlertView.h
// BioAuthEngine
//
// Created by 汪澌哲 on 2024/1/10.
// Copyright © 2024 Alipay. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "DTFColorModel.h"
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, DTFAlertActionType) {
DTFAlertActionTypeConfirm,
DTFAlertActionTypeCancel
};
@interface DTFCustomAlertAction : NSObject
@property (nonatomic, copy) NSString *title;
@property (nonatomic, assign) DTFAlertActionType type;
@property (nonatomic, copy) void (^handler)(void);
- (instancetype)initWithTitle:(NSString *)title type:(DTFAlertActionType)type handler:(void (^)(void))handler;
@end
@interface DTFCustomAlertView : UIView
@property (nonatomic, copy) NSString *titleText;
@property (nonatomic, copy) NSString *messageText;
@property (nonatomic, copy) NSString *cancelText;
@property (nonatomic, copy) NSString *sureText;
@property (nonatomic, assign) CGRect infoRect;
@property (nonatomic, strong) NSMutableArray<DTFCustomAlertAction *> *actions;
@property (nonatomic, copy) void(^cancelButtonAction)(void);
@property (nonatomic, copy) void(^sureButtonAction)(void);
@property (nonatomic, strong) UIViewController *vc;
@property (strong, nonatomic) UIView *bgView;
@property (strong, nonatomic) UIView *bgMaskView;
@property (strong, nonatomic) UIView *lineView;
@property (strong, nonatomic) UIView *linesView;
@property (strong, nonatomic) UILabel *titleLabel;
@property (strong, nonatomic) UILabel *messageLabel;
@property (assign, nonatomic) BOOL isPermission;
@property (strong, nonatomic) DTFColorModel *colorModel;
@property (strong, nonatomic) NSMutableArray *alertBtnArray;
@property (strong, nonatomic) UIFont *font;
- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message;
- (void)addAction:(DTFCustomAlertAction *)action;
- (void)show;
// 隐藏
- (void)hide;
+(void)showCustomAlertWithTitle:(NSString *)title message:(NSString *)message colorModel:(DTFColorModel *)colorModel actions:(NSArray <DTFCustomAlertAction *>*)actions fromeVC:(UIViewController *)vc;
+(void)showPermissionAlertWithTitle:(NSString *)title message:(NSString *)message fromeVC:(UIViewController *)vc;
@end
NS_ASSUME_NONNULL_END
...@@ -8,7 +8,45 @@ ...@@ -8,7 +8,45 @@
#import <UIKit/UIkit.h> #import <UIKit/UIkit.h>
#import <AVFoundation/AVFoundation.h> #import <AVFoundation/AVFoundation.h>
#import <ToygerService/ToygerFaceFrame.h>
typedef NS_ENUM(NSInteger, DTFFaceStateMessage) {
DTF_Message_Image_Perfect = 0,
DTF_Message_No_Face,
DTF_Message_Distance_Too_Far,
DTF_Message_Distance_Too_Close,
DTF_Message_Face_Not_In_Center,
DTF_Message_Bad_Pitch,
DTF_Message_Bad_Yaw,
DTF_Message_Is_Moving,
DTF_Message_Bad_Brightness,
DTF_Message_Bad_Quality,
DTF_Message_Bad_Eye_Openness,
DTF_Message_Blink_Openness,
DTF_Message_Left_Yaw,
DTF_Message_Right_Yaw,
DTF_Message_Mouth_Open,
DTF_Message_Lip_Move,
DTF_Message_Photinus,
DTF_Message_Stack_Time,
DTF_Message_Face_Too_More,
DTF_Message_Target_Too_Far,
DTF_Message_Target_Too_Close,
DTF_Message_Calibrate_Too_Far,
DTF_Message_Calibrate_Too_Close,
DTF_Message_NearFar_Collect,
DTF_Message_Face_Not_In_Postion,
};
typedef NS_ENUM(NSInteger, DTFLivenessActionGuideType) {
DTF_Liveness_Action_Guide_None = -1,//无
DTF_Liveness_Action_Guide_BlinkOpenness = 0,//眨眼
DTF_Liveness_Action_Guide_LeftYAW,//左摇头
DTF_Liveness_Action_Guide_RightYAW,//右摇头
DTF_Liveness_Action_Guide_MouthOpen,//张嘴
DTF_Liveness_Action_Guide_LipMove,//移动嘴唇
DTF_Liveness_Action_Guide_Photinus,//炫彩
DTF_Liveness_Action_Guide_NearFar//远近活体
};
@protocol DTFFaceViewProtocol; @protocol DTFFaceViewProtocol;
...@@ -18,6 +56,8 @@ ...@@ -18,6 +56,8 @@
- (void)playBtn:(UIButton *)btn; - (void)playBtn:(UIButton *)btn;
- (void)headRegionChanged:(NSDictionary *)region;//头像区域发生改变
@end @end
@protocol DTFFaceViewProtocol <NSObject> @protocol DTFFaceViewProtocol <NSObject>
...@@ -32,10 +72,12 @@ ...@@ -32,10 +72,12 @@
- (void)faceDectectComplete; - (void)faceDectectComplete;
- (void)handleFaceStateChange:(ToygerMessage)state - (void)handleFaceStateChange:(DTFFaceStateMessage)state
stateTips:(NSString *)tips stateTips:(NSString *)tips
actionGuide:(NSString *)guide actionGuide:(NSString *)guide
progress:(CGFloat)progress; actionGuideType:(DTFLivenessActionGuideType)guideType
progress:(CGFloat)progress
extInfo:(NSDictionary *)extInfo;
- (UIView *)view; - (UIView *)view;
...@@ -55,5 +97,7 @@ ...@@ -55,5 +97,7 @@
*/ */
- (void)showBlurImage:(UIImage *)image; - (void)showBlurImage:(UIImage *)image;
- (void)reset;
@end @end
//
// DTFNearFarFaceView.h
// BioAuthEngine
//
// Created by mengbingchuan on 2024/9/4.
// Copyright © 2024 Alipay. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "DTFFaceViewProtocol.h"
NS_ASSUME_NONNULL_BEGIN
@interface DTFNearFarFaceView : UIView<DTFFaceViewProtocol>
- (instancetype)initWithFrame:(CGRect)frame cameraPreviewSize:(CGSize)cameraPreviewSize;
@end
NS_ASSUME_NONNULL_END
//
// DTFUICustom.h
// BioAuthEngine
//
// Created by 汪澌哲 on 2024/1/10.
// Copyright © 2024 Alipay. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "DTFUICustomProtocol.h"
#import "DTFCustomAlertView.h"
#import "DTFColorModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface DTFUICustom : NSObject<DTFUICustomProtocol>
@property (nonatomic, strong) id userCustomProtocol;
@property (nonatomic, weak) UIViewController *currentViewController;
- (void)showAlertViewWithTitle:(NSString *)title msg:(NSString *)msg type:(NSString *)type bizCode:(NSString *)bizCode actions:(NSArray <DTFCustomAlertAction *>*)actions;
- (BOOL)showPermissionViewWithPermission:(NSArray *)permission serviceType:(DTFServiceType)serviceType;
//获取alert参数,这里单独提出来是为了给子类复用
- (DTFColorModel *)getAlertParamColorWithType:(NSString *)type bizCode:(NSString *)bizCode;
@end
NS_ASSUME_NONNULL_END
//
// DTFUICustomProtocol.h
// BioAuthEngine
//
// Created by mengbingchuan on 2022/8/29.
// Copyright © 2022 DTF. All rights reserved.
//
#import <UIKit/UIkit.h>
#import <AVFoundation/AVFoundation.h>
#import "DTFCustomAlertView.h"
typedef NS_ENUM(NSInteger, DTFServiceType) {
FACE,
OCR,
WISH
};
typedef NSString * DTFPermission NS_EXTENSIBLE_STRING_ENUM;
extern DTFPermission const DTFPermissionTypeVideo;
extern DTFPermission const DTFPermissionTypeAudio;
extern DTFPermission const DTFPermissionTypeReplay;
@protocol DTFUICustomProtocol <NSObject>
@optional
/**
* Show Permission
*/
- (BOOL)showPermissionViewWithPermission:(NSArray *)permission serviceType:(DTFServiceType)serviceType;
@end
...@@ -10,8 +10,10 @@ ...@@ -10,8 +10,10 @@
#import <BioAuthEngine/APBBackwardCommand.h> #import <BioAuthEngine/APBBackwardCommand.h>
#import <BioAuthEngine/APBEvent.h> #import <BioAuthEngine/APBEvent.h>
#import <BioAuthEngine/APBAuthEngine.h> #import <BioAuthEngine/APBAuthEngine.h>
#import <BioAuthEngine/APBTaskContext.h>
@class APBTaskContext; @class APBTaskContext;
@protocol IBioAuthTask;
/** /**
* pipeInfo key * pipeInfo key
...@@ -27,10 +29,17 @@ extern NSString *const kTaskTimeoutKey; ...@@ -27,10 +29,17 @@ extern NSString *const kTaskTimeoutKey;
typedef void (^commandBlock)(APBBackwardCommand *command); typedef void (^commandBlock)(APBBackwardCommand *command);
@protocol BioAuthTaskDelegate <NSObject>
- (void)task:(id<IBioAuthTask>)task stateChanged:(APBTaskState)state;
@end
@protocol IBioAuthTask <NSObject> @protocol IBioAuthTask <NSObject>
@property(nonatomic, copy, readonly) NSString *taskName; //任务名称 @property(nonatomic, copy, readonly) NSString *taskName; //任务名称
@property(nonatomic, strong, readonly) APBTaskContext *context; //任务上下文 @property(nonatomic, strong, readonly) APBTaskContext *context; //任务上下文
@property(nonatomic, weak) id<BioAuthTaskDelegate> delegate;
/** /**
* 开始执行任务队列 * 开始执行任务队列
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string></string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string></string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
</dict>
</array>
</dict>
</plist>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#import "ZimRpcManager.h" #import "ZimRpcManager.h"
#import <DTFUtility/DTFFaceIdentityProtocol.h> #import <DTFUtility/DTFFaceIdentityProtocol.h>
//version 2.3.2 //version 2.3.29
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
1)SDK初始化后需要经过一段时间计算才能获取到deviceToken,建议间隔3秒以上; 1)SDK初始化后需要经过一段时间计算才能获取到deviceToken,建议间隔3秒以上;
2)如果没有获取到token,返回的内容是@"",没有内容的字符串。 2)如果没有获取到token,返回的内容是@"",没有内容的字符串。
*/ */
+(NSString*)getMobileSession; +(NSString*)getMobileSession:(NSString *)certifyID;
//获取无线保镖基本数据。 //获取无线保镖基本数据。
+ (NSDictionary*) getSecurityInfo DEPRECATED_MSG_ATTRIBUTE("won't use any more");; + (NSDictionary*) getSecurityInfo DEPRECATED_MSG_ATTRIBUTE("won't use any more");;
......
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
@interface ZimRpcManager : NSObject @interface ZimRpcManager : NSObject
@property(nonatomic, strong) APBToygerBioBisConfigManager *protoclModel;
@property(nonatomic, copy) NSString *zimId;
@property(nonatomic, copy) NSDictionary *ossConfig;
@property(nonatomic, weak) id<DTFRPCProxyProtocol> rpcDelegate; @property(nonatomic, weak) id<DTFRPCProxyProtocol> rpcDelegate;
//代理模式 //代理模式
...@@ -49,6 +53,9 @@ ...@@ -49,6 +53,9 @@
//EKYC OCR确认接口 //EKYC OCR确认接口
- (void)doSendEKYCOCRContentConfrim:(NSDictionary*)params withcompletionBlock:(DTFRpcCompletionBlock)blk ; - (void)doSendEKYCOCRContentConfrim:(NSDictionary*)params withcompletionBlock:(DTFRpcCompletionBlock)blk ;
//侧信道oss上传
- (void)doUploadOSSContent:(NSDictionary*)params withcompletionBlock:(DTFRpcCompletionBlock)blk;
// SMS 请求接口 // SMS 请求接口
- (void)getSMSCode:(NSDictionary*)serviceParameters completionBlock:(DTFRpcCompletionBlock)blk; - (void)getSMSCode:(NSDictionary*)serviceParameters completionBlock:(DTFRpcCompletionBlock)blk;
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string></string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string></string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
</dict>
</array>
</dict>
</plist>
/*
Localizable.strings
AliyunIdentityFace
Created by Lingxuan on 2022/12/1.
Copyright © 2022 aliyun.com. All rights reserved.
*/
// nfc提示文案
"kNeed" = "Time left: ";
"kDontMove" = "seconds. Do not remove your device.";
"kNFCIdentification" = "NFC Verification";
"kIDNumber" = "ID Number";
"kEnterIDNumber" = "Enter a 9-digit ID number";
"kDateOfBirth" = "Date of Birth";
"kPeriodOfValidity" = "Validity Period";
"kPleaseSelect" = "Select";
"kNextStep" = "Next";
"kCancelTitle" = "Cancel";
"kOKTitle" = "OK";
"kStart" = "Please prepare your documents and click to start reading";
"kStartReading" = "Start Reading";
"kReadException" = "An error occurred. Try again.";
"kNetworkAnomaly" = "Check the network connection and try again.";
"kReadError" = "An error occurred.";
"kCardReadingFailure" = "Do not move the document during reading. Position the document in the NFC area and try again.";
"kThreeElementErrors" = "The specified parameters of your document are invalid. Change the values.";
"kCardError" = "An error occurred. Use a valid document.";
"kDeviceNotSupported" = "An error occurred. The current device does not support this feature.";
"kNFCTurnedOff" = "NFC is disabled.";
"kSuccessfullyRead" = "Successful";
"kCardReading" = "The document is being read. Do not move the document.";
"kPutIDCardInPosition" = "Position your document";
"kPutIDCardInPositionMove" = "Position your document and wait for ";
"kIDCardReadFailedRetry" = "Failed to read the document. Try again.";
"kIDCardReadFailed" = "Failed to read the document.";
"kExpirationMustGreaterBirthdate" = "The valid expiry date of the certificate must be greater than the date of birth.";
"kPrompt" = "Prompt";
"kReadyToScan" = "Ready to scan";
/*
Localizable.strings
AliyunIdentityFace
Created by Lingxuan on 2022/12/1.
Copyright © 2022 aliyun.com. All rights reserved.
*/
// nfc提示文案
"kNeed" = "还需";
"kDontMove" = "秒,请勿移动";
"kNFCIdentification" = "NFC识别";
"kIDNumber" = "证件号码";
"kEnterIDNumber" = "请输入9位证件号码";
"kDateOfBirth" = "出生日期";
"kPeriodOfValidity" = "有效期";
"kPleaseSelect" = "请选择";
"kNextStep" = "下一步";
"kCancelTitle" = "取消";
"kOKTitle" = "确定";
"kStart" = "请准备好证件,点击开始读卡";
"kStartReading" = "开始读取";
"kReadException" = "读取异常,请重试";
"kNetworkAnomaly" = "请检查网络,重新读卡";
"kReadError" = "读取错误";
"kCardReadingFailure" = "读取时请勿移动证件,请将证件对准NFC区域,重新读卡";
"kThreeElementErrors" = "证件要素输入不正确,请重新输入";
"kCardError" = "读取异常,请使用正确的证件";
"kDeviceNotSupported" = "读取异常,当前设备不支持此功能";
"kNFCTurnedOff" = "NFC已关闭";
"kSuccessfullyRead" = "读取成功";
"kCardReading" = "证件读取中,请勿移动";
"kPutIDCardInPosition" = "请将证件放到图示位置";
"kPutIDCardInPositionMove" = "请将证件放到图示位置,静置";
"kIDCardReadFailedRetry" = "读取证件失败,请重试";
"kIDCardReadFailed" = "读取证件失败";
"kExpirationMustGreaterBirthdate" = "证件有效截止日期必须大于出生日期。";
"kPrompt" = "提示";
"kReadyToScan" = "已准备好扫描";
//
// NFCDatePickerView.h
// ZimDemo
//
// Created by 汪澌哲 on 2023/6/7.
// Copyright © 2023 com.alipay. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface NFCDatePickerView : UIView
@property (nonatomic, copy) void (^onConfirm)(NSDate *);
@property (nonatomic, copy) NSString *maxDate;
- (void)showWithSelectedDate:(NSDate *)selectedDate onConfirm:(void (^)(NSDate *date))onConfirm;
- (void)dismiss;
@end
NS_ASSUME_NONNULL_END
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string></string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string></string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
</dict>
</array>
</dict>
</plist>
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <BioAuthEngine/APBConfig.h>
//若不支持pb //若不支持pb
#ifndef SUPPORT_PB #ifndef SUPPORT_PB
......
...@@ -5,14 +5,14 @@ ...@@ -5,14 +5,14 @@
*template version:4.1.1 *template version:4.1.1
*/ */
#import <BioAuthEngine/APBConfig.h>
#ifndef SUPPORT_PB #ifndef SUPPORT_PB
#import "ToygerData.h"
@interface APBBisUploadGwRequest : NSObject @interface APBBisUploadGwRequest : NSObject
@property(nonatomic, strong) NSString *bisToken; @property(nonatomic, strong) NSString *bisToken;
@property(nonatomic, strong) NSString *content; @property(nonatomic, strong) ToygerUploadContent *content;
@property(nonatomic, strong) NSString *contentSig; @property(nonatomic, strong) NSString *contentSig;
@property(nonatomic, strong) NSString *behavLog; @property(nonatomic, strong) NSString *behavLog;
@property(nonatomic, strong) NSString *behavLogSig; @property(nonatomic, strong) NSString *behavLogSig;
......
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
*/ */
- (instancetype)initWithBisConfig:(NSString *)biscfg; - (instancetype)initWithBisConfig:(NSString *)biscfg;
- (instancetype)initWithBisDocConfig:(NSString *)biscfg; @property(nonatomic, copy) NSString *protocol;
/** /**
* bisToken * bisToken
* *
...@@ -27,8 +28,6 @@ ...@@ -27,8 +28,6 @@
*/ */
- (NSString * )bisToken; - (NSString * )bisToken;
- (NSString * )ioscfg;
- (NSString * )iosvoicecfg; - (NSString * )iosvoicecfg;
- (APBToygerSoluCfg *)solucfg; - (APBToygerSoluCfg *)solucfg;
...@@ -37,8 +36,6 @@ ...@@ -37,8 +36,6 @@
- (int) sampleMode; - (int) sampleMode;
- (BOOL) isLogin;
- (NSString *) apBioSecPublicKey; - (NSString *) apBioSecPublicKey;
+ (NSDictionary *)getDictfrom:(NSString *) jsonStr; + (NSDictionary *)getDictfrom:(NSString *) jsonStr;
......
...@@ -7,11 +7,10 @@ ...@@ -7,11 +7,10 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <CoreGraphics/CGBase.h> #import "ToygerAlgorithmConfig.h"
@class APBToygerSceneEnv, APBToygerVideo, APFRemoteConfig, APBToygerCollect, APBDragonflyLivenessConfig,APBGeminiLivenessConfig; @class APBToygerSceneEnv, APBToygerVideo, APFRemoteConfig, APBToygerCollect, APBDragonflyLivenessConfig,APBGeminiLivenessConfig;
@class APBToygerNavigatePage, APBToygerAlgorithm, APBToygerTips; @class APBToygerNavigatePage, APBToygerAlgorithm, APBToygerTips, APBToygerUploadConfig;
@interface APBToygerSoluCfg: NSObject @interface APBToygerSoluCfg: NSObject
...@@ -19,6 +18,7 @@ ...@@ -19,6 +18,7 @@
@property(nonatomic, strong) APBToygerNavigatePage *navi; @property(nonatomic, strong) APBToygerNavigatePage *navi;
@end @end
/** /**
...@@ -30,19 +30,25 @@ ...@@ -30,19 +30,25 @@
@property(nonatomic, strong)APBToygerNavigatePage *navi; @property(nonatomic, strong)APBToygerNavigatePage *navi;
@property(nonatomic, copy) NSDictionary *suitable; @property(nonatomic, copy) NSDictionary *suitable;
@property(nonatomic, strong)APBToygerCollect *coll; @property(nonatomic, strong)APBToygerCollect *coll;
@property(nonatomic, copy) NSDictionary *upload; @property(nonatomic, strong) APBToygerUploadConfig *upload;
@property(nonatomic, copy) NSDictionary *algorithm; @property(nonatomic, strong) ToygerAlgorithmConfig *algorithm;
@property(nonatomic, copy) NSArray *scanAlgorithm; @property(nonatomic, copy) NSArray *scanAlgorithm;
@property(nonatomic, strong)APBToygerTips * faceTips; @property(nonatomic, strong)APBToygerTips * faceTips;
@property(nonatomic, assign)NSInteger env; @property(nonatomic, copy) NSNumber *env;
@property(nonatomic, assign)NSInteger ui; @property(nonatomic, assign)NSInteger ui;
@property(nonatomic, copy)NSString *sdkVersion; @property(nonatomic, copy)NSString *sdkVersion;
@property(nonatomic, strong)APBToygerVideo * video; @property(nonatomic, strong)APBToygerVideo * video;
@property(nonatomic, copy)NSString *verifyMode; @property(nonatomic, copy)NSString *verifyMode;
@property(nonatomic, copy)NSString *token; @property(nonatomic, copy)NSString *token;
@property(nonatomic, copy) NSDictionary *controlConfig;
@property(nonatomic, copy) NSArray *sdkActionList;
@property(nonatomic, copy) NSDictionary *simpleFlags;
+(APBToygerRemoteConfig *)defaultConfig; +(APBToygerRemoteConfig *)defaultConfig;
+ (void)loadFromJSON:(NSString *)json toObject:(NSObject*) obj; + (void)loadFromJSON:(NSString *)json toObject:(NSObject*) obj;
//是否包含ocrTask
- (BOOL)containOCRTask;
@end @end
/** /**
...@@ -52,6 +58,7 @@ ...@@ -52,6 +58,7 @@
@property(nonatomic, copy)NSString *sceneCode; @property(nonatomic, copy)NSString *sceneCode;
@property(nonatomic, copy)NSString *sceneType; @property(nonatomic, copy)NSString *sceneType;
@property(nonatomic, copy)NSString *sysTime;
+(APBToygerSceneEnv *)defaultConfig; +(APBToygerSceneEnv *)defaultConfig;
...@@ -64,11 +71,23 @@ ...@@ -64,11 +71,23 @@
@property(nonatomic, assign)BOOL enable; @property(nonatomic, assign)BOOL enable;
@property(nonatomic, copy)NSString *url; @property(nonatomic, copy)NSString *url;
@property(nonatomic, assign)BOOL needRareCharUi;
+ (APBToygerNavigatePage *)defaultConfig; + (APBToygerNavigatePage *)defaultConfig;
@end @end
/**
* ocr回填确认页相关
*/
@interface APBToygerFillBack : NSObject
@property(nonatomic, assign)BOOL enable;
@property(nonatomic, assign)BOOL editable;
+ (APBToygerFillBack *)defaultConfig;
@end
/** /**
* 采集场景配置 * 采集场景配置
*/ */
...@@ -101,7 +120,8 @@ ...@@ -101,7 +120,8 @@
@property(nonatomic, copy) NSString *docInputMode; @property(nonatomic, copy) NSString *docInputMode;
@property(nonatomic, assign) CGFloat docUIRatio; @property(nonatomic, assign) CGFloat docUIRatio;
@property(nonatomic, copy) NSString *multiLangVer; @property(nonatomic, copy) NSString *multiLangVer;
@property(nonatomic, strong) NSMutableDictionary *chameleon;
@property(nonatomic, assign) NSInteger captureFrameLimit;
+ (APBToygerCollect *)defaulConfig; + (APBToygerCollect *)defaulConfig;
@end @end
...@@ -164,10 +184,15 @@ ...@@ -164,10 +184,15 @@
@property (nonatomic, copy) NSString *topText_left_yaw; @property (nonatomic, copy) NSString *topText_left_yaw;
@property (nonatomic, copy) NSString *topText_right_yaw; @property (nonatomic, copy) NSString *topText_right_yaw;
@property (nonatomic, copy) NSString *topText_mouth_open; @property (nonatomic, copy) NSString *topText_mouth_open;
@property (nonatomic, copy) NSString *topText_target_too_far;
@property (nonatomic, copy) NSString *topText_target_too_close;
@property (nonatomic, copy) NSString *topText_calibrate_too_far;
@property (nonatomic, copy) NSString *topText_calibrate_too_close;
@property (nonatomic, copy) NSString *topText_nearFar_collect;
@property (nonatomic, copy) NSString *topText_face_not_in_postion;
@property (nonatomic, copy) NSString *brandTip; @property (nonatomic, copy) NSString *brandTip;
@property (nonatomic, copy) NSString *stopScanTip; @property (nonatomic, copy) NSString *stopScanTip;
@property (nonatomic, copy) NSString *garfield_guideTitle; @property (nonatomic, copy) NSString *garfield_guideTitle;
@property (nonatomic, copy) NSString *garfield_guideMsg; @property (nonatomic, copy) NSString *garfield_guideMsg;
...@@ -178,10 +203,58 @@ ...@@ -178,10 +203,58 @@
@property(nonatomic, strong)APBToygerAlertConfig * systemErrorAlert; @property(nonatomic, strong)APBToygerAlertConfig * systemErrorAlert;
@property(nonatomic, strong)APBToygerAlertConfig * cameraNoPermissionAlert; @property(nonatomic, strong)APBToygerAlertConfig * cameraNoPermissionAlert;
@property(nonatomic, strong)APBToygerAlertConfig * exitAlert; @property(nonatomic, strong)APBToygerAlertConfig * exitAlert;
@property(nonatomic, strong)APBToygerAlertConfig * exitAlertForPermission;
@property(nonatomic, strong)APBToygerAlertConfig * authorizationAlert; @property(nonatomic, strong)APBToygerAlertConfig * authorizationAlert;
@property(nonatomic, strong)APBToygerAlertConfig * failNoRetryAlert; @property(nonatomic, strong)APBToygerAlertConfig * failNoRetryAlert;
+(APBToygerTips *)defaultConfig; @end
@interface APBToygerBaseConfig: NSObject
@property(nonatomic, copy) NSDictionary *rawData;
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
- (void)parseProperty;
- (NSString *)stringValueForKey:(NSString *)key;
- (NSNumber *)numberValueForKey:(NSString *)key;
- (NSArray<NSNumber *> *)numberArrayForKey:(NSString *)key;
@end
@interface APBToygerUploadConfig: APBToygerBaseConfig
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
@property(nonatomic, copy) NSDictionary *rawData;
@property(nonatomic, strong) NSNumber *desiredWidth;
@property(nonatomic, strong) NSNumber *minquality;
@property(nonatomic, strong) NSNumber *upload_compress_rate;
@property(nonatomic, strong) NSNumber *log_classifier;
@property(nonatomic, strong) NSNumber *enableSmoothTransition;
@property(nonatomic, strong) NSNumber *photinusType;
@property(nonatomic, assign) BOOL photinusVideo;
@property(nonatomic, strong) NSNumber *chameleonFrameEnable;
@property(nonatomic, strong) NSNumber *chameleonUploadCompressRate;
@property(nonatomic, copy) NSString *chameleonFileNamePrefix;
@property(nonatomic, copy) NSString *bucket;
@property(nonatomic, copy) NSString *securityToken;
@property(nonatomic, copy) NSString *endpoint;
@property(nonatomic, copy) NSString *accessKeyId;
@property(nonatomic, copy) NSString *accessKeySecret;
@property(nonatomic, copy) NSString *fileNamePrefix;
@property(nonatomic, copy) NSString *mode;
@property(nonatomic, copy) NSString *collectFileNamePrefix;
@property(nonatomic, strong) NSArray<NSString *> *collection;
@property(nonatomic, strong) NSArray *captureConfig;
@property(nonatomic, strong) NSDictionary *captureConfigItem;
@property(nonatomic, strong) NSDictionary *blobConfig;
@end @end
......
...@@ -71,6 +71,13 @@ THREAD_SAFE_SET_OBJECT_FOR_KEY(pipeInfo, key, [NSNumber numberWithInteger:--num] ...@@ -71,6 +71,13 @@ THREAD_SAFE_SET_OBJECT_FOR_KEY(pipeInfo, key, [NSNumber numberWithInteger:--num]
__VA_ARGS__; \ __VA_ARGS__; \
dispatch_semaphore_signal(locker); dispatch_semaphore_signal(locker);
@interface DTFAlertTextModel : NSObject
@property(nonatomic, copy) NSString *title;
@property(nonatomic, copy) NSString *msg;
@property(nonatomic, copy) NSString *confirm;
@property(nonatomic, copy) NSString *cancel;
@end
@interface APBUtils : NSObject @interface APBUtils : NSObject
+ (NSString *)MD5WithData:(NSData *)data; + (NSString *)MD5WithData:(NSData *)data;
...@@ -79,6 +86,12 @@ dispatch_semaphore_signal(locker); ...@@ -79,6 +86,12 @@ dispatch_semaphore_signal(locker);
+ (BOOL)isWifi; + (BOOL)isWifi;
+ (UIColor*)getColorFromNSString:(NSString*) cString;
+ (NSArray<NSNumber *> *)getRGBFromHexColor:(NSString *)cString;
+ (NSString *)getColorStrFromUIColor:(UIColor *)color;
/** /**
* 主线程同步操作,请调用宏版本 * 主线程同步操作,请调用宏版本
*/ */
...@@ -106,6 +119,50 @@ dispatch_semaphore_signal(locker); ...@@ -106,6 +119,50 @@ dispatch_semaphore_signal(locker);
+ (NSString *)appVersion; + (NSString *)appVersion;
+ (NSURL *)returnContentDir;
+ (NSURL *)cacheFileDir;
+ (CGRect)setX:(CGFloat)x forFrame:(CGRect)frame;
+ (CGRect)setY:(CGFloat)y forFrame:(CGRect)frame;
+ (CGRect)setW:(CGFloat)w forFrame:(CGRect)frame;
+ (CGRect)setH:(CGFloat)h forFrame:(CGRect)frame;
+ (UIImage *)flipImage:(UIImage *)image;
+ (NSArray<NSString *> *)supportedActionLivenessArray;
+ (void)removePairInDictionary:(NSMutableDictionary *)dictionary withCheck:(BOOL(^)(NSString *, NSObject*))checker;
+ (CMVideoDimensions)maxResolution:(AVCaptureDevicePosition) position; + (CMVideoDimensions)maxResolution:(AVCaptureDevicePosition) position;
+ (NSDictionary *)evidenceVideoCompressionProperties;
+ (void)alertWithAlertModel:(DTFAlertTextModel *)model
confirmHandler:(void (^ __nullable)(UIAlertAction * _Nonnull action))confirmHandler
cancelHandler:(void (^ __nullable)(UIAlertAction * _Nonnull action))cancelHandler
presentHandler:(void (^ __nullable)(UIAlertController * _Nonnull alertController))presentHandler;
+ (NSString *)retSubMessageForKey:(NSString *)key;
+ (NSString *)codeForKey:(NSString *)key;
+ (NSString *)getAppDisplayName;
+ (void)generateVideoFileWithFileName:(NSString *)fileName imageArray:(NSArray *)imageArr filePath:(NSURL *)filePath outputSize:(CGSize)outputSize compressionProperties:(NSDictionary *)compressionProperties handler:(void (^)(NSURL *))handler;
+ (void)genVideoWithFileURL:(NSURL *)url imageArray:(NSArray *)imageArray size:(CGSize)size compressionProperties:(NSDictionary *)compressionProperties handler:(void (^)(void))handler;
+ (void)createWorkingDirectoryWithPath:(NSURL *)filePath error:(NSError **)error;
+ (CVPixelBufferRef)pixelBufferFromCGImage:(UIImage *)image size:(CGSize)size;
+ (NSError *)errorWithErrorDomian:(NSString *)errorDomian extInfo:(NSDictionary *)extInfo errMsgWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(3,4);
/// 是否是合法的颜色字符串
/// - Parameter hexString: 16进制数据6位颜色数据,以#号开头
+ (BOOL)validColorHex:(nullable NSString *)hexString;
+ (NSString *)getFaceGuardToken:(NSString *)certifyID;
@end @end
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h> #import <AVFoundation/AVFoundation.h>
#import "DTFChameleonUtilsModel.h"
#if defined(__cplusplus) #if defined(__cplusplus)
#define DTF_EXPORT extern "C" #define DTF_EXPORT extern "C"
#else #else
...@@ -122,6 +122,7 @@ typedef struct camera_configuration_t{ ...@@ -122,6 +122,7 @@ typedef struct camera_configuration_t{
/// Get current video output size /// Get current video output size
@property (nonatomic, assign, readonly) CGSize videoOutputSize; @property (nonatomic, assign, readonly) CGSize videoOutputSize;
@property (nonatomic, assign) BOOL isCameraStop;
/** /**
Do not use default NSObject initializer. Use initWithConfig:error: instead. Do not use default NSObject initializer. Use initWithConfig:error: instead.
...@@ -166,6 +167,10 @@ typedef struct camera_configuration_t{ ...@@ -166,6 +167,10 @@ typedef struct camera_configuration_t{
- (BOOL)setExposureMode:(AVCaptureExposureMode)mode; - (BOOL)setExposureMode:(AVCaptureExposureMode)mode;
- (void)setWhiteBalanceParam:(DTFChameleonUtilsModel *)cameraParam completionHandler:(void (^ _Nullable)(NSError *error))handler;
- (void)resetVideoZoom;
/** /**
Start the capture session. Start the capture session.
......
//
// DTFBaseAuthFacade.h
// DTFUtility
//
// Created by mengbingchuan on 2024/1/19.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "ZIMResponse.h"
@interface DTFBaseAuthFacade : NSObject
+ (void)initSDK;
/* IPV6的初始化接口 只有你的网络环境强制要求是IPV6的时候,才调用initIPv6。
*/
+ (void)initIPv6;
+ (NSString *)getVersion;
+ (NSDictionary *)getMetaInfo;
+ (void)preloadWithCompletion:(void (^)(BOOL))completion;
+ (void)preloadWithExtParams:(NSDictionary *)params
onCompletion:(void (^)(BOOL))completion;
+ (void)setCustomUI:(nonnull NSString *)configuration
type:(nonnull NSString *)type
completion:(void(^)(BOOL success, NSError *error))completion;
+ (void)setCustomLanguage:(nonnull NSString *)configuration
type:(nonnull NSString *)type
completion:(void(^)(BOOL success, NSError *error))completion;
+ (void)verifyWith:(NSString *)certifyId
extParams:(NSDictionary *)params
onCompletion:(void (^)(ZIMResponse *response))callback;
@end
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
//#import "DTFRPCProxyProtocol.h"
#import "DTFFaceIdentityProtocol.h" #import "DTFFaceIdentityProtocol.h"
#import "DTFNFCIdentityProtocol.h" #import "DTFNFCIdentityProtocol.h"
...@@ -15,7 +14,6 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -15,7 +14,6 @@ NS_ASSUME_NONNULL_BEGIN
@interface DTFBeanService : NSObject @interface DTFBeanService : NSObject
//@property(nonatomic, strong) id<DTFRPCProxyProtocol> rpcProxy;
@property(nonatomic, strong) id<DTFFaceIdentityProtocol> faceIdentity; @property(nonatomic, strong) id<DTFFaceIdentityProtocol> faceIdentity;
@property(nonatomic, strong) id<DTFNFCIdentityProtocol> nfcIdentity; @property(nonatomic, strong) id<DTFNFCIdentityProtocol> nfcIdentity;
...@@ -23,8 +21,6 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -23,8 +21,6 @@ NS_ASSUME_NONNULL_BEGIN
- (void)setup; - (void)setup;
- (void)setupNFC;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
//
// DTFChameleonUtilsModel.h
// DTFUtility
//
// Created by 汪澌哲 on 2023/10/21.
// Copyright © 2023 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DTFChameleonUtilsModel : NSObject
@property (nonatomic, assign) float red;
@property (nonatomic, assign) float green;
@property (nonatomic, assign) float blue;
@property (nonatomic, assign) float videoZoom;
@end
NS_ASSUME_NONNULL_END
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "ZimModelDownloader.h" #import "ZimModelDownloader.h"
#import "DTFSDKConfiguration.h" #import "DTFSDKConfiguration.h"
#import "DTFUICustomConfig.h"
#import "DTFLanguageCustomConfig.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
#define ZIM_PLATFORM_SETTING_INFO_ALIYUN @"aliyun" #define ZIM_PLATFORM_SETTING_INFO_ALIYUN @"aliyun"
#define ZIM_PLATFORM_SETTING_INFO_ALITECH @"alitech" #define ZIM_PLATFORM_SETTING_INFO_ALITECH @"alitech"
...@@ -23,25 +24,43 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -23,25 +24,43 @@ NS_ASSUME_NONNULL_BEGIN
@property(nonatomic, strong ,nullable) NSString *platformInfo; @property(nonatomic, strong ,nullable) NSString *platformInfo;
@property(nonatomic, strong ,nullable) NSURL *photinusPath; @property(nonatomic, strong ,nullable) NSURL *photinusPath;
@property(nonatomic, strong ,nullable) NSURL *photinusInfo; @property(nonatomic, strong ,nullable) NSURL *photinusInfo;
@property(nonatomic, strong, nullable) UIColor *circleColor;
@property(nonatomic, strong, nullable) UIColor *buttonColor; @property(nonatomic, strong, nullable) UIColor *buttonColor;
@property(nonatomic, strong, nullable) UIColor *clickedColor; @property(nonatomic, strong, nullable) UIColor *clickedColor;
@property(nonatomic, strong, nullable) NSString *ocrInfo; @property(nonatomic, strong, nullable) NSString *ocrInfo;
@property(nonatomic, strong, nullable) NSData *faceData; // add for OCR @property(nonatomic, strong, nullable) NSData *faceData; // add for OCR
@property(nonatomic, strong, nullable) NSData *countryData; // add for OCR @property(nonatomic, strong, nullable) NSData *countryData; // add for OCR
@property(nonatomic, strong, nullable) NSString *imageCount; @property(nonatomic, strong, nullable) NSString *imageCount;
@property(nonatomic, strong, nullable) UIColor *themeColor;
@property(nonatomic, strong, nullable) UIColor *circleColor;
@property(nonatomic, strong, nullable) NSString *languageURL;
@property(nonatomic, strong, nullable) NSString *languageDocPath;
@property(nonatomic, strong, nullable) NSString *languageFacePath;
@property(nonatomic, strong, nullable) NSString *languageGuidePath;
@property(nonatomic, strong, nullable) NSString *languageFromApp; //宿主App设置的语言
@property(nonatomic, strong, nullable) NSString *logUploadServerURL;
@property(nonatomic, strong, nullable) NSString *facadeBundlePath;
@property(nonatomic, assign) BOOL replayPermission;
@property(nonatomic, assign) BOOL isReadLocal;
@property(nonatomic, strong, nullable) DTFUICustomConfig *uiCustomConfig;
@property(nonatomic, strong, nullable) DTFLanguageCustomConfig *languageCustomConfig;
@property(nonatomic, assign) BOOL isShowTipView;
@property(nonatomic, assign) UIDeviceOrientation orientation; @property(nonatomic, assign) UIDeviceOrientation orientation;
@property(nonatomic, assign) BOOL returnContent; @property(nonatomic, assign) BOOL returnContent;
@property(nonatomic, assign) BOOL returnContentUpload; @property(nonatomic, strong, nullable) NSMutableArray *EKYCImageArray;
@property(nonatomic, strong, nullable) NSMutableArray *faceImageArray;
@property(nonatomic, assign) BOOL simpleFlags; //安全SDK的Flags @property(nonatomic, assign) BOOL simpleFlags; //安全SDK的Flags
@property(nonatomic, assign) BOOL tempddsFlags;//是否需要做安全加密 @property(nonatomic, assign) BOOL tempddsFlags;//是否需要做安全加密
@property(nonatomic, assign) BOOL iPv6Flags; @property(nonatomic, assign) BOOL iPv6Flags;
@property(nonatomic, assign) BOOL needPermissionToast;//是否需要弹出权限toast
@property(nonatomic, assign) double permissionToastDuration;//弹出权限toast时间
@property(nonatomic, copy, nullable) NSDictionary *responseExtInfo;
@property(nonatomic, strong) DTFSDKConfiguration *remoteConfig; @property(nonatomic, strong) DTFSDKConfiguration *remoteConfig;
+ (DTFConfiguration *)sharedInstance; + (DTFConfiguration *)sharedInstance;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -21,13 +21,36 @@ extern NSString *const kZIMResponseKey; ...@@ -21,13 +21,36 @@ extern NSString *const kZIMResponseKey;
extern NSString *const kZIMValidateResponseKey; extern NSString *const kZIMValidateResponseKey;
extern NSString *const kZIMCertNoKey; extern NSString *const kZIMCertNoKey;
extern NSString *const kZIMCertNameKey; extern NSString *const kZIMCertNameKey;
extern NSString *const kZIMRareCharCertNoKey;
extern NSString *const kZIMRareCharCertNameKey;
extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_BOTTOM_BUTTON_COLOR; //设置颜色的值,值内容为:#FFFFFF 格式,必须为6位 extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_BOTTOM_BUTTON_COLOR; //设置颜色的值,值内容为:#FFFFFF 格式,必须为6位
extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_BOTTOM_BUTTON_CLICKED_COLOR; //设置按钮点击颜色的值,值内容为:#FFFFFF 格式 ,必须为6位 extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_BOTTOM_BUTTON_CLICKED_COLOR; //设置按钮点击颜色的值,值内容为:#FFFFFF 格式 ,必须为6位
extern NSString *const ZIM_EXT_PARAMS_KEY_USE_VIDEO; //返回本地视频的key extern NSString *const ZIM_EXT_PARAMS_KEY_USE_VIDEO; //返回本地视频的key
extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_FACE_CIRCLE_COLOR; extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_FACE_CIRCLE_COLOR;
extern NSString *const ZIM_EXT_PARAMS_KEY_USE_VIDEO_UPLOAD; //返回本地视频上传到服务端的key extern NSString *const ZIM_EXT_PARAMS_KEY_OCR_FACE_THEME_COLOR;
extern NSString *const ZIM_EXT_PARAMS_KEY_NFC_THEME_COLOR;
extern NSString *const ZIM_EXT_PARAMS_KEY_MODEL_FILE_PATH; //设置文件路径 extern NSString *const ZIM_EXT_PARAMS_KEY_MODEL_FILE_PATH; //设置文件路径
extern NSString *const ZIM_EXT_PARAMS_KEY_ACTIVITYINDICATOR_COLOR; extern NSString *const ZIM_EXT_PARAMS_KEY_ACTIVITYINDICATOR_COLOR;
extern NSString *const ZIM_EXT_PARAMS_KEY_PRELOAD_MODEL_URL; extern NSString *const ZIM_EXT_PARAMS_KEY_PRELOAD_MODEL_URL;
extern NSString *const ZIM_EXT_PARAMS_KEY_TIMEOUT_FOR_INIT; extern NSString *const ZIM_EXT_PARAMS_KEY_TIMEOUT_FOR_INIT;
extern NSString *const ZIM_EXT_PARAMS_KEY_TIMEOUT_FOR_VERIFY; extern NSString *const ZIM_EXT_PARAMS_KEY_TIMEOUT_FOR_VERIFY;
extern NSString *const ZIM_EXT_PARAMS_KEY_RETURN_OCR_IMAGE;
extern NSString *const ZIM_EXT_PARAMS_KEY_LANGUAGE;
extern NSString *const ZIM_EXT_PARAMS_KEY_NEED_PERMISSION_TOAST;
extern NSString *const ZIM_EXT_PARAMS_KEY_NEED_FACE_NOTICE;
extern NSString *const ZIM_EXT_PARAMS_KEY_PERMISSION_TOAST_DURATION;
extern NSString *const kDTFOSSErrorDomain;
extern NSString *const kDTFEvidenceVideoName;
extern NSString *const kDTFPhotinusDataName;
extern NSString *const kDTFNOLivenessName;
extern NSString *const kDTFBlinkLivenessName;
extern NSString *const kDTFLeftYawLivenessName;
extern NSString *const kDTFRightYawLivenessName;
extern NSString *const kDTFLipMovementLivenessName;
extern NSString *const kDTFPhotinusLivenessName;
extern NSString *const kDTFNearFarLivenessName;
extern NSString *const kDTFBlinkLivenessName;
extern NSString *const kDTFEquipmentLivenessName;
...@@ -57,8 +57,8 @@ static NSString *const kDTFModelFileErrorMessage = @"(Z1023)"; ...@@ -57,8 +57,8 @@ static NSString *const kDTFModelFileErrorMessage = @"(Z1023)";
static NSString *const kDTFZimBusyErrorCode = @"Z1024"; static NSString *const kDTFZimBusyErrorCode = @"Z1024";
static NSString *const kDTFZimBusyErrorMessage = @"(Z1024)"; static NSString *const kDTFZimBusyErrorMessage = @"(Z1024)";
static NSString *const kDTFZimBusyErrorReason = @"认证进行中重复调用认证"; static NSString *const kDTFZimBusyErrorReason = @"认证进行中重复调用认证";
static NSString *const kDTFProcessInterruptionErrorCode = @"Z1025"; static NSString *const kDTFProcessInterruptionErrorCode = @"Z1055";
static NSString *const kDTFProcessInterruptionErrorMessage = @"流程被中断(Z1025)"; static NSString *const kDTFProcessInterruptionErrorMessage = @"流程被中断(Z1055)";
static NSString *const kDTUploadImageFailedErrorCode = @"Z1026"; static NSString *const kDTUploadImageFailedErrorCode = @"Z1026";
static NSString *const kDTFUploadImageFailedErrorMessage = @""; static NSString *const kDTFUploadImageFailedErrorMessage = @"";
static NSString *const kDTFVerifyFailedErrorCode = @"Z1027"; static NSString *const kDTFVerifyFailedErrorCode = @"Z1027";
...@@ -108,6 +108,15 @@ static NSString *const kDTFOcrUserQuitInEmblemAuthenticationErrorMessage = @" ...@@ -108,6 +108,15 @@ static NSString *const kDTFOcrUserQuitInEmblemAuthenticationErrorMessage = @"
static NSString *const kDTFOcrInterruptionErrorCode = @"Z2004"; static NSString *const kDTFOcrInterruptionErrorCode = @"Z2004";
static NSString *const kDTFOcrInterruptionErrorReason = @"OCR过程被中断"; static NSString *const kDTFOcrInterruptionErrorReason = @"OCR过程被中断";
static NSString *const kDTFOcrInterruptionErrorMessage = @"OCR过程被中断(Z2004))"; static NSString *const kDTFOcrInterruptionErrorMessage = @"OCR过程被中断(Z2004))";
static NSString *const kDTFFaceDetectNotImportErrorCode = @"I4001";
static NSString *const kDTFFaceDetectNotImportErrorMessage = @"刷脸模块接入异常";
static NSString *const kDTFOcrNotImportErrorCode = @"I4003";
static NSString *const kDTFOcrNotImportErrorMessage = @"OCR模块接入异常";
static NSString *const kDTFNFCNotImportErrorCode = @"I4004";
static NSString *const kDTFNFCNotImportErrorMessage = @"NFC模块接入异常";
static NSString *const kDTFMultiFactorNotImportErrorCode = @"I4005";
static NSString *const kDTFMultiFactorNotImportErrorMessage = @"意愿模块接入异常";
static NSString *const kDTFAudioIsEmptyErrorCode = @"Z5116"; static NSString *const kDTFAudioIsEmptyErrorCode = @"Z5116";
static NSString *const kDTFAudioIsEmptyErrorMessage = @"Z5116 - 音频文件上传失败"; static NSString *const kDTFAudioIsEmptyErrorMessage = @"Z5116 - 音频文件上传失败";
static NSString *const kDTFOcrNetworkFailedErrorCode = @"Z6002"; static NSString *const kDTFOcrNetworkFailedErrorCode = @"Z6002";
......
//
// DTFLanguageCustomConfig.h
// DTFUtility
//
// Created by 汪澌哲 on 2024/1/8.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DTFLanguageCustomGuideConfig : NSObject
@property (nonatomic, copy) NSString *titleText;
@property (nonatomic, copy) NSString *agrtTopTipsText;
@property (nonatomic, copy) NSString *agrtAgreeText;
@property (nonatomic, copy) NSString *agrtText;
@property (nonatomic, copy) NSString *agrtBotTipsText;
@property (nonatomic, copy) NSString *startBtnText;
@property (nonatomic, copy) NSString *elderBtnText;
@property (nonatomic, copy) NSString *exitBtnText;
@property (nonatomic, copy) NSString *rareFormNameText;
@property (nonatomic, copy) NSString *rareFormIDText;
@property (nonatomic, copy) NSString *rareFormEntBtnText;
@property (nonatomic, copy) NSString *authPermissionCamera;
@property (nonatomic, copy) NSString *authPermissionAudio;
@property (nonatomic, copy) NSString *authPermissionScreenEvidence;
@property (nonatomic, copy) NSString *authPermissionToastTitle;
@property (nonatomic, copy) NSString *authPermissionToastMsg;
@property (nonatomic, copy) NSString *authPermissionAPPName;
@property (nonatomic, copy) NSString *authPermissionSDKName;
@property (nonatomic, copy) NSString *dialogExitTitle;
@property (nonatomic, copy) NSString *dialogExitMsg;
@property (nonatomic, copy) NSString *dialogExitConfirm;
@property (nonatomic, copy) NSString *dialogExitCancel;
@property (nonatomic, copy) NSString *dialogPermissionFailedTitle;
@property (nonatomic, copy) NSString *dialogPermissionFailedMsg;
@property (nonatomic, copy) NSString *dialogPermissionFailedConfirm;
@property (nonatomic, copy) NSString *dialogPermissionFailedCancel;
@property (nonatomic, copy) NSString *dialogNetworkFailedTitle;
@property (nonatomic, copy) NSString *dialogNetworkFailedMsg;
@property (nonatomic, copy) NSString *dialogNetworkFailedConfirm;
@property (nonatomic, copy) NSString *dialogSupportFailedTitle;
@property (nonatomic, copy) NSString *dialogSupportFailedMsg;
@property (nonatomic, copy) NSString *dialogSupportFailedConfirm;
@property (nonatomic, copy) NSString *settingFailReason;
@property (nonatomic, copy) NSDictionary *originMap;
@end
@interface DTFLanguageCustomFaceConfig : NSObject
@property (nonatomic, copy) NSString *faceNotFound;
@property (nonatomic, copy) NSString *faceTooFar;
@property (nonatomic, copy) NSString *faceTooClose;
@property (nonatomic, copy) NSString *faceNotIn;
@property (nonatomic, copy) NSString *badPitch;
@property (nonatomic, copy) NSString *badYaw;
@property (nonatomic, copy) NSString *faceTooMore;
@property (nonatomic, copy) NSString *faceIsMoving;
@property (nonatomic, copy) NSString *faceBrightless;
@property (nonatomic, copy) NSString *faceBadQuality;
@property (nonatomic, copy) NSString *eyesOnScreen;
@property (nonatomic, copy) NSString *blink;
@property (nonatomic, copy) NSString *leftYaw;
@property (nonatomic, copy) NSString *rightYaw;
@property (nonatomic, copy) NSString *stackTime;
@property (nonatomic, copy) NSString *isBlur;
@property (nonatomic, copy) NSString *faceInitTxt;
@property (nonatomic, copy) NSString *faceTitleBlink;
@property (nonatomic, copy) NSString *leftYawLiveness;
@property (nonatomic, copy) NSString *rightYawLiveness;
@property (nonatomic, copy) NSString *photinusCommTips;
@property (nonatomic, copy) NSString *processing;
@property (nonatomic, copy) NSString *dialogTimeOutTitle;
@property (nonatomic, copy) NSString *dialogTimeOutMsg;
@property (nonatomic, copy) NSString *dialogTimeOutConfirm;
@property (nonatomic, copy) NSString *dialogInterruptTitle;
@property (nonatomic, copy) NSString *dialogInterruptConfirm;
@property (nonatomic, copy) NSString *dialogInterruptCancel;
@property (nonatomic, copy) NSString *dialogTooManyRetriesTitle;
@property (nonatomic, copy) NSString *dialogTooManyRetriesMsg;
@property (nonatomic, copy) NSString *dialogTooManyRetriesConfirm;
@property (nonatomic, copy) NSString *dialogExitTitle;
@property (nonatomic, copy) NSString *dialogExitMsg;
@property (nonatomic, copy) NSString *dialogExitConfirm;
@property (nonatomic, copy) NSString *dialogExitCancel;
@property (nonatomic, copy) NSString *dialogCamOpenFailedTitle;
@property (nonatomic, copy) NSString *dialogCamOpenFailedMsg;
@property (nonatomic, copy) NSString *dialogCamOpenFailedCancel;
@property (nonatomic, copy) NSString *dialogCamOpenFailedConfirm;
@property (nonatomic, copy) NSString *dialogArchSysFailedTitle;
@property (nonatomic, copy) NSString *dialogArchSysFailedMsg;
@property (nonatomic, copy) NSString *dialogArchSysFailedConfirm;
@property (nonatomic, copy) NSString *dialogSDKErrTitle;
@property (nonatomic, copy) NSString *dialogSDKErrMsg;
@property (nonatomic, copy) NSString *dialogSDKErrConfirm;
@property (nonatomic, copy) NSString *dialogNetworkFailedTitle;
@property (nonatomic, copy) NSString *dialogNetworkFailedMsg;
@property (nonatomic, copy) NSString *dialogNetworkFailedConfirm;
@property (nonatomic, copy) NSString *settingFailReason;
@property (nonatomic, copy) NSString *verifyNotice;
@end
@interface DTFLanguageCustomConfig : NSObject
@property (strong, nonatomic) DTFLanguageCustomGuideConfig *guideConfig;
@property (strong, nonatomic) DTFLanguageCustomFaceConfig *faceConfig;
@property (strong, nonatomic) NSDictionary *docConfig;
- (instancetype)initWithString:(NSString *)string type:(NSString *)type error:(NSError **)error;
@end
NS_ASSUME_NONNULL_END
...@@ -7,22 +7,33 @@ ...@@ -7,22 +7,33 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
typedef void (^DTFLanguageDownloadCompletionBlock)(NSError * _Nullable error);
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface DTFLanguageManager : NSObject @interface DTFLanguageManager : NSObject
typedef void(^DTFLanguageDownloadCompletionBlock)(NSError *error); @property (nonatomic, strong)NSString *ocrResultStr;
@property (nonatomic, strong)NSString *languageType;
+ (instancetype)sharedInstance; + (instancetype)sharedInstance;
- (BOOL)checkNeedPreload; - (BOOL)checkNeedPreload;
- (BOOL)checkUpdateWithVersion:(NSString *)version; - (BOOL)checkUpdateDocWithVersion:(NSString *)version;
- (void)startDownloadWithCompletion:(DTFLanguageDownloadCompletionBlock)completion; - (BOOL)checkUpdateFaceWithVersion:(NSString *)version;
- (NSString *)getLocalizedStringForKey:(NSString *)key; - (BOOL)checkUpdateGuideWithVersion:(NSString *)version;
- (NSString *)getMultiFilePath; - (void)startFaceDownloadWithCompletion:(DTFLanguageDownloadCompletionBlock)completion;
- (NSString *)getMultiJsonFile; - (void)startDocDownloadWithCompletion:(DTFLanguageDownloadCompletionBlock)completion;
- (void)setBundlePath:(NSString *)bundlePath; - (void)startGuideDownloadWithCompletion:(DTFLanguageDownloadCompletionBlock)completion;
- (NSString *)getCurrentLanguage;
- (NSString *)getCurrentFullLanguage;
- (NSString *)getFileWithPath:(NSString *)path fileName:(NSString *)fileName;
- (void)initializeLanguageDictionary;
- (NSString *)faceStringWithKey:(NSString *)key;
- (NSString *)docStringWithKey:(NSString *)key;
- (NSString *)guideStringWithKey:(NSString *)key;
@end @end
......
//
// MPLogAdditions.h
// MPRemoteLogging
//
// Created by tashigaofei on 15/10/13.
// Copyright © 2015年. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface DTFLogAdditions : NSObject
/**
* UUID、UTDID、clientID、deviceModel,language,接入方无须重写,由mPaaS自动获取。
*/
@property (nonatomic, strong, readonly) NSString *UUID; // 默认实现为从DTFMobileIdentifier获取,如果没有DTFMobileIdentifier,会调用系统方法获取UUID
@property (nonatomic, strong, readonly) NSString *UTDID; // 默认实现为从DTFMobileIdentifier获取,如果没有DTFMobileIdentifier,会反射式调用UTDID库的[UTDevice utdid]方法
@property (nonatomic, strong, readonly) NSString *clientID; // 默认实现为从DTFMobileIdentifier获取,如果没有DTFMobileIdentifier,会返回@""
@property (nonatomic, strong) NSString *deviceModel; // 默认实现为从DTFMobileIdentifier获取,如果没有DTFMobileIdentifier,会调用系统方法获取设备型号
@property (nonatomic, strong) NSString *language; // 默认实现为读取NSUserDefaults中kAPLanguageSettingKey。如果使用钱包或mPaaS多语言模块,该方法不需要重写
/**
* userID为可选参数,当前登录的用户,接入方在Category中覆盖实现。
*/
@property (nonatomic, strong) NSString *userID;
/**
* log日志服务器地址,默认返回@"",需要接入方在Category中覆盖。格式为https://mdap.xxxlog.com/loggw/log.do
*/
@property (nonatomic, strong) NSString *logServerURL;
/**
* log日志服务器配置地址,默认返回@"",需要接入方在Category中覆盖。格式为https://mdap.xxxlog.com/loggw/config.do
* 一般只需要重写logServerURL即可,configServerURL系统会自动根据logServerURL进行修改。
*/
@property (nonatomic, strong) NSString *configServerURL;
/**
* 客户端日志产品ID,默认返回[[NSBundle mainBundle] objectForInfoDictionaryKey:@"Product ID"],如果不同需要接入方在Category中覆盖。
*/
@property (nonatomic, strong) NSString *platformID;
+ (instancetype)sharedInstance;
/**
* 默认进行上传的日志类型。哪些类型的日志在什么网络下进行上传,是由服务端下发配置来设置。
* 但当服务端配置不存在时,可以覆盖这个方法返回一定进行上传的日志类型。
* 默认实现为返回 @[@(MPLogTypeBehavior), @(MPLogTypeCrash), @(MPLogTypeAuto), @(MPLogTypeMonitor), @(MPLogTypeKeyBizTrace)]
*
* @return @[@(MPLogTypeXXX), @(MPLogTypeYYY)]数组。数组元素为NSNumber类型
*/
- (NSArray*)defaultUploadLogTypes;
/**
* 输出诊断日志到本地日志文件,方便定位问题。
* 该方法默认实现为空,由外部覆盖实现为指定日志方法。
*/
- (void)logToFile:(NSString*)logStr;
/**
* 触发本地日志上传的最小条数,默认为40。
* 即默认本地未上传的日志到达40条时,会自动触发上传,业务可根据需求修改
*/
- (NSInteger )numberOfSyncLogs;
@end
//
// DTFOSSManager.h
// DTFUtility
//
// Created by mengbingchuan on 2024/6/25.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "ToygerData.h"
#define kDTFOSSFileNameKey @"fileName"
#define kDTFOSSFileDataKey @"fileData"
NS_ASSUME_NONNULL_BEGIN
@interface DTFOSSManager : NSObject
+ (NSDictionary * )buildUploadData:(NSData *)data fileName:(NSString *)fileName fileNamePrefix:(NSString *)fileNamePrefix fileType:(NSString *)fileType;
+ (void)uploadWithParams:(NSDictionary *)params completionBlock:(void (^)(NSError *error, NSDictionary *result))blk;
@end
NS_ASSUME_NONNULL_END
//
// DTFOSSModel.h
// DTFUtility
//
// Created by 汪澌哲 on 2023/10/22.
// Copyright © 2023 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface DTFOSSModel : NSObject
@property (nonatomic, copy) NSString *accessKeyId;
@property (nonatomic, copy) NSString *accessKeySecret;
@property (nonatomic, copy) NSString *securityToken;
@property (nonatomic, copy) NSString *endpoint;
@property (nonatomic, copy) NSString *bucket;
@property (nonatomic, copy) NSString *fileNamePrefix;
@property (nonatomic, strong) NSNumber *useBackup;
@property (nonatomic, copy) NSString *backupOssEndPoint;
@property (nonatomic, copy) NSString *backupBucketName;
+ (instancetype)defaultModel;
- - initWithId:(NSString *)keyId keySecret:(NSString *)keySecret token:(NSString *)token endpoint:(NSString *)endpoint bucket:(NSString *)bucket prefix:(NSString *)prefix backupEndpoint:(NSString *)backupEndpoint backupBucket:(NSString *)backupBucket;
- - initWithDictionary:(NSDictionary *)dictionary;
- (NSDictionary *)dictionary;
- (BOOL)supportedBackup;
@end
...@@ -61,6 +61,11 @@ typedef void (^DTFRpcCompletionBlock)(NSError *error, NSDictionary *data); ...@@ -61,6 +61,11 @@ typedef void (^DTFRpcCompletionBlock)(NSError *error, NSDictionary *data);
*/ */
- (void)zimEKYCOCRConfirmIdentify:(NSDictionary *)params completionBlock:(DTFRpcCompletionBlock)blk; - (void)zimEKYCOCRConfirmIdentify:(NSDictionary *)params completionBlock:(DTFRpcCompletionBlock)blk;
/**
* oss上传
*/
- (void)zimFileUpload:(NSDictionary *)params completionBlock:(DTFRpcCompletionBlock)blk;
@end @end
...@@ -16,7 +16,16 @@ ...@@ -16,7 +16,16 @@
@property (nonatomic, copy) NSString *LOG_DEBUG_UPLOAD; @property (nonatomic, copy) NSString *LOG_DEBUG_UPLOAD;
@property (nonatomic, copy) NSString *FORCE_MODEL_DOWNLOAD; @property (nonatomic, copy) NSString *FORCE_MODEL_DOWNLOAD;
@property (nonatomic, copy) NSString *URLSESSION_DEGRADE; @property (nonatomic, copy) NSString *URLSESSION_DEGRADE;
@property (nonatomic, copy) NSString *MULTI_PICTURE_COLLECT;
@property (nonatomic, copy) NSString *EQUIPMENT_LIVENESS_THRESHOLD;
@property (nonatomic, copy) NSString *GEN_VIDEO_DEGRADE;
@property (nonatomic, copy) NSArray *MODEL_FILES; @property (nonatomic, copy) NSArray *MODEL_FILES;
@property (nonatomic, copy) NSString *PRESENT_VC_USE_COMPLETION;
@property (nonatomic, copy) NSString *BIO_USE_DELEGATE_REPLACE_KVO;
@property (nonatomic, copy) NSString *USE_BACKUP_DOMAIN_WHEN_TIMEOUT;//为@"1"时打开
@property (nonatomic, copy) NSString *NEED_OBSERVER_CAPTURE_SESSION;//是否需要监听session错误
@property (nonatomic, copy) NSString *ROTATION_OLD_STYLE;//是否使用老代码处理旋转
@property (nonatomic, copy) NSString *CLIENT_NATIVE_PHOTINUS;
//处理后数据 //处理后数据
@property (nonatomic, assign) BOOL urlSessionDegrade; @property (nonatomic, assign) BOOL urlSessionDegrade;
......
//
// DTFStringsManager.h
// DTFUtility
//
// Created by mengbingchuan on 2024/1/23.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DTFStringsUtils : NSObject
+ (NSString *)faceStringWithKey:(NSString *)key;
+ (NSString *)docStringWithKey:(NSString *)key;
+ (NSString *)guideStringWithKey:(NSString *)key;
@end
NS_ASSUME_NONNULL_END
//
// DTFUICustomConfig.h
// DTFUtility
//
// Created by 汪澌哲 on 2024/1/7.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DTFGuideConfig : NSObject
@property (copy, nonatomic) NSString *titleColor;
@property (copy, nonatomic) NSString *titleBackPath;
@property (copy, nonatomic) NSString *titleBackBase64;
@property (copy, nonatomic) NSString *titleClosePath;
@property (copy, nonatomic) NSString *titleCloseBase64;
@property (copy, nonatomic) NSString *bannerImg;
@property (copy, nonatomic) NSString *agrtTopTipsColor;
@property (copy, nonatomic) NSString *agrtUnSelColor;
@property (copy, nonatomic) NSString *agrtSelBgColor;
@property (copy, nonatomic) NSString *agrtAgreeColor;
@property (copy, nonatomic) NSString *agrtColor;
@property (copy, nonatomic) NSString *startBtnColor;
@property (copy, nonatomic) NSString *agrtBotTipsColor;
@property (copy, nonatomic) NSString *startBtnDisColor;
@property (copy, nonatomic) NSString *startBtnBgColor;
@property (copy, nonatomic) NSString *startBtnDisBgColor;
@property (copy, nonatomic) NSString *elderBtnDisColor;
@property (copy, nonatomic) NSString *elderBtnBgColor;
@property (copy, nonatomic) NSString *elderBtnDisBgColor;
@property (copy, nonatomic) NSString *exitBtnColor;
@property (copy, nonatomic) NSString *exitBtnBgColor;
@property (copy, nonatomic) NSString *rareFormNameColor;
@property (copy, nonatomic) NSString *rareFormIDColor;
@property (copy, nonatomic) NSString *elderBtnColor;
@property (copy, nonatomic) NSString *rareFormEntBtnColor;
@property (copy, nonatomic) NSString *permissionDialogConfirmColor;
@property (copy, nonatomic) NSString *permissionToastTitleColor;
@property (copy, nonatomic) NSString *permissionToastMsgColor;
@property (copy, nonatomic) NSString *permissionToastBgColor;
@property (copy, nonatomic) NSString *dialogExitTitleColor;
@property (copy, nonatomic) NSString *dialogExitMsgColor;
@property (copy, nonatomic) NSString *dialogExitCancelColor;
@property (copy, nonatomic) NSString *dialogExitConfirmColor;
@property (copy, nonatomic) NSString *dialogPermissionFailedTitleColor;
@property (copy, nonatomic) NSString *dialogPermissionFailedMsgColor;
@property (copy, nonatomic) NSString *dialogPermissionFailedConfirmColor;
@property (copy, nonatomic) NSString *dialogPermissionFailedCancelColor;
@property (copy, nonatomic) NSString *dialogSupportFailedTitleColor;
@property (copy, nonatomic) NSString *dialogSupportFailedMsgColor;
@property (copy, nonatomic) NSString *dialogSupportFailedConfirmColor;
@property (copy, nonatomic) NSString *dialogNetworkFailedTitleColor;
@property (copy, nonatomic) NSString *dialogNetworkFailedMsgColor;
@property (copy, nonatomic) NSString *dialogNetworkFailedConfirmColor;
@property (copy, nonatomic) NSString *settingFailReason;
@property (copy, nonatomic) NSDictionary *originMap;
@end
@interface DTFFaceConfig : NSObject
@property (copy, nonatomic) NSString *faceBgColor;
@property (copy, nonatomic) NSString *faceTitleColor;
@property (copy, nonatomic) NSString *circleTxtBgAlpha;
@property (copy, nonatomic) NSString *dialogBgAlpha;
@property (copy, nonatomic) NSString *faceProgressStartColor;
@property (copy, nonatomic) NSString *faceProgressEndColor;
@property (copy, nonatomic) NSString *circleTxtColor;
@property (copy, nonatomic) NSString *exitIconPath;
@property (copy, nonatomic) NSString *exitIconBase64;
@property (copy, nonatomic) NSString *submitTextColor;
@property (copy, nonatomic) NSString *submitLoadingIconBase64;
@property (copy, nonatomic) NSString *submitLoadingIconPath;
@property (copy, nonatomic) NSString *dialogExitTitleColor;
@property (copy, nonatomic) NSString *dialogExitMsgColor;
@property (copy, nonatomic) NSString *dialogExitCancelColor;
@property (copy, nonatomic) NSString *dialogExitConfirmColor;
@property (copy, nonatomic) NSString *dialogTimeOutTitleColor;
@property (copy, nonatomic) NSString *dialogTimeOutMsgColor;
@property (copy, nonatomic) NSString *dialogTimeOutConfirmColor;
@property (copy, nonatomic) NSString *dialogNetworkFailedTitleColor;
@property (copy, nonatomic) NSString *dialogNetworkFailedMsgColor;
@property (copy, nonatomic) NSString *dialogNetworkFailedConfirmColor;
@property (copy, nonatomic) NSString *dialogArchSysFailedTitleColor;
@property (copy, nonatomic) NSString *dialogArchSysFailedMsgColor;
@property (copy, nonatomic) NSString *dialogArchSysFailedConfirmColor;
@property (copy, nonatomic) NSString *dialogTooManyRetriesTitleColor;
@property (copy, nonatomic) NSString *dialogTooManyRetriesMsgColor;
@property (copy, nonatomic) NSString *dialogTooManyRetriesConfirmColor;
@property (copy, nonatomic) NSString *dialogInterruptTitleColor;
@property (copy, nonatomic) NSString *dialogInterruptMsgColor;
@property (copy, nonatomic) NSString *dialogInterruptConfirmColor;
@property (copy, nonatomic) NSString *dialogInterruptCancelColor;
@property (copy, nonatomic) NSString *dialogSDKErrTitleColor;
@property (copy, nonatomic) NSString *dialogSDKErrMsgColor;
@property (copy, nonatomic) NSString *dialogSDKErrConfirmColor;
@property (copy, nonatomic) NSString *dialogCamOpenFailedTitleColor;
@property (copy, nonatomic) NSString *dialogCamOpenFailedMsgColor;
@property (copy, nonatomic) NSString *dialogCamOpenFailedConfirmColor;
@property (copy, nonatomic) NSString *dialogCamOpenFailedCancelColor;
@property (copy, nonatomic) NSString *noticeIconPath;
@property (copy, nonatomic) NSString *noticeIconBase64;
@property (copy, nonatomic) NSString *noticeTxtColor;
@property (copy, nonatomic) NSString *noticeBgColor;
@property (copy, nonatomic) NSString *settingFailReason;
@property (copy, nonatomic) NSString *dialogConfirmBgColor;//弹框确认按钮背景颜色
@property (copy, nonatomic) NSString *dialogCancelBgColor;//弹框取消按钮背景颜色
@end
@interface DTFUICustomConfig : NSObject
@property (strong, nonatomic) DTFGuideConfig *guideConfig;
@property (strong, nonatomic) DTFFaceConfig *faceConfig;
- (instancetype)initWithString:(NSString *)string type:(NSString *)type error:(NSError **)error;
+ (NSString *)checkValueFailt:(NSString *)value key:(NSString *)key;
+ (void)setDefaultForKey:(NSString *)key object:(NSObject *)object ;
+ (void)checkKeyFaultWithDict:(NSDictionary *)dict propertyName:(NSMutableSet *)propertyName settingFailReason:(NSString *)settingFailReason;
+ (NSString *)setValueForKeyWithClass:(NSObject *)object params:(NSDictionary *)params;
+ (UIImage *)getImageWithBse64:(NSString *)base64Str path:(NSString *)path;
+ (UIImage *)submitLoadingIcon;
+ (UIImage *)noticeIcon;
+ (UIImage *)titleCloseIcon;
+ (UIImage *)titleBackIcon;
+ (UIImage *)exitIcon;
@end
NS_ASSUME_NONNULL_END
...@@ -35,3 +35,7 @@ FOUNDATION_EXPORT const unsigned char DTFUtilityVersionString[]; ...@@ -35,3 +35,7 @@ FOUNDATION_EXPORT const unsigned char DTFUtilityVersionString[];
#import <DTFUtility/NSString+DTFBase64.h> #import <DTFUtility/NSString+DTFBase64.h>
#import <DTFUtility/DTFConstant.h> #import <DTFUtility/DTFConstant.h>
#import <DTFUtility/DTFServerError.h> #import <DTFUtility/DTFServerError.h>
#import <DTFUtility/APBToygerBioBisConfigManager.h>
#import <DTFUtility/APBToygerRemoteConfig.h>
#import <DTFUtility/APBBisProtocol.h>
#import <DTFUtility/ToygerBaseModel.h>
//
// NSData+DTFJSON.h
// DTFUtility
//
// Created by mengbingchuan on 2024/7/10.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSData (DTFJSON)
- (NSDictionary *)dtf_jsonDictionaryError:(NSError **)error;
- (NSMutableDictionary *)dtf_jsonMutableDictionaryError:(NSError **)error;
@end
NS_ASSUME_NONNULL_END
//
// NSDictionary+DTFJSON.h
// DTFUtility
//
// Created by mengbingchuan on 2024/7/15.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSDictionary (DTFJSON)
- (NSString *)dtf_jsonStringError:(NSError **)error;
- (NSData *)dtf_jsonDataError:(NSError **)error;
@end
NS_ASSUME_NONNULL_END
//
// NSObject+Toyger.h
// ToygerService
//
// Created by 王伟伟 on 2018/2/28.
// Copyright © 2018年 DTF. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSObject (Toyger)
- (NSDictionary *_Nonnull)propertyOfClass:(Class _Nullable )aclass;
//- (NSMutableDictionary *_Nonnull)dictionary;
//- (id _Nonnull )idFromObject:(nonnull id)object;
@end
...@@ -14,12 +14,12 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -14,12 +14,12 @@ NS_ASSUME_NONNULL_BEGIN
/** /**
* 转换为Base64编码 * 转换为Base64编码
*/ */
- (NSString *)base64EncodedString; - (NSString *)dtf_base64EncodedString;
/** /**
* 将Base64解码 * 将Base64解码
*/ */
- (NSString *)base64DecodedString; - (NSString *)dtf_base64DecodedString;
@end @end
......
//
// NSString+DTFJSON.h
// DTFUtility
//
// Created by mengbingchuan on 2024/7/10.
// Copyright © 2024 com.alipay.iphoneclient.zoloz. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSString (DTFJSON)
- (NSDictionary *)dtf_jsonDictionaryError:(NSError **)error;
- (NSMutableDictionary *)dtf_jsonMutableDictionaryError:(NSError **)error;
@end
NS_ASSUME_NONNULL_END
//
// ToygerAlgorithmConfig.h
// ToygerService
//
// Created by 王伟伟 on 2018/2/2.
// Copyright © 2018年 DTF. All rights reserved.
//
#import <DTFUtility/ToygerBaseModel.h>
@interface ToygerAlgorithmConfig : ToygerBaseModel
@property (nonatomic, copy) NSString *stack_time;
@property (nonatomic, copy) NSString *blink_openness;
@property (nonatomic, copy) NSString *eye_openness;
@property (nonatomic, copy) NSString *eye_occlusion;
@property (nonatomic, copy) NSString *pose_pitch;
@property (nonatomic, copy) NSString *pose_yaw;
@property (nonatomic, copy) NSString *pose_gaussian;
@property (nonatomic, copy) NSString *pose_motion;
@property (nonatomic, copy) NSString *pose_pitchMin;
@property (nonatomic, copy) NSString *pose_rectwidth;
@property (nonatomic, copy) NSString *pose_integrity;
@property (nonatomic, copy) NSString *pose_light;
@property (nonatomic, copy) NSString *pose_yawMin;
@property (nonatomic, copy) NSString *lip_motion;
@property (nonatomic, copy) NSString *log_level;
@property (nonatomic, copy) NSString *min_iod;
@property (nonatomic, copy) NSString *max_iod;
@property (nonatomic, copy) NSString *quality_min_quality;
@property (nonatomic, copy) NSArray<NSString *> *liveness_combination;
@property (nonatomic, copy) NSArray *liveness_combination_retries;
@property (nonatomic, copy) NSArray *photinus_colour;
@property (nonatomic, copy) NSDictionary *threshold;
@property (nonatomic, copy) NSString *max_face_num;
@property (nonatomic, copy) NSString *detect_face_num;
@property (nonatomic, copy) NSString *speed;
@property (nonatomic, copy) NSDictionary *near_far;
@property (nonatomic, strong) NSArray <NSArray *>* photinus_colours;//随机炫彩下发序列
@property (nonatomic, assign) NSInteger algoType;
@property (nonatomic, copy) NSString * docType;
@property (nonatomic, assign) NSInteger pageNo;
@property (nonatomic, assign) CGRect rectInPic;
@property (nonatomic, assign) NSInteger rotateTimes;
@property (nonatomic, assign) NSInteger blur;
@property (nonatomic, assign) NSInteger exposure;
@property (nonatomic, copy) NSString *secProtocol;
-(void)addDragonflyDefaultConfig;
-(void)addLocalVerifyDefaultConfig;
@end
//
// ToygerBaseObject.h
// Toyger
//
// Created by 王伟伟 on 2018/1/25.
// Copyright © 2018年 DTF. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ToygerBaseModel : NSObject
+ (instancetype)defaultModel;
+ (instancetype)model:(id)dict;
- (NSMutableDictionary *)dictionary;
- (void)copyFromModel:(ToygerBaseModel *)model;
@end
//
// ToygerBlob.h
// ToygerAlgorithm
//
// Created by 王伟伟 on 2018/1/23.
// Copyright © 2018年 DTF. All rights reserved.
//
#ifndef USE_PB
#import <Foundation/Foundation.h>
#import "ToygerBlobElem.h"
@interface ToygerBlob : ToygerBaseModel
@property (nonatomic, copy) NSString *blobVersion;
@property (nonatomic, strong) NSMutableArray<ToygerBlobElem *> *blobElem;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerBlobElem;
@class ToygerBlob;
@interface ToygerBlob : APDPBGeneratedMessage
@property (readonly) BOOL hasBlobVersion;
@property (nonatomic,strong) NSString* blobVersion ;
@property (nonatomic,strong) NSMutableArray<ToygerBlobElem*>* blobElem ;
@end
#endif
//
// ToygerBlobElem.h
// ToygerAlgorithm
//
// Created by 王伟伟 on 2018/1/23.
// Copyright © 2018年 DTF. All rights reserved.
//
#import "ToygerFaceInfo.h"
#ifndef USE_PB
#import <Foundation/Foundation.h>
@interface ToygerBlobElemCapture: ToygerBaseModel
@property(nonatomic, copy) NSString *action;
@property(nonatomic, strong) NSData *video;
@property(nonatomic, copy) NSString *videoMD5;
@property(nonatomic, strong) NSData *videoMeta;
@property(nonatomic, copy) NSArray *picture;
@property(nonatomic, copy) NSArray *pictureToApp;
@property(nonatomic, strong) NSNumber *isVideoEvidence;
@end
@interface ToygerBlobElem : ToygerBaseModel
/**
类型:face | doc
*/
@property (nonatomic, copy) NSString *type;
/**
子类型:pano | live | dark | depth | facefeature | surveillance | facefeature | gongan | docface
*/
@property (nonatomic, copy) NSString *subType;
///**
// 当前数据在Type中的索引
// */
//@property (nonatomic, assign) int32_t idx;
/**
当前数据在Type中的索引
*/
@property (nonatomic, strong) NSNumber *idx;
/**
数据版本,图片要求是正向的
*/
@property (nonatomic, copy) NSString *version;
/**
数据Buffer,大部分是jpeg
*/
//@property (nonatomic, strong) NSData *content;
@property (nonatomic, copy) NSString *content;
/**
多图数据
*/
@property (nonatomic, copy) NSArray<NSString *> *optionalContent;
/**
人脸信息,与content对应
*/
@property (nonatomic, strong) NSArray<ToygerFaceInfo *> *faceInfos;
@property (nonatomic, strong) NSArray<ToygerBlobElemCapture *> *capture;
/**
证件信息
*/
+ (ToygerBlobElem *)blobElemFrom:(NSString *)imageContent type:(NSString *)type subType:(NSString *)subType idx:(NSString *)idx faceInfo:(NSArray *)faceInfo;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerBlobElem;
@class ToygerDocInfo;
@class ToygerFaceInfo;
@interface ToygerBlobElem : APDPBGeneratedMessage
@property (readonly) BOOL hasType;
@property (readonly) BOOL hasSubType;
@property (readonly) BOOL hasIdx;
@property (readonly) BOOL hasVersion;
@property (readonly) BOOL hasContent;
@property (readonly) BOOL hasDocInfo;
@property (nonatomic,strong) NSString* type ;
@property (nonatomic,strong) NSString* subType ;
@property (nonatomic) SInt32 idx ;
@property (nonatomic,strong) NSString* version ;
@property (nonatomic,strong) NSData* content ;
@property (nonatomic,strong) NSArray<ToygerFaceInfo*>* faceInfos ;
@property (nonatomic,strong) ToygerDocInfo* docInfo ;
+ (ToygerBlobElem *)blobElemFrom:(NSData *)imageContent type:(NSString *)type subType:(NSString *)subType idx:(NSString *)idx faceInfo:(NSArray *)faceInfo docInfo:(ToygerDocInfo *)docInfo;
@end
#endif
//
// ToygerData.h
// BioAuthEngine
//
// Created by 晗羽 on 25/04/2018.
// Copyright © 2018 DTF. All rights reserved.
//
#ifndef ToygerData_h
#define ToygerData_h
#endif /* ToygerData_h */
#import "ToygerBlob.h"
#import "ToygerBlobElem.h"
#import "ToygerFaceInfo.h"
#import "ToygerMeta.h"
#import "ToygerPoint.h"
#import "ToygerRect.h"
#import "ToygerUploadContent.h"
//
// ToygerFaceInfo.h
// ToygerAlgorithm
//
// Created by 王伟伟 on 2018/1/23.
// Copyright © 2018年 DTF. All rights reserved.
//
#import "ToygerPoint.h"
#import "ToygerRect.h"
//#include "Toyger.h"
#ifndef USE_PB
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface ToygerFaceInfo : ToygerBaseModel
/**
人脸框,绝对坐标:左上右下
*/
@property (nonatomic, copy) ToygerRect *rect;
/**
人脸关键点信息,绝对坐标
*/
@property (nonatomic, copy) NSArray<ToygerPoint *> *points;
/**
置信度
*/
@property (nonatomic, copy) NSString *confidence;
/**
质量分
*/
@property (nonatomic, copy) NSString *quality;
/**
<#Description#>
*/
@property (nonatomic, copy) NSString *feature;
/**
<#Description#>
*/
@property (nonatomic, copy) NSString *feaVersion;
//- (instancetype)initWithFaceAttr:(TGFaceAttr)attr image:(UIImage *)image;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerPoint;
@class ToygerFaceInfo;
@class ToygerRect;
@interface ToygerFaceInfo : APDPBGeneratedMessage
@property (readonly) BOOL hasRect;
@property (readonly) BOOL hasConfidence;
@property (readonly) BOOL hasQuality;
@property (readonly) BOOL hasFeature;
@property (readonly) BOOL hasFeaVersion;
@property (nonatomic,strong) ToygerRect* rect ;
@property (nonatomic,strong) NSArray<ToygerPoint*>* points ;
@property (nonatomic) Float32 confidence ;
@property (nonatomic) Float32 quality ;
@property (nonatomic,strong) NSString* feature ;
@property (nonatomic,strong) NSString* feaVersion ;
//- (instancetype)initWithFaceAttr:(TGFaceAttr)attr image:(UIImage *)image;
@end
#endif
//
// ToygerMeta.h
// ToygerService
//
// Created by 王伟伟 on 2018/2/1.
// Copyright © 2018年 DTF. All rights reserved.
//
#ifndef USE_PB
#import <DTFUtility/ToygerBaseModel.h>
@interface ToygerMeta : ToygerBaseModel
/**
比对算法类型:fpp|zface|zdoc
*/
@property (nonatomic, copy) NSString *type;
/**
客户端比对模式中,客户端比对分数和活体分数
*/
@property (nonatomic, copy) NSDictionary *score;
/**
客户端采集数据的信息:主要是证件宝使用:
@{
@"docType": @"00860001",
@"pageNo": @"1"
}
*/
@property (nonatomic, copy) NSDictionary *collectInfo;
@property (nonatomic, copy) NSString *collectInfoSig;
/**
blob数据序列化类型
*/
@property (nonatomic, strong) NSNumber *serialize;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerMeta;
@interface ToygerMeta : APDPBGeneratedMessage
@property (readonly) BOOL hasVersion;
@property (readonly) BOOL hasType;
@property (readonly) BOOL hasScoreStr;
@property (readonly) BOOL hasCollectInfoStr;
@property (readonly) BOOL hasSerialize;
@property (nonatomic,strong) NSString* version ;
@property (nonatomic,strong) NSString* type ;
@property (nonatomic,strong) NSString* scoreStr ;
@property (nonatomic,strong) NSString* collectInfoStr ;
@property (nonatomic) SInt32 serialize ;
@end
#endif
//
// ToygerPoint.h
// ToygerService
//
// Created by 王伟伟 on 2018/3/24.
// Copyright © 2018年 DTF. All rights reserved.
//
#ifndef USE_PB
#import <DTFUtility/ToygerBaseModel.h>
@interface ToygerPoint : ToygerBaseModel
@property (nonatomic, assign) NSInteger x;
@property (nonatomic, assign) NSInteger y;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerPoint;
@interface ToygerPoint : APDPBGeneratedMessage
@property (readonly) BOOL hasX;
@property (readonly) BOOL hasY;
@property (nonatomic) Float32 x ;
@property (nonatomic) Float32 y ;
@end
#endif
//
// ToygerRect.h
// ToygerService
//
// Created by 王伟伟 on 2018/3/24.
// Copyright © 2018年 DTF. All rights reserved.
//
#ifndef USE_PB
#import <DTFUtility/ToygerBaseModel.h>
@interface ToygerRect : ToygerBaseModel
@property (nonatomic, assign) NSInteger left;
@property (nonatomic, assign) NSInteger top;
@property (nonatomic, assign) NSInteger right;
@property (nonatomic, assign) NSInteger bottom;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerRect;
@interface ToygerRect : APDPBGeneratedMessage
@property (readonly) BOOL hasLeft;
@property (readonly) BOOL hasTop;
@property (readonly) BOOL hasRight;
@property (readonly) BOOL hasBottom;
@property (nonatomic) SInt32 left ;
@property (nonatomic) SInt32 top ;
@property (nonatomic) SInt32 right ;
@property (nonatomic) SInt32 bottom ;
@end
#endif
//
// ToygerUploadConfig.h
// ToygerService
//
// Created by 王伟伟 on 2018/2/2.
// Copyright © 2018年 DTF. All rights reserved.
//
#import <DTFUtility/ToygerBaseModel.h>
@interface ToygerUploadConfig : ToygerBaseModel
@property (nonatomic, copy) NSString *minquality; //TODO:delete
@property (nonatomic, copy) NSString *upload_compress_rate;
@property (nonatomic, copy) NSString *mode;
@property (nonatomic, strong) NSNumber *desiredWidth;
@property (nonatomic, copy) NSString *log_classifier;
@property (nonatomic, copy) NSArray *collection;
@end
//
// ToygerUploadContent.h
// ToygerService
//
// Created by 王伟伟 on 2018/2/1.
// Copyright © 2018年 DTF. All rights reserved.
//
#import "ToygerMeta.h"
#import "ToygerBlob.h"
#ifndef USE_PB
#import <DTFUtility/ToygerBaseModel.h>
@interface ToygerUploadContent : ToygerBaseModel
@property (nonatomic, strong) ToygerMeta *meta;
@property (nonatomic, strong) ToygerBlob *blob;
- (NSData *)uploadData;
- (NSString *)uploadString;
- (BOOL)loadMap:(NSDictionary *)map;
@end
#else
#import <APProtocolBuffers/ProtocolBuffers.h>
@class ToygerUploadContent;
@class ToygerBlob;
@class ToygerMeta;
@interface ToygerUploadContent : APDPBGeneratedMessage
@property (readonly) BOOL hasMeta;
@property (readonly) BOOL hasBlob;
@property (nonatomic,strong) ToygerMeta* meta ;
@property (nonatomic,strong) ToygerBlob* blob ;
@end
#endif
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
@property(nonatomic, strong) NSString *apdidToken; @property(nonatomic, strong) NSString *apdidToken;
@property(nonatomic, strong) NSString *wWORKSPACEID; @property(nonatomic, strong) NSString *wWORKSPACEID;
@property(nonatomic, assign) NSNumber *isSecuritySDKNumber;
+(instancetype)getInstance; +(instancetype)getInstance;
- (NSString *)getTokenContent; - (NSString *)getTokenContent;
...@@ -24,4 +24,8 @@ ...@@ -24,4 +24,8 @@
- (NSString *)ApperceptRiskwith:(NSInteger)action extParams:(NSDictionary *)args; - (NSString *)ApperceptRiskwith:(NSInteger)action extParams:(NSDictionary *)args;
- (NSString *)getSecurityChannel;
//是否支持deepSec
- (BOOL)securitySDKSupportDeepSec;
@end @end
...@@ -24,12 +24,13 @@ typedef NS_ENUM(NSUInteger, ZIMResponseCode) { ...@@ -24,12 +24,13 @@ typedef NS_ENUM(NSUInteger, ZIMResponseCode) {
@property(nonatomic, copy, readonly)NSString * _Nullable reason; @property(nonatomic, copy, readonly)NSString * _Nullable reason;
@property(nonatomic, copy, readonly)NSString * _Nullable retCodeSub; @property(nonatomic, copy, readonly)NSString * _Nullable retCodeSub;
@property(nonatomic, copy, readonly)NSString * _Nullable retMessageSub; @property(nonatomic, copy, readonly)NSString * _Nullable retMessageSub;
@property(nonatomic, strong, readonly)NSDictionary * _Nullable extInfo; @property(nonatomic, strong)NSDictionary * _Nullable extInfo;
@property(nonatomic, strong, readonly)NSString * _Nullable bizData; @property(nonatomic, strong, readonly)NSString * _Nullable bizData;
@property(nonatomic, strong) NSString* _Nullable deviceToken; //设备token @property(nonatomic, strong) NSString* _Nullable deviceToken; //设备token
@property(nonatomic, strong, nullable) NSString *videoFilePath; //如果采用视频返照,这个字段返回视频的路径 @property(nonatomic, strong, nullable) NSString *videoFilePath; //如果采用视频返照,这个字段返回视频的路径
@property(nonatomic, strong ,nullable) NSData *imageContent; //这个字段返回采集照片 @property(nonatomic, strong ,nullable) NSData *imageContent; //这个字段返回采集照片
@property(nonatomic, strong ,nullable) NSMutableArray *cardImageContent; //ekyc返回证件array
@property(nonatomic, strong ,nullable) NSMutableArray *faceImageContent;
@property(nonatomic , strong ,nullable)NSData *faceData; //OCR身份证人像面照片 ,只有在OCR模式下,才有值 @property(nonatomic , strong ,nullable)NSData *faceData; //OCR身份证人像面照片 ,只有在OCR模式下,才有值
@property(nonatomic , strong ,nullable)NSData *countryData; //OCR身份证国徽面照片,只有在OCR模式下,才有值 @property(nonatomic , strong ,nullable)NSData *countryData; //OCR身份证国徽面照片,只有在OCR模式下,才有值
......
...@@ -15,14 +15,16 @@ ...@@ -15,14 +15,16 @@
@interface ZimInitResponse:NSObject @interface ZimInitResponse:NSObject
@property (nonatomic) SInt32 retCode ; @property (nonatomic) SInt32 retCode ;
@property (nonatomic,strong) NSString* message ; @property (nonatomic,strong) NSString *message ;
@property (nonatomic,strong) NSString* zimId ; @property (nonatomic,strong) NSString *zimId ;
@property (nonatomic,strong) NSString* protocol ; @property (nonatomic,strong) NSString *protocol ;
@property (nonatomic,strong) NSDictionary* extParams ; @property (nonatomic,strong) NSDictionary *extParams ;
@property (nonatomic,strong) NSString* retCodeSub ; @property (nonatomic,strong) NSString *retCodeSub ;
@property (nonatomic,strong) NSString* retMessageSub ; @property (nonatomic,strong) NSString *retMessageSub ;
@property (nonatomic,strong) NSString* WishContent;//retMessageSub ; @property (nonatomic,strong) NSString *WishContent;//retMessageSub ;
@property (nonatomic,strong) NSString *ControlConfig;//retMessageSub ;
@property (nonatomic,strong) NSString *ImageCount; @property (nonatomic,strong) NSString *ImageCount;
@property (nonatomic,strong) NSDictionary *ossConfig;
+ (Class)extParamsElementClass; + (Class)extParamsElementClass;
@end @end
......
...@@ -7,21 +7,28 @@ ...@@ -7,21 +7,28 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "ToygerData.h"
#import "APBBisUploadGwRequest.h"
@class ZimValidateRequest; @class ZimValidateRequest;
#ifndef SUPPORT_PB #ifndef SUPPORT_PB
@interface ZimValidateRequest:NSObject @interface ZimValidateRequest:NSObject
@property (nonatomic,strong) NSString* zimId ; @property (nonatomic,strong) NSString *zimId ;
@property (nonatomic,copy) NSString* zimData ; @property (nonatomic,strong) APBBisUploadGwRequest *zimData ;
@property(nonatomic, strong) NSDictionary* bizData; @property(nonatomic, strong) NSDictionary *bizData;
@property (nonatomic,strong)NSString *idString; @property (nonatomic,strong)NSString *idString;
@property (nonatomic,strong)NSString *nameString; @property (nonatomic,strong)NSString *nameString;
@property (nonatomic,strong)NSString *externParam; @property (nonatomic,strong)NSString *externParam;
@property(nonatomic, strong) NSDictionary* wishDict; @property(nonatomic, strong) NSDictionary *wishDict;
@property(nonatomic, strong) NSArray* wishVideoUrl; @property(nonatomic, strong) NSDictionary *chameleon;
@property(nonatomic, strong) NSArray* wishAudioUrl; @property(nonatomic, strong) NSArray *wishVideoUrl;
@property (nonatomic,strong) NSString* originAliyunEncToken; @property(nonatomic, strong) NSArray *wishAudioUrl;
@property (nonatomic,strong) NSString *originAliyunEncToken;
@property (nonatomic,strong) NSString *rareCharIdString;
@property (nonatomic,strong) NSString *rareCharNameString;
@property (nonatomic, copy) NSDictionary *evidenceVideo;
@property(nonatomic, strong) NSString *sysTime;
@property(nonatomic, assign) BOOL useBackupOSS;
+ (Class)bizDataElementClass; + (Class)bizDataElementClass;
@end @end
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string></string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string></string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
</dict>
</array>
</dict>
</plist>
//
// MultiFactorBaseModel.h
// MultiFactorFacade
//
// Created by wangsizhe on 2022/6/1.
// Copyright © 2022 DTF. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface MultiFactorBaseModel : NSObject
- (id)initWithDictionary:(NSDictionary *)dic;
@end
NS_ASSUME_NONNULL_END
//
// MultiFactorFacade.h
// MultiFactorFacade
//
// Created by mengbingchuan on 2022/5/11.
// Copyright © 2022 DTF. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <BioAuthEngine/IBioAuthFactor.h>
NS_ASSUME_NONNULL_BEGIN
@interface MultiFactorFacade : NSObject<IBioAuthFactor>
+ (NSString*)getTokenid;
@end
NS_ASSUME_NONNULL_END
//
// MultiFactorModel.h
// MultiFactorFacade
//
// Created by wangsizhe on 2022/6/1.
// Copyright © 2022 DTF. All rights reserved.
//
#import "MultiFactorBaseModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface MultiFactorTaskContent :MultiFactorBaseModel
@property (nonatomic, copy) NSString *answerTitle;
@property (nonatomic, copy) NSString *question;
@property (nonatomic, assign) int time;
@property (nonatomic, copy) NSString *answerType;
@end
@interface MultiFactorTaskModel : MultiFactorBaseModel
@property (nonatomic, copy) NSArray<MultiFactorTaskContent *> *content;
@property (nonatomic, copy) NSString *recognizeType;
@property (nonatomic, copy) NSString *recognizeTypeName;
+ (instancetype)itemWithDic:(NSDictionary *)dic;
@end
NS_ASSUME_NONNULL_END
//
// AuthViewProvider.h
// DTFIdentityManager
//
// Created by mengbingchuan on 2022/6/1.
// Copyright © 2022 DTF. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#import <UIKit/UIKit.h>
#import <BioAuthEngine/DTFViewProviderProtocol.h>
#import <BioAuthEngine/DTFFaceViewProtocol.h>
#import <ToygerService/ToygerService.h>
#import "MultiFactorTaskModel.h"
@protocol MultiFactorTaskViewDelegate;
@interface MultiFactorAlertModel : NSObject
@property (nonatomic, copy) NSString *type;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *message;
@property (nonatomic, copy) NSString *confirmTitle;
@property (nonatomic, copy) void (^confirmBlock)(NSString *type);
@property (nonatomic, copy) NSString *cancelTitle;
@property (nonatomic, copy) void (^cancelBlock)(NSString *type);
@end
@protocol MultiFactorTaskViewProtocol <NSObject>
@property (nonatomic, weak) id<MultiFactorTaskViewDelegate> delegate;
@property (nonatomic, strong) MultiFactorTaskModel *model;
- (void)alertWithModel:(MultiFactorAlertModel *)model onController:(UIViewController *)controller;
- (void)handleFaceStateChange:(ToygerMessage)state
stateTips:(NSString *)tips
actionGuide:(NSString *)guide
progress:(CGFloat)progress;
- (void)countDown:(int)left;
- (void)nextAction:(int)index;
- (void)reset;
- (UIView *)view;
@end
@protocol MultiFactorTaskViewDelegate <NSObject>
- (void)viewExit:(id<MultiFactorTaskViewProtocol>)view;
- (void)viewStartRecord:(id<MultiFactorTaskViewProtocol>)view;
- (void)viewStopRecord:(id<MultiFactorTaskViewProtocol>)view;
@end
@protocol MultiFactorViewProviderProtocol <DTFViewProviderProtocol>
- (id<MultiFactorTaskViewProtocol>)viewForRead:(MultiFactorTaskModel *)model;
- (id<MultiFactorTaskViewProtocol>)viewForQuestion:(MultiFactorTaskModel *)model;
- (id<MultiFactorTaskViewProtocol>)viewForRegister:(MultiFactorTaskModel *)model;
@end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string></string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string></string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
</dict>
</array>
</dict>
</plist>
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
// //
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <BioAuthEngine/DTFUICustomProtocol.h>
#import <BioAuthEngine/DTFUICustom.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
typedef void(^DetectImageForOCRInfoBlock)(BOOL success, NSObject * _Nonnull result); typedef void(^DetectImageForOCRInfoBlock)(BOOL success, NSObject * _Nonnull result);
...@@ -19,6 +22,7 @@ typedef void(^DetectImageForOCRInfoBlock)(BOOL success, NSObject * _Nonnull resu ...@@ -19,6 +22,7 @@ typedef void(^DetectImageForOCRInfoBlock)(BOOL success, NSObject * _Nonnull resu
@property(nonatomic, strong) ZimRpcManager * rpcManager; @property(nonatomic, strong) ZimRpcManager * rpcManager;
@property (nonatomic,strong) NSString * certifyId; @property (nonatomic,strong) NSString * certifyId;
@property(nonatomic, assign) BOOL isClose; @property(nonatomic, assign) BOOL isClose;
@property(nonatomic, strong) id<DTFUICustomProtocol> customProtocol;
@end @end
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <map> #include <map>
#include <numeric>
#include <VerifyNativeAbility/dt_json11.hpp>
//#if (defined HUMMINGBIRD) || (defined JASMINE) //#if (defined HUMMINGBIRD) || (defined JASMINE)
//#include "zface_common.h" //#include "zface_common.h"
...@@ -94,6 +96,79 @@ enum ToygerLog{ ...@@ -94,6 +96,79 @@ enum ToygerLog{
Toyger_Log_ASSERT = 7, Toyger_Log_ASSERT = 7,
Toyger_Log_Performance = 8, Toyger_Log_Performance = 8,
}; };
enum TGMessage{
TG_Message_Image_Perfect = 0,
TG_Message_No_Face,
TG_Message_Distance_Too_Far,
TG_Message_Distance_Too_Close,
TG_Message_Face_Not_In_Center,
TG_Message_Bad_Pitch,
TG_Message_Bad_Yaw,
TG_Message_Is_Moving,
TG_Message_Bad_Brightness,
TG_Message_Bad_Quality,
TG_Message_Bad_Eye_Openness,
TG_Message_Blink_Openness,
TG_Message_Stack_Time,
TG_Message_Depth_Damage,
TG_Message_Left_Yaw_Guide,
TG_Message_Right_Yaw_Guide,
TG_Message_Mouth_Open_Guide,
TG_Message_Lip_Move_Guide,
TG_Message_Photinus_Guide,
TG_Message_Face_Too_More,
TG_Message_Target_Too_Far, // 离目标区域太远
TG_Message_Target_Too_Close, // 离目标区域太近
TG_Message_Calibrate_Too_Far, // 离校准区域太远
TG_Message_Calibrate_Too_Close, // 离校准区域太近
TG_Message_NearFar_Collect, // 远近人脸采集中
TG_Message_Face_Not_In_Postion // 人脸位置不在要求区域中
};
enum TGStaticMessage{
TGStaticMessage_NoLiveness = 0,
TGStaticMessage_BlinkLiveness,
TGStaticMessage_LeftYawLiveness,
TGStaticMessage_RightYawLiveness,
TGStaticMessage_MouthOpenLiveness,
TGStaticMessage_LipMoveLiveness,
TGStaticMessage_PhotinusLiveness,
TGStaticMessage_NearFarLiveness
};
enum TGActionLiveness{
TG_Action_None = 0,
TG_Action_Blink,
TG_Action_Left_YAW,
TG_Action_Right_YAW,
TG_Action_Mouth_Open,
TG_Action_Lip_Move,
TG_Action_Photinus,
TG_Action_NearFarLiveness,
TG_Action_EquipmentLiveness
};
enum TGSDKMessageCode {
/**
* 炫彩模块炫彩动作结束
*/
TG_Action_Photinus_Finish = 99,
/**
* 额外采集信息签名
*/
TG_Action_Sign_Collect_Infos = 100,
/**
* 采集密钥签名
*/
TG_Action_Sign_Infos = 101,
/**
* 人脸采集区域更新
*/
TG_Action_Face_Region_Update = 102,
};
struct TGIRect{ struct TGIRect{
int left; int left;
int top; int top;
...@@ -115,6 +190,37 @@ struct TGPoint ...@@ -115,6 +190,37 @@ struct TGPoint
float y; float y;
}; };
struct TGDetectState
{
/**
* 重试次数
*/
int retryTimes = 0;
/**
* UI层展示的多做类型
*/
// TGActionLiveness _ui_show_action = TG_Action_None;
/**
* 是否可以选取高清图
*/
// bool _can_choose_high_quality_image = true;
/**
* 高清图获取成功是否可以结束流程
*/
// bool _can_complete_when_capture_done = true;
/**
* 是否可以连续检测动作
*/
// bool _can_continue_detect_action = true;
/**
* 炫彩是否完成
*/
bool _is_photinus_finish = false;
};
struct TGQualityConfig struct TGQualityConfig
{ {
int max_face_num = 3; int max_face_num = 3;
...@@ -152,17 +258,82 @@ struct TGQualityConfig ...@@ -152,17 +258,82 @@ struct TGQualityConfig
int max_image_light = 208; //启用人脸亮度检查时,人脸合法亮度的上限 int max_image_light = 208; //启用人脸亮度检查时,人脸合法亮度的上限
bool uploadMultiFace = false; //90版本需求,是否上传多人脸信息 bool uploadMultiFace = false; //90版本需求,是否上传多人脸信息
bool enableAttrDetect = false; //是否检测人脸属性 bool enableAttrDetect = false; //是否检测人脸属性
// 远近活体采集要求
std::vector<float> calibrationMinRegion;
std::vector<float> calibrationMaxRegion;
std::vector<float> targetRegion;
std::vector<float> targetRegionTolerance;
float nearFarStackTime = 0.2f;
float nearFarMaxStackTime = 0.2f;
float calibrationStackTime = 0.0f;
float targetStackTime = 0.0f;
};
struct TGCaptureConfig {
bool pictureSameAsVerify = false; // 采集的图片按照最佳图效果
bool videoCapture = false; // 是否开启视频采集
bool videoMeta = true; //
int videoFrameCount = 30; // 视频采集帧数
bool recordAllFrame = false;
std::vector<int> pictureSequence; // 采集帧序列
std::vector<int> pictureToApp; // 是否返客
TGFRect faceRegion = {0, 0, 0, 0}; // 人脸区域采集要求
TGFRect faceRegionTolerance = {0, 0, 0, 0}; // 人脸区域采集可浮动值
std::string toString() {
std::string toString = "{\"videoCapture\":" + std::to_string(videoCapture);
toString += ",";
toString += "\"videoFrameCount\":" + std::to_string(videoFrameCount);
toString += ",";
toString += "\"pictureSequence\":" + std::to_string(pictureSequence.size());
toString += ",";
toString += "\"pictureToApp\":" + std::to_string(pictureToApp.size());
#ifdef DEBUG
if (pictureSequence.size() > 0) {
toString += ",";
toString += "\"pictureSequenceContent\":" + std::accumulate(std::next(pictureSequence.begin()), pictureSequence.end(),
std::to_string(pictureSequence[0]),
[](const std::string& a, int b) {
return a + " " + std::to_string(b);
});
}
if (pictureToApp.size() > 0) {
toString += ",";
toString += "\"pictureToAppContent\":" + std::accumulate(std::next(pictureToApp.begin()), pictureToApp.end(),
std::to_string(pictureToApp[0]),
[](const std::string& a, int b) {
return a + " " + std::to_string(b);
});
}
toString += "\"faceRegion\":[" + std::to_string(faceRegion.left) + "," + std::to_string(faceRegion.top) + "," + std::to_string(faceRegion.right) + "," + std::to_string(faceRegion.bottom) + "," + "]";
toString += "\"faceRegionTolerance\":[" + std::to_string(faceRegionTolerance.left) + "," + std::to_string(faceRegionTolerance.top) + "," + std::to_string(faceRegionTolerance.right) + "," + std::to_string(faceRegionTolerance.bottom) + "," + "]";
#endif
toString += "}";
return toString;
}
}; };
struct TGCommonConfig{ struct TGCommonConfig{
int optional_face_count = 0; // 备选人脸图数量 int optional_face_count = 0; // 备选人脸图数量
int each_action_pick_count = 0; // 每个动作需要备选人脸图数量 int each_action_pick_count = 0; // 每个动作需要备选人脸图数量
int log_level; //0 - None, 1 - light, 2 - heavy int log_level = 0; //0 - None, 1 - light, 2 - heavy
int product_code; int product_code;
int useXNN = 0; int useXNN = 0;
int speed = 100; int speed = 100;
bool auto_complete = true; bool auto_complete = true;
std::string xnn_engine_config = "common:cpunum=2,xnnnextgen=1|xNNSec:enginenames=xInt8$";// xnn init config for wallet std::string xnn_engine_config = "common:cpunum=2,xnnnextgen=1|xNNSec:enginenames=xInt8$";// xnn init config for wallet
std::map<std::string, TGCaptureConfig> captureConfigs; // 额外数据采集配置
bool canContinueDetectAction = true;
bool hasBlobConfig = true;
bool videoEvidenceFromApp = false;
std::string extraConfig = "";
int retry = 0;
std::string deviceName = "";
}; };
#ifdef ZDOC #ifdef ZDOC
struct TGDocConfig{ struct TGDocConfig{
...@@ -206,6 +377,7 @@ struct TGLivenessConfig ...@@ -206,6 +377,7 @@ struct TGLivenessConfig
int faceActionType; int faceActionType;
bool detect_before_nano; bool detect_before_nano;
unsigned int dragonfly_retry_limit = 0; unsigned int dragonfly_retry_limit = 0;
std::vector<std::string> photinus_color;
}; };
struct TGCameraConfig struct TGCameraConfig
...@@ -270,7 +442,7 @@ class TGFrame ...@@ -270,7 +442,7 @@ class TGFrame
public: public:
TGFrame(); TGFrame();
TGFrame(int w, int h, int angle, TGFrameFormat color_space, TGFrameType brightness); TGFrame(int w, int h, int angle, TGFrameFormat color_space, TGFrameType brightness);
TGFrame(unsigned char *data, int w, int h, int angle, TGFrameFormat color_space, TGFrameType brightness, bool copy = true); TGFrame(unsigned char *data, int w, int h, int angle, TGFrameFormat color_space, TGFrameType brightness, std::string rgb, bool copy = true, std::string md5 = "", std::string metaData = "");
~TGFrame(); ~TGFrame();
TGFrame(const TGFrame &src); TGFrame(const TGFrame &src);
TGFrame& operator=(const TGFrame &src); TGFrame& operator=(const TGFrame &src);
...@@ -282,8 +454,11 @@ public: ...@@ -282,8 +454,11 @@ public:
int height; int height;
int bytesPerRow; int bytesPerRow;
int rotation; int rotation;
std::string md5 = "";
TGFrameFormat format; TGFrameFormat format;
TGFrameType frame_type; TGFrameType frame_type;
std::string rgb;
std::string meta_data = "";
private: private:
int getDataLen() const; int getDataLen() const;
void Ref(); void Ref();
...@@ -292,6 +467,23 @@ private: ...@@ -292,6 +467,23 @@ private:
int *_use = nullptr; // todo: not thread safe int *_use = nullptr; // todo: not thread safe
}; };
struct TGLivenessVideoMetadata {
std::string deviceName = ""; // 设备名称
std::string lightSensorConfig = ""; // 传感器信息
std::string sdkVersion = "1.0.0"; // SDK版本
std::string dataSource = "antfincloud-production-ios-2";
std::vector<std::string> frameMetadataList; // 采集的帧数据
std::vector<std::tuple<int,int,int>> rgbList;
int videoWidth = 0; // 视频宽度
int videoHeight = 0; // 视频高度
int rotateAngle; // 帧旋转角度
float totalTime = 0; // 开始到结束耗时 ms
float videoTime = 0; // 视频生成的耗时 ms
};
#pragma mark - Face #pragma mark - Face
struct TGFaceAttr struct TGFaceAttr
...@@ -353,58 +545,20 @@ struct TGFaceAttr ...@@ -353,58 +545,20 @@ struct TGFaceAttr
bool mouth_open; bool mouth_open;
bool lip_movement; bool lip_movement;
// 当前展示的Action
TGActionLiveness ui_show_action = TG_Action_None;
bool photinus_finish;
// 当前动作索引 // 当前动作索引
long action_index; long action_index;
// 属性记录的时间 // 属性记录的时间
long record_time; long record_time;
// 最佳图选择完成是否可结束当前动作
bool canCompleteWhenCaptureDone;
// 人脸区域占比
float faceAreaRegionRatio = 0.;
}; };
enum TGMessage{
TG_Message_Image_Perfect = 0,
TG_Message_No_Face,
TG_Message_Distance_Too_Far,
TG_Message_Distance_Too_Close,
TG_Message_Face_Not_In_Center,
TG_Message_Bad_Pitch,
TG_Message_Bad_Yaw,
TG_Message_Is_Moving,
TG_Message_Bad_Brightness,
TG_Message_Bad_Quality,
TG_Message_Bad_Eye_Openness,
TG_Message_Blink_Openness,
TG_Message_Stack_Time,
TG_Message_Depth_Damage,
TG_Message_Left_Yaw_Guide,
TG_Message_Right_Yaw_Guide,
TG_Message_Mouth_Open_Guide,
TG_Message_Lip_Move_Guide,
TG_Message_Photinus_Guide,
TG_Message_Face_Too_More,
};
enum TGStaticMessage{
TGStaticMessage_NoLiveness = 0,
TGStaticMessage_BlinkLiveness,
TGStaticMessage_LeftYawLiveness,
TGStaticMessage_RightYawLiveness,
TGStaticMessage_MouthOpenLiveness,
TGStaticMessage_LipMoveLiveness,
TGStaticMessage_PhotinusLiveness,
};
enum TGActionLiveness{
TG_Action_None = 0,
TG_Action_Blink,
TG_Action_Left_YAW,
TG_Action_Right_YAW,
TG_Action_Mouth_Open,
TG_Action_Lip_Move,
TG_Action_Photinus
};
struct TGFaceState struct TGFaceState
{ {
TGMessage tip_message = TG_Message_No_Face; TGMessage tip_message = TG_Message_No_Face;
...@@ -424,6 +578,9 @@ struct TGFaceState ...@@ -424,6 +578,9 @@ struct TGFaceState
bool eye_openness; bool eye_openness;
bool blink_openness; bool blink_openness;
float current_progress; float current_progress;
// 目标人脸
float targetFaceRegion = 0;
}; };
...@@ -444,13 +601,18 @@ enum TGEventCode{ ...@@ -444,13 +601,18 @@ enum TGEventCode{
TG_Event_Code_Action_Liveness_blink_End = -42, TG_Event_Code_Action_Liveness_blink_End = -42,
TG_Event_Code_Action_Liveness_Reset = -43, TG_Event_Code_Action_Liveness_Reset = -43,
TG_Event_Code_Action_Liveness_End = -45, TG_Event_Code_Action_Liveness_End = -45,
TG_Event_Code_Photinus_RGBChanged = -46,
}; };
struct TGFaceInfo struct TGFaceInfo
{ {
TGFrame frame; TGFrame frame;
TGFaceAttr attr; TGFaceAttr attr;
std::vector<struct TGFaceInfo> optionalFaceInfos; TGFrame jpegFrame; // jpeg数据
TGFrame encryptFrame; // 帧加密数据
std::vector<std::pair<std::string, std::vector<struct TGFaceInfo>>> pictures; // 图片jpeg序列(已加密)
std::vector<std::pair<std::string, std::vector<struct TGFaceInfo>>> videoFrames; // 视频帧序列
std::map<std::string, std::string> videoMeta; // 视频帧序列
}; };
struct TGDepthFaceInfo struct TGDepthFaceInfo
...@@ -511,7 +673,7 @@ struct TGFeatureStoreResult { ...@@ -511,7 +673,7 @@ struct TGFeatureStoreResult {
std::vector<std::string> failed_face_id; std::vector<std::string> failed_face_id;
}; };
struct ToygerCallback{ struct ToygerCallback{
void *cb_receiver;
void (*handleCaptureCompleted)(void *cb_receiver, int result,const std::vector<TGFaceInfo>&info,const std::map<std::string, float> &ext); void (*handleCaptureCompleted)(void *cb_receiver, int result,const std::vector<TGFaceInfo>&info,const std::map<std::string, float> &ext);
void (*handleBestImageUpdate)(void *cb_receiver, int result,const std::vector<TGFaceInfo>&info,const std::map<std::string, float> &ext); void (*handleBestImageUpdate)(void *cb_receiver, int result,const std::vector<TGFaceInfo>&info,const std::map<std::string, float> &ext);
void (*handleFaceInfoReady)(void *cb_receiver, const std::vector<TGFaceInfo> &infos, const TGFaceAttr &attr); void (*handleFaceInfoReady)(void *cb_receiver, const std::vector<TGFaceInfo> &infos, const TGFaceAttr &attr);
...@@ -593,11 +755,6 @@ bool tg_config(void *tg_instance, ToygerCallback *callback, void *cb_receiver, c ...@@ -593,11 +755,6 @@ bool tg_config(void *tg_instance, ToygerCallback *callback, void *cb_receiver, c
*/ */
bool tg_process_image(void *tg_instance, const std::vector<TGFrame> &frames, const TGFrame &depthFrame, const TGFaceAttr &fpp_attr); bool tg_process_image(void *tg_instance, const std::vector<TGFrame> &frames, const TGFrame &depthFrame, const TGFaceAttr &fpp_attr);
/**
炫彩结束
*/
void tg_photinus_finish(void *instance);
#if defined JASMINE #if defined JASMINE
/** /**
* 1:N 人脸比对 * 1:N 人脸比对
...@@ -659,3 +816,5 @@ std::map<std::string, std::string> tg_get_runtime_info(void *tg_instance); ...@@ -659,3 +816,5 @@ std::map<std::string, std::string> tg_get_runtime_info(void *tg_instance);
void tg_set_xnn_handle(void *handle); void tg_set_xnn_handle(void *handle);
std::vector<TGDataInfo> tg_get_collection_data(void *tg_instance); std::vector<TGDataInfo> tg_get_collection_data(void *tg_instance);
std::string tg_update_native_status(void *instance, int action_code, const std::string &message);
...@@ -29,6 +29,12 @@ typedef NS_ENUM(NSInteger, ToygerMessage) { ...@@ -29,6 +29,12 @@ typedef NS_ENUM(NSInteger, ToygerMessage) {
TOYGER_Message_Photinus, TOYGER_Message_Photinus,
TOYGER_Message_Stack_Time, TOYGER_Message_Stack_Time,
TOYGER_Message_Face_Too_More, TOYGER_Message_Face_Too_More,
TOYGER_Message_Target_Too_Far,
TOYGER_Message_Target_Too_Close,
TOYGER_Message_Calibrate_Too_Far,
TOYGER_Message_Calibrate_Too_Close,
TOYGER_Message_NearFar_Collect,
TOYGER_Message_Face_Not_In_Postion
}; };
typedef NS_ENUM(NSInteger, ToygerStaticMessage) { typedef NS_ENUM(NSInteger, ToygerStaticMessage) {
...@@ -38,7 +44,8 @@ typedef NS_ENUM(NSInteger, ToygerStaticMessage) { ...@@ -38,7 +44,8 @@ typedef NS_ENUM(NSInteger, ToygerStaticMessage) {
TOYGER_Static_Message_RightYawLiveness, TOYGER_Static_Message_RightYawLiveness,
TOYGER_Static_Message_LipMoveLiveness, TOYGER_Static_Message_LipMoveLiveness,
TOYGER_Static_Message_MouthOpenLiveness, TOYGER_Static_Message_MouthOpenLiveness,
TOYGER_Static_Message_PhotinusLiveness TOYGER_Static_Message_PhotinusLiveness,
TOYGER_Static_Message_NearFarLiveness,
}; };
@interface ToygerFaceFrame : ToygerFrame<NSCopying> @interface ToygerFaceFrame : ToygerFrame<NSCopying>
...@@ -55,5 +62,6 @@ typedef NS_ENUM(NSInteger, ToygerStaticMessage) { ...@@ -55,5 +62,6 @@ typedef NS_ENUM(NSInteger, ToygerStaticMessage) {
@property (nonatomic, assign) BOOL good_yaw; @property (nonatomic, assign) BOOL good_yaw;
@property (nonatomic, assign) BOOL eyeBlink; @property (nonatomic, assign) BOOL eyeBlink;
@property (nonatomic, assign) CGFloat progress; @property (nonatomic, assign) CGFloat progress;
@property (nonatomic, assign) CGFloat targetFaceRegion;
@end @end
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
//#define USE_PB //#define USE_PB
//#define USE_FPP //#define USE_FPP
#define LOCALVERIFY #define LOCALVERIFY
#define USE_SENSOR //#define USE_SENSOR
#define HUMMINGBIRD #define HUMMINGBIRD
#define ZDOC #define ZDOC
...@@ -47,6 +47,11 @@ typedef NS_ENUM(NSUInteger, ToygerServiceType) { ...@@ -47,6 +47,11 @@ typedef NS_ENUM(NSUInteger, ToygerServiceType) {
ToygerServiceType_Face_LocalMatch, ToygerServiceType_Face_LocalMatch,
}; };
typedef NS_ENUM(NSUInteger, ToygerServiceModelType) {
ToygerServiceModelTypeFace = 0,
ToygerServiceModelTypeMouth,
};
typedef NS_ENUM(NSUInteger, TSToygerInitFailType) { typedef NS_ENUM(NSUInteger, TSToygerInitFailType) {
TSToygerInitFailTypeInvalidAlgorithm, TSToygerInitFailTypeInvalidAlgorithm,
TSToygerInitFailTypeToygerFileError TSToygerInitFailTypeToygerFileError
...@@ -61,5 +66,6 @@ TOYGER_EXPORT ToygerServiceEventKey ToygerServiceEventUserInfo; ...@@ -61,5 +66,6 @@ TOYGER_EXPORT ToygerServiceEventKey ToygerServiceEventUserInfo;
TOYGER_EXPORT ToygerServiceEventKey ToygerServiceEvent; TOYGER_EXPORT ToygerServiceEventKey ToygerServiceEvent;
TOYGER_EXPORT ToygerFaceFrameTypeKey ToygerServiceFrameTypeLight; TOYGER_EXPORT ToygerFaceFrameTypeKey ToygerServiceFrameTypeLight;
TOYGER_EXPORT ToygerFaceFrameTypeKey ToygerServiceFrameTypeDark; TOYGER_EXPORT ToygerFaceFrameTypeKey ToygerServiceFrameTypeDark;
TOYGER_EXPORT ToygerFaceFrameTypeKey ToygerServiceEventPhotinusRGBChanged;
#endif /* ToygerAlgorithmPublicDefine_h */ #endif /* ToygerAlgorithmPublicDefine_h */
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
@return Toyger算法实例 @return Toyger算法实例
*/ */
- (instancetype)initWithType:(ToygerServiceType)type andExtInfo:(NSDictionary *)extInfo errorPtr:(NSError **)errorPtr NS_DESIGNATED_INITIALIZER; - (instancetype)initWithType:(ToygerServiceType)type andExtInfo:(NSDictionary *)extInfo modelTypeArray:(NSMutableArray *)modelTypeArray errorPtr:(NSError **)errorPtr NS_DESIGNATED_INITIALIZER;
#ifdef ZDOC #ifdef ZDOC
/** /**
...@@ -100,6 +100,8 @@ ...@@ -100,6 +100,8 @@
- (void)setDocConfig:(ToygerDocConfig *)config; - (void)setDocConfig:(ToygerDocConfig *)config;
#endif #endif
- (void)updateNativeStatus:(int)actionCode message:(NSString *)message;
/** /**
Toyger算法处理图片 Toyger算法处理图片
...@@ -148,5 +150,7 @@ ...@@ -148,5 +150,7 @@
*/ */
+(NSInteger)getToygerState; +(NSInteger)getToygerState;
//补充加签数据
- (NSString *)updateInfoSig:(NSDictionary *)addtionalInfoSig;
@end @end
//
// Created on 2024/4/3.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#ifndef HARMONYFACEVERIFY_IMAGEUTILS_H
#define HARMONYFACEVERIFY_IMAGEUTILS_H
#include "BlobTypes.h"
#include "FaceBlobTypes.h"
namespace dtf {
class ImageUtils {
public:
static std::string Rotate(const Image *in, int angle, Image *out);
static std::string Crop(const Image *in, Rect rect, Image *out);
static std::string Scale(const Image *in, double x, double y, Image *out);
static std::string Packing(const Image *in, double compress_rate, Image *out);
static std::string YUV2RGB(const Image *in, Image *out);
static std::string BGRA2RGB(const Image *in, Image *out);
static void Release(Image *image);
};
}
#endif //HARMONYFACEVERIFY_IMAGEUTILS_H
//
// Created on 2024/4/2.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#ifndef HARMONYFACEVERIFY_BLOBMANAGER_H
#define HARMONYFACEVERIFY_BLOBMANAGER_H
#include "FaceBlobTypes.h"
#include "BlobImageUtil.h"
#include "BlobTypes.h"
namespace dtf {
struct BlobConfig {
double compress_rate;
double desired_width;
bool need_enc_content;
bool need_enc_image;
int retry_count;
std::string upload_image_type;
std::string bis_token;
std::vector<std::string> collection;
// 加密配置
int aesKeyLen = 0;
std::string rsaMod = "";
std::string rsaExp = "";
void SetDefault();
void ParseConfig(Json config_json);
};
#ifdef DT_REQUEST_BLOB
class BlobManager {
public:
BlobConfig config;
std::string aes_key_cipher;
std::string aes_key;
int metaSerializer;
BlobManager(BlobConfig config);
~BlobManager();
virtual FaceBlobContentResult GenerateBlob(std::vector<FaceFrame> &frames, const std::map<std::string, std::string> &ext);
virtual BlobMeta GenerateMeta(const std::map<std::string, std::string> &ext);
virtual std::string ToString(FaceBlobContentResult &result);
std::string ProcessImage(Image &image, Image *out, Image *out_encrypted);
std::string ProcessImage(Image &image, double compress_rate, Rect roi);
};
#endif
}
#endif //HARMONYFACEVERIFY_BLOBMANAGER_H
#ifndef BLOBPACKCONTROLLER_H
#define BLOBPACKCONTROLLER_H
#include <vector>
#include <map>
#include "dt_json11.hpp"
#include "BlobManager.h"
#include "BlobTypes.h"
#include "DTEncrypt.h"
using namespace std;
namespace dtf {
class BlobPackController {
public:
BlobPackController();
~BlobPackController();
/**
* @brief config 配置数据打包控制器
* @param config 图像压缩率&密钥等数据
*/
void config(BlobConfig &config);
/**
* @brief cacheBlobContent 缓存人脸识别结果数据
* @param bestImage 最佳人脸图
* @param extraImages 额外采集人脸图片(动作:图片序列)
* @param ext 额外的配置(可不传)
*/
void cacheBlobContent(FaceFrame &bestImage,
vector<pair<string, vector<FaceFrame>>> extraImages = vector<pair<string, vector<FaceFrame>>>(),
map<string, string> ext = map<string, string>());
/**
* @brief encryptExtraImages 加密额外数据图
* @param quality 图片质量
* @return 处理后的照片(动作:原始数据&jpeg图片&加密图片)
*/
vector<pair<string, vector<FaceFrame>>> encryptExtraImages(float quality = 70);
/**
* @brief encryptBestImage 加密最佳人脸图
* @param quality 图片质量
* @return 原始数据&jpeg图片&加密图片
*/
FaceFrame encryptBestImage(float quality = 70);
/**
* @brief signCollectionInfo 对CollectInfo签名
* @param param 额外参数 {"multipic_zfaceBlinkLiveness_video":"123123123123","multipic_LeftYawLiveness_video":"123123123123"}
* @return 签名加密数据
*/
string signCollectionInfo(string param);
/**
* @brief geneateBlob 生成报文blob
* @return 认证报文
*/
string geneateBlob();
/**
* @brief getContentSignature 获取ContentSig,RSA加密密钥
* @return 字符串
*/
string getContentSignature();
/**
* @brief release 数据清除
*/
void release();
protected:
/**
* @brief encryptImage 图像加密
* @param frame 帧数据
* @param quality 图片质量
* @return
*/
FaceFrame encryptImage(FaceFrame &frame, float quality = 70);
/**
* @brief imageRelease 图片释放
* @param frame 帧
*/
void imageRelease(FaceFrame &frame);
/**
* @brief generateCollectionInfo 生成CollectInfo信息
* @param param 外部生成生成CollectInfo
* @return 补充图片MD5数据后的CollectInfo
*/
string generateCollectionInfo(string param);
private:
/**
* @brief contentEncrypt 图片内容加密
*/
DTEncrypt contentEncrypt;
/**
* @brief behavelogEncrypt behavelog加密
*/
DTEncrypt behavelogEncrypt;
/**
* @brief bestImage 最佳人脸图
*/
FaceFrame bestImage;
/**
* @brief extraImages 额外数据
*/
vector<pair<string, vector<FaceFrame>>> extraImages;
/**
* @brief blobConfig 报文配置
*/
BlobConfig blobConfig;
/**
* @brief blobContentExtra 额外参数
*/
map<string, string> blobContentExtra;
};
}
#endif //BLOBPACKCONTROLLER_H
//
// Created on 2024/4/2.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#ifndef HARMONYFACEVERIFY_BLOBMODEL_H
#define HARMONYFACEVERIFY_BLOBMODEL_H
#include "dt_json11.hpp"
#include <string>
namespace dtf {
struct ImageTypeConstant {
static const int YUV;
static const int RGB;
static const int BGRA;
static const int RGBA;
static const int BGR;
};
struct BlobConstant {
static const std::string BLOB_VERSION;
static const std::string SUB_TYPE_PANO;
static const std::string BLOB_ELEM_TYPE_FACE;
static const std::string SUB_TYPE_VERSION;
static const std::string PUB_KEY_N;
static const std::string PUB_KEY_E;
};
struct BlobPackConstant {
static const std::string EXT_NAME;
};
#ifdef DT_REQUEST_BLOB
struct MetaConstant {
static const std::string VAL_TYPE_FACE;
static const std::string KEY_INVTP_TYPE;
static const std::string KEY_BIS_TOKEN;
static const std::string KEY_EXTRA_RETRY;
static const std::string KEY_EXTRA;
static const std::string KEY_DRAGONFLY;
static const std::string KEY_DRAGONFLY_PASS;
static const std::string KEY_PHOTINUS_VIDEO_OSS_NAME;
static const std::string KEY_PHOTINUS_METADATA_OSS_NAME;
static const std::string VAL_INVTP_TYPE_NORMAL;
// static constexpr int VAL_DRAGONFLY_PASS_SUCCESS = 1;
static constexpr int VAL_SERIALIZER_JSON = 1;
static constexpr int VAL_SERIALIZER_PB = 2;
//TS层传入的参数key
static const std::string PARAM_PHOTINUS_VIDEO_OSS_NAME;
static const std::string PARAM_PHOTINUS_METADATA_OSS_NAME;
static const std::string PARAM_BLOB_USE_NATIVE_SWITCH;
};
#endif
struct Point {
double x;
double y;
};
struct Rect {
double left;
double right;
double top;
double bottom;
Rect() {}
Rect(double left, double right, double top, double bottom) {
this->left = left;
this->right = right;
this->top = top;
this->bottom = bottom;
}
};
struct Image {
uint8_t *data = nullptr;
int rotation;
double width;
double height;
long len = 0;
int format;
bool encrypted = false;
std::string base64 = "";
std::string md5 = "";
};
#ifdef DT_REQUEST_BLOB
struct BlobMeta {
std::string type;
std::map<std::string,std::string> collectInfo;
std::map<std::string, int> score;
int serialize;
std::string invtp_type;
std::string bistoken;
std::map<std::string,std::string> extInfo;
};
struct BlobElem {
BlobElem(){}
std::string type;
std::string subType;
int idx;
std::string version;
std::string content;
};
#endif
} // namespace dtf
#endif //HARMONYFACEVERIFY_BLOBMODEL_H
//
// Created by CandleWen on 2023/7/24.
//
#ifndef VERIFY_DTENCRYPT_H
#define VERIFY_DTENCRYPT_H
#include <string>
using namespace std;
namespace dtf
{
/**
* AES & RSA 加密以及秘钥加密
* 人脸数据加密类
*/
class DTEncrypt
{
public:
/**
* RSA加密数据
* @param mod PK modulus
* @param exp PK exponent
* @param content 加密内容
* @param out 输出内容
* @param out_len 输出长度
*/
static void rsa_encrypt_content(const string &mod, const string &exp, const string &content,
unsigned char **out, size_t *out_len);
/**
* RSA加密数据,返回base64的字符串
* @param mod PK modulus
* @param exp PK exponent
* @param content 加密内容
*/
static string base64_rsa_encrypt_content(const string &mod, const string &exp, const string &content);
/**
* AES加密
* @param giv
* @param in 输入内容
* @param in_len 输入内容长度
* @param key key
* @param out 输出内容
* @param out_len 输出内容长度
*/
static void aes_encrypt(const string &giv, const unsigned char *in, size_t in_len, const string &key,
unsigned char **out, size_t *out_len, uint8_t *iv = 0);
/**
* AES解密
* @param giv
* @param in 输入内容
* @param in_len 输入内容长度
* @param key key
* @param out 输出内容
* @param out_len 输出内容长度
*/
static void aes_decrypt(const string &giv, const unsigned char *in, size_t in_len, const string &key,
unsigned char **out, size_t *out_len, uint8_t *iv = 0);
/**
* 初始化
* @param aes_key_len AES加密秘钥长度
* @param mod RSA公钥modulus
* @param exp RSA公钥exponent
*/
DTEncrypt(int aes_key_len, string mod, string exp);
DTEncrypt();
/**
* @brief init 重新初始化key
* @param aes_key_len key长度
* @param mod RSA公钥modulus
* @param exp RSA公钥exponent
*/
void init(int aes_key_len, string mod, string exp);
/**
* aes 加密 key
* @return
*/
string get_encrypt_key();
/**
* 对Content进行AES加密并返回Base64之后的加密字符串
* @param content 待加密内容
* @param content_len 待加密内容长度
* @return
*/
string base64_encrypt_content(const unsigned char *content, size_t content_len);
/**
* 对content内容进行AES加密
* @param content 加密内容
* @return base64之后的加密字符串
*/
string base64_encrypt_content(const string &content);
/**
* @brief DTEncrypt::encrypt_content 对content内容进行AES加密
* @param content
* @param content_len
* @param output_len
* @return
*/
unsigned char *encrypt_content(const unsigned char *content, size_t content_len, size_t &output_len);
/**
* 对加密且base64之后的字符串进行解密,并做base64返回
* @param encrypt_content 待解密字符串
* @return 解密之后base64内容
*/
string base64_decrypt_content(const string &encrypt_content);
private:
/**
* AES 加密秘钥
*/
string aes_key;
/**
* RSA 对 AES 加密后数据
*/
string encrypt_base64_key;
/**
* AES IV信息
*/
string giv;
};
}
#endif // VERIFY_DTENCRYPT_H
//
// Created on 2024/4/7.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#ifndef HARMONYFACEVERIFY_FACEBLOBTYPES_H
#define HARMONYFACEVERIFY_FACEBLOBTYPES_H
#include "BlobTypes.h"
namespace dtf {
struct FaceAttr {
Rect face_region;
float quality;
float confidence;
};
struct FaceInfo {
Rect rect;
std::vector<Point> points;
float confidence;
float quality;
std::string feature;
std::string feaVersion;
};
struct FaceFrame {
Image image;
Image jpegImage;
Image encryptImage;
FaceAttr attr;
std::map<std::string, std::string> extras;
};
#ifdef DT_REQUEST_BLOB
struct FaceBlobElem : public BlobElem {
std::vector<FaceInfo> face_infos;
std::string return_image; //不加密的返照图
};
struct FaceBlob {
std::string blob_version;
std::vector<FaceBlobElem> blob_elem;
};
struct FaceBlobContent {
FaceBlob blob;
BlobMeta meta;
};
struct FaceBlobContentResult {
FaceBlobContent blob;
std::vector<std::string> blob_content;
std::vector<std::string> return_image;
};
#endif
}
class FaceBlobTypes {
};
#endif //HARMONYFACEVERIFY_FACEBLOBTYPES_H
/* json11
*
* json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.
*
* The core object provided by the library is json11::Json. A Json object represents any JSON
* value: null, bool, number (int or double), string (std::string), array (std::vector), or
* object (std::map).
*
* Json objects act like values: they can be assigned, copied, moved, compared for equality or
* order, etc. There are also helper methods Json::dump, to serialize a Json to a string, and
* Json::parse (static) to parse a std::string as a Json object.
*
* Internally, the various types of Json object are represented by the JsonValue class
* hierarchy.
*
* A note on numbers - JSON specifies the syntax of number formatting but not its semantics,
* so some JSON implementations distinguish between integers and floating-point numbers, while
* some don't. In json11, we choose the latter. Because some JSON implementations (namely
* Javascript itself) treat all numbers as the same type, distinguishing the two leads
* to JSON that will be *silently* changed by a round-trip through those implementations.
* Dangerous! To avoid that risk, json11 stores all numbers as double internally, but also
* provides integer helpers.
*
* Fortunately, double-precision IEEE754 ('double') can precisely store any integer in the
* range +/-2^53, which includes every 'int' on most systems. (Timestamps often use int64
* or long long to avoid the Y2038K problem; a double storing microseconds since some epoch
* will be exact for +/- 275 years.)
*/
/* Copyright (c) 2013 Dropbox, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#pragma once
#include <string>
#include <vector>
#include <map>
#include <memory>
#include <initializer_list>
#ifdef _MSC_VER
#if _MSC_VER <= 1800 // VS 2013
#ifndef noexcept
#define noexcept throw()
#endif
#ifndef snprintf
#define snprintf _snprintf_s
#endif
#endif
#endif
namespace dtf {
enum JsonParse {
STANDARD, COMMENTS
};
class JsonValue;
class Json final {
public:
// Types
enum Type {
NUL, NUMBER, BOOL, STRING, ARRAY, OBJECT
};
// Array and object typedefs
typedef std::vector<Json> array;
typedef std::map<std::string, Json> object;
// Constructors for the various types of JSON value.
Json() noexcept; // NUL
Json(std::nullptr_t) noexcept; // NUL
Json(double value); // NUMBER
Json(int value); // NUMBER
Json(bool value); // BOOL
Json(const std::string &value); // STRING
Json(std::string &&value); // STRING
Json(const char * value); // STRING
Json(const array &values); // ARRAY
Json(array &&values); // ARRAY
Json(const object &values); // OBJECT
Json(object &&values); // OBJECT
// Implicit constructor: anything with a to_json() function.
template <class T, class = decltype(&T::to_json)>
Json(const T & t) : Json(t.to_json()) {}
// Implicit constructor: map-like objects (std::map, std::unordered_map, etc)
template <class M, typename std::enable_if<
std::is_constructible<std::string, decltype(std::declval<M>().begin()->first)>::value
&& std::is_constructible<Json, decltype(std::declval<M>().begin()->second)>::value,
int>::type = 0>
Json(const M & m) : Json(object(m.begin(), m.end())) {}
// Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc)
template <class V, typename std::enable_if<
std::is_constructible<Json, decltype(*std::declval<V>().begin())>::value,
int>::type = 0>
Json(const V & v) : Json(array(v.begin(), v.end())) {}
// This prevents Json(some_pointer) from accidentally producing a bool. Use
// Json(bool(some_pointer)) if that behavior is desired.
Json(void *) = delete;
// Accessors
Type type() const;
bool is_null() const { return type() == NUL; }
bool is_number() const { return type() == NUMBER; }
bool is_bool() const { return type() == BOOL; }
bool is_string() const { return type() == STRING; }
bool is_array() const { return type() == ARRAY; }
bool is_object() const { return type() == OBJECT; }
// Return the enclosed value if this is a number, 0 otherwise. Note that json11 does not
// distinguish between integer and non-integer numbers - number_value() and int_value()
// can both be applied to a NUMBER-typed object.
double number_value() const;
int int_value() const;
// Return the enclosed value if this is a boolean, false otherwise.
bool bool_value() const;
// Return the enclosed string if this is a string, "" otherwise.
const std::string &string_value() const;
// Return the enclosed std::vector if this is an array, or an empty vector otherwise.
const array &array_items() const;
// Return the enclosed std::map if this is an object, or an empty map otherwise.
const object &object_items() const;
// Return a reference to arr[i] if this is an array, Json() otherwise.
const Json & operator[](size_t i) const;
// Return a reference to obj[key] if this is an object, Json() otherwise.
const Json & operator[](const std::string &key) const;
// Serialize.
void dump(std::string &out) const;
std::string dump() const {
std::string out;
dump(out);
return out;
}
// Parse. If parse fails, return Json() and assign an error message to err.
static Json parse(const std::string & in,
std::string & err,
JsonParse strategy = JsonParse::STANDARD);
static Json parse(const char * in,
std::string & err,
JsonParse strategy = JsonParse::STANDARD) {
if (in) {
return parse(std::string(in), err, strategy);
} else {
err = "null input";
return nullptr;
}
}
// Parse multiple objects, concatenated or separated by whitespace
static std::vector<Json> parse_multi(
const std::string & in,
std::string::size_type & parser_stop_pos,
std::string & err,
JsonParse strategy = JsonParse::STANDARD);
static inline std::vector<Json> parse_multi(
const std::string & in,
std::string & err,
JsonParse strategy = JsonParse::STANDARD) {
std::string::size_type parser_stop_pos;
return parse_multi(in, parser_stop_pos, err, strategy);
}
bool operator== (const Json &rhs) const;
bool operator< (const Json &rhs) const;
bool operator!= (const Json &rhs) const { return !(*this == rhs); }
bool operator<= (const Json &rhs) const { return !(rhs < *this); }
bool operator> (const Json &rhs) const { return (rhs < *this); }
bool operator>= (const Json &rhs) const { return !(*this < rhs); }
/* has_shape(types, err)
*
* Return true if this is a JSON object and, for each item in types, has a field of
* the given type. If not, return false and set err to a descriptive message.
*/
typedef std::initializer_list<std::pair<std::string, Type>> shape;
bool has_shape(const shape & types, std::string & err) const;
private:
std::shared_ptr<JsonValue> m_ptr;
};
// Internal class hierarchy - JsonValue objects are not exposed to users of this API.
class JsonValue {
protected:
friend class Json;
friend class JsonInt;
friend class JsonDouble;
virtual Json::Type type() const = 0;
virtual bool equals(const JsonValue * other) const = 0;
virtual bool less(const JsonValue * other) const = 0;
virtual void dump(std::string &out) const = 0;
virtual double number_value() const;
virtual int int_value() const;
virtual bool bool_value() const;
virtual const std::string &string_value() const;
virtual const Json::array &array_items() const;
virtual const Json &operator[](size_t i) const;
virtual const Json::object &object_items() const;
virtual const Json &operator[](const std::string &key) const;
virtual ~JsonValue() {}
};
} // namespace dtf
//
// SecuritySession.h
// deviceiOS
//
// Created by Lingxuan on 2023/6/27.
// Copyright © 2023 security.net. All rights reserved.
//
#ifndef FaceGuardSession_h
#define FaceGuardSession_h
/**
* 设备指纹deviceToken
*/
@interface FaceGuardSession : NSObject
/**
* 获取Session操作的结果
*/
@property(atomic) int code;
/**
* 包含Session结果的字符串
*/
@property(copy, atomic) NSString *session;
@end
@interface FaceGuardToken : NSObject
/**
* 获取Session操作的结果
*/
@property(atomic) int code;
/**
* 包含token结果的字符串
*/
@property(copy, atomic) NSString *token;
@end
@interface FaceGuardSessionId : NSObject
/**
* 获取SessionID操作的结果
*/
@property(atomic) int code;
/**
* 包含Session结果的字符串
*/
@property(copy, atomic) NSString *sessionId;
@end
#endif /* FaceGuardSession_h */
//
// faceguard.h
// faceguard
//
// Created by Lingxuan on 2023/6/27.
// Copyright © 2023 security.net. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <faceguard/FaceGuardSession.h>
//! Project version number for faceguard.
FOUNDATION_EXPORT double faceguardVersionNumber;
//! Project version string for faceguard.
FOUNDATION_EXPORT const unsigned char faceguardVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <faceguard/PublicHeader.h>
@interface FaceGuardDevice
/**
* 设备指纹单例
*/
+ (FaceGuardDevice *)sharedInstance;
/**
* 设备指纹初始化函数
*/
- (void)initFG:(NSString *)userAppKey :(void (^)(int))initCallback;
/**
* 底层数据传输走IPv6
*/
- (void)initFGIPV6:(NSString *)userAppKey :(void (^)(int))initCallback;
// 带参数的初始化
- (void)initFG:(NSString *)userAppKey withOptions:(NSMutableDictionary *)options callback: (void (^)(int))initCallback;
/**
* 获取DeviceToken
*/
- (FaceGuardSession *) getSession;
- (FaceGuardSession *) getSession:(NSString *)bizID;
- (FaceGuardSessionId *)getSessionId;
- (FaceGuardToken *) getDeviceToken;
- (FaceGuardToken *) getDeviceToken:(NSString *)bizID;
/**
* 用户自定义上报数据
*/
- (void)reportUserData:(int)type :(NSString *)msg;
/**
* 在某些特殊时机上报,具体上报时机请联系 对接人员咨询
*/
- (void)reportMoment;
// 获取 SDK 版本号
- (NSString *) getVersion;
@end
framework module faceguard {
umbrella header "faceguard.h"
export *
module * { export * }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>Protect Device Security</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>DDA9.1</string>
<string>3B52.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>85F4.1</string>
<string>E174.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论