1,新增接入阿里云人脸认证SDK流程
2,接收及设置实名认证频次接口对接及逻辑处理 3,新增检测实名认证是否支持开启接口对接 4,新增检测certifyId是否完成认证接口对接 5,实现需实名认证的钥匙,认证完成后方可开锁的逻辑处理
This commit is contained in:
parent
69c6c3e1dd
commit
d7db12dba9
30
star_lock/aliyun_face_plugin/.gitignore
vendored
Normal file
30
star_lock/aliyun_face_plugin/.gitignore
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
migrate_working_dir/
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
#.vscode/
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
|
||||
/pubspec.lock
|
||||
**/doc/api/
|
||||
.dart_tool/
|
||||
.packages
|
||||
build/
|
||||
33
star_lock/aliyun_face_plugin/.metadata
Normal file
33
star_lock/aliyun_face_plugin/.metadata
Normal file
@ -0,0 +1,33 @@
|
||||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled.
|
||||
|
||||
version:
|
||||
revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
channel: stable
|
||||
|
||||
project_type: plugin
|
||||
|
||||
# Tracks metadata for the flutter migrate command
|
||||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
base_revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
- platform: android
|
||||
create_revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
base_revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
- platform: ios
|
||||
create_revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
base_revision: 6928314d505d2bb4777be05e45d7808a5aa91d2a
|
||||
|
||||
# User provided section
|
||||
|
||||
# List of Local paths (relative to this file) that should be
|
||||
# ignored by the migrate tool.
|
||||
#
|
||||
# Files that are not part of the templates will be ignored by default.
|
||||
unmanaged_files:
|
||||
- 'lib/main.dart'
|
||||
- 'ios/Runner.xcodeproj/project.pbxproj'
|
||||
7
star_lock/aliyun_face_plugin/CHANGELOG.md
Normal file
7
star_lock/aliyun_face_plugin/CHANGELOG.md
Normal file
@ -0,0 +1,7 @@
|
||||
## 2.1.2 - 20230401
|
||||
|
||||
* 初始版本。
|
||||
|
||||
## 2.3.5 - 20231011
|
||||
|
||||
* 修复 iOS SDK xcode 15 的兼容问题。
|
||||
26
star_lock/aliyun_face_plugin/LICENSE
Normal file
26
star_lock/aliyun_face_plugin/LICENSE
Normal file
@ -0,0 +1,26 @@
|
||||
Copyright (c) 2022-present, Aliyun, Inc. All rights reserved.
|
||||
|
||||
Most source code in aliyun_face_plugin are MIT licensed.
|
||||
|
||||
A copy of the MIT License is included in this file.
|
||||
|
||||
Terms of the MIT License
|
||||
========================
|
||||
|
||||
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.
|
||||
7
star_lock/aliyun_face_plugin/README.md
Normal file
7
star_lock/aliyun_face_plugin/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# 阿里云金融级实人认证 flutter 插件
|
||||
|
||||
## Getting Started
|
||||
|
||||
该工程是阿里云金融级实人认证的 flutter 插件,在她的帮助下,您的业务 App(Android / iOS) 可以更方便的使用阿里云的刷脸认证服务。
|
||||
|
||||
具体使用方式,请参考[线上接入文档](https://yuque.antfin-inc.com/wlkqsw/cblvmq/gih2d0)。
|
||||
4
star_lock/aliyun_face_plugin/analysis_options.yaml
Normal file
4
star_lock/aliyun_face_plugin/analysis_options.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
|
||||
# Additional information about this file can be found at
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
9
star_lock/aliyun_face_plugin/android/.gitignore
vendored
Normal file
9
star_lock/aliyun_face_plugin/android/.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/.idea/workspace.xml
|
||||
/.idea/libraries
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.cxx
|
||||
58
star_lock/aliyun_face_plugin/android/build.gradle
Normal file
58
star_lock/aliyun_face_plugin/android/build.gradle
Normal file
@ -0,0 +1,58 @@
|
||||
group 'com.aliyun.face.aliyun_face_plugin'
|
||||
version '1.0'
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.1.0'
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.allprojects {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
|
||||
flatDir {
|
||||
dirs 'libs'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 18
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
// 实人认证SDK
|
||||
implementation(name: 'aliyun-face-v2.1.2-20221027112723', ext: 'aar')
|
||||
implementation(name: 'aliyun-facelanguage-v2.1.2-20221027112723', ext: 'aar')
|
||||
implementation(name: 'aliyun-ocr-v2.1.2-20221027112723', ext: 'aar')
|
||||
implementation(name: 'aliyun-photinus-v2.1.2-20221027112723', ext: 'aar')
|
||||
implementation(name: 'aliyun-wishverify-v2.1.2-20221027112723', ext: 'aar')
|
||||
implementation(name: 'Android-AliyunFaceGuard-10033', ext: 'aar')
|
||||
implementation(name: 'APSecuritySDK-DeepSec-7.0.1.20220813.jiagu', ext: 'aar')
|
||||
|
||||
// 实人认证三方依赖库
|
||||
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
|
||||
implementation 'com.squareup.okio:okio:1.14.0'
|
||||
implementation 'com.alibaba:fastjson:1.2.83_noneautotype'
|
||||
implementation 'com.aliyun.dpa:oss-android-sdk:2.9.11'
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2
star_lock/aliyun_face_plugin/android/settings.gradle
Normal file
2
star_lock/aliyun_face_plugin/android/settings.gradle
Normal file
@ -0,0 +1,2 @@
|
||||
rootProject.name = 'aliyun_face_plugin'
|
||||
include ':aliyunface'
|
||||
@ -0,0 +1,3 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.aliyun.face.aliyun_face_plugin">
|
||||
</manifest>
|
||||
@ -0,0 +1,79 @@
|
||||
package com.aliyun.face.aliyun_face_plugin;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import java.util.Map;
|
||||
import android.content.Context;
|
||||
|
||||
import io.flutter.embedding.engine.plugins.FlutterPlugin;
|
||||
import io.flutter.plugin.common.MethodCall;
|
||||
import io.flutter.plugin.common.MethodChannel;
|
||||
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
|
||||
import io.flutter.plugin.common.MethodChannel.Result;
|
||||
import io.flutter.Log;
|
||||
|
||||
import com.alipay.face.api.ZIMCallback;
|
||||
import com.alipay.face.api.ZIMFacade;
|
||||
import com.alipay.face.api.ZIMFacadeBuilder;
|
||||
import com.alipay.face.api.ZIMResponse;
|
||||
|
||||
/** AliyunFacePlugin */
|
||||
public class AliyunFacePlugin implements FlutterPlugin, MethodCallHandler {
|
||||
/// The MethodChannel that will the communication between Flutter and native Android
|
||||
///
|
||||
/// This local reference serves to register the plugin with the Flutter Engine and unregister it
|
||||
/// when the Flutter Engine is detached from the Activity
|
||||
private MethodChannel channel;
|
||||
private Context mContext;
|
||||
private static String TAG = "AliyunFace";
|
||||
|
||||
@Override
|
||||
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
|
||||
channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "aliyun_face_plugin");
|
||||
channel.setMethodCallHandler(this);
|
||||
mContext = flutterPluginBinding.getApplicationContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
|
||||
if (call.method.equals("getPlatformVersion")) {
|
||||
result.success("android " + android.os.Build.VERSION.RELEASE);
|
||||
} else if (call.method.equals("init")) {
|
||||
Log.d(TAG, "enter init.");
|
||||
ZIMFacade.install(mContext);
|
||||
} else if (call.method.equals("getMetaInfos")) {
|
||||
Log.d(TAG, "enter getMetaInfos.");
|
||||
String metaInfo = ZIMFacade.getMetaInfos(mContext);
|
||||
result.success(metaInfo);
|
||||
} else if (call.method.equals("verify")) {
|
||||
Log.d(TAG, "enter verify.");
|
||||
Map<String, String> params = call.arguments();
|
||||
String certifyId = params.get("certifyId");
|
||||
if (certifyId == null || certifyId.isEmpty()) {
|
||||
Log.e(TAG, "certifyId is null");
|
||||
return;
|
||||
}
|
||||
|
||||
ZIMFacade zimFacade = ZIMFacadeBuilder.create(mContext);
|
||||
zimFacade.verify(certifyId, false, new ZIMCallback() {
|
||||
@Override
|
||||
public boolean response(ZIMResponse response) {
|
||||
if (null != response && 1000 == response.code) {
|
||||
Log.d(TAG, "face verify success.");
|
||||
} else {
|
||||
Log.e(TAG, "face verify error.");
|
||||
}
|
||||
|
||||
result.success(response.code + "," + response.reason);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
result.notImplemented();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
|
||||
channel.setMethodCallHandler(null);
|
||||
}
|
||||
}
|
||||
38
star_lock/aliyun_face_plugin/ios/.gitignore
vendored
Normal file
38
star_lock/aliyun_face_plugin/ios/.gitignore
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
.idea/
|
||||
.vagrant/
|
||||
.sconsign.dblite
|
||||
.svn/
|
||||
|
||||
.DS_Store
|
||||
*.swp
|
||||
profile
|
||||
|
||||
DerivedData/
|
||||
build/
|
||||
GeneratedPluginRegistrant.h
|
||||
GeneratedPluginRegistrant.m
|
||||
|
||||
.generated/
|
||||
|
||||
*.pbxuser
|
||||
*.mode1v3
|
||||
*.mode2v3
|
||||
*.perspectivev3
|
||||
|
||||
!default.pbxuser
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.perspectivev3
|
||||
|
||||
xcuserdata
|
||||
|
||||
*.moved-aside
|
||||
|
||||
*.pyc
|
||||
*sync/
|
||||
Icon?
|
||||
.tags*
|
||||
|
||||
/Flutter/Generated.xcconfig
|
||||
/Flutter/ephemeral/
|
||||
/Flutter/flutter_export_environment.sh
|
||||
0
star_lock/aliyun_face_plugin/ios/Assets/.gitkeep
Normal file
0
star_lock/aliyun_face_plugin/ios/Assets/.gitkeep
Normal file
@ -0,0 +1,4 @@
|
||||
#import <Flutter/Flutter.h>
|
||||
|
||||
@interface AliyunFacePlugin : NSObject<FlutterPlugin>
|
||||
@end
|
||||
112
star_lock/aliyun_face_plugin/ios/Classes/AliyunFacePlugin.m
Normal file
112
star_lock/aliyun_face_plugin/ios/Classes/AliyunFacePlugin.m
Normal file
@ -0,0 +1,112 @@
|
||||
#import "AliyunFacePlugin.h"
|
||||
#import <AliyunFaceAuthFacade/AliyunFaceAuthFacade.h>
|
||||
|
||||
@implementation AliyunFacePlugin
|
||||
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
|
||||
FlutterMethodChannel* channel = [FlutterMethodChannel
|
||||
methodChannelWithName:@"aliyun_face_plugin"
|
||||
binaryMessenger:[registrar messenger]];
|
||||
AliyunFacePlugin* instance = [[AliyunFacePlugin alloc] init];
|
||||
[registrar addMethodCallDelegate:instance channel:channel];
|
||||
}
|
||||
|
||||
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
|
||||
static Boolean bInit = false;
|
||||
|
||||
if ([@"getPlatformVersion" isEqualToString:call.method]) {
|
||||
NSLog(@"enter getPlatformVersion");
|
||||
result([@"" stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ([@"init" isEqualToString:call.method]) {
|
||||
NSLog(@"enter init");
|
||||
|
||||
if (!bInit) {
|
||||
bInit = true;
|
||||
[AliyunFaceAuthFacade initSDK];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ([@"getMetaInfos" isEqualToString:call.method]) {
|
||||
NSLog(@"enter getMetaInfos");
|
||||
|
||||
if (!bInit) {
|
||||
bInit = true;
|
||||
[AliyunFaceAuthFacade initSDK];
|
||||
}
|
||||
|
||||
NSDictionary *metaInfo = [AliyunFaceAuthFacade getMetaInfo];
|
||||
NSString *info = [self convertToJsonData: metaInfo];
|
||||
result([@"" stringByAppendingString:info]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ([@"verify" isEqualToString:call.method]) {
|
||||
NSLog(@"enter verify");
|
||||
|
||||
if (!bInit) {
|
||||
bInit = true;
|
||||
[AliyunFaceAuthFacade initSDK];
|
||||
}
|
||||
|
||||
id arguments = call.arguments;
|
||||
NSString *certifyId = [arguments objectForKey:@"certifyId"];
|
||||
if (certifyId == nil || [certifyId length] == 0) {
|
||||
NSLog(@"certifyId is nil.");
|
||||
return;
|
||||
}
|
||||
NSLog(@"certifyId: %@.", certifyId);
|
||||
|
||||
NSMutableDictionary *extParams = [NSMutableDictionary new];
|
||||
UIViewController *vc = [self viewControllerWithWindow:nil];
|
||||
[extParams setValue:vc forKey:@"currentCtr"]; // 必须要的参数
|
||||
|
||||
[AliyunFaceAuthFacade verifyWith:certifyId
|
||||
extParams:extParams
|
||||
onCompletion:^(ZIMResponse *response) {
|
||||
result([NSString stringWithFormat:@"%lu,%@", response.code, response.reason]);
|
||||
}];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
result(FlutterMethodNotImplemented);
|
||||
}
|
||||
|
||||
#pragma mark - 辅助方法
|
||||
|
||||
- (NSString *)convertToJsonData:(NSDictionary *) dict {
|
||||
NSError *error;
|
||||
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
|
||||
options:NSJSONWritingSortedKeys
|
||||
error:&error];
|
||||
NSString *jsonString;
|
||||
if (!jsonData) {
|
||||
NSLog(@"Error: %@", error);
|
||||
} else {
|
||||
jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
return jsonString;
|
||||
}
|
||||
|
||||
- (UIViewController *) viewControllerWithWindow:(UIWindow *)window {
|
||||
UIWindow *windowToUse = window;
|
||||
if(windowToUse == nil) {
|
||||
for (UIWindow *windowF in [UIApplication sharedApplication].windows) {
|
||||
if (windowF.isKeyWindow) {
|
||||
windowToUse = windowF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
UIViewController *topViewController = windowToUse.rootViewController;
|
||||
while (topViewController.presentingViewController) {
|
||||
topViewController = topViewController.presentingViewController;
|
||||
}
|
||||
return topViewController;
|
||||
}
|
||||
|
||||
@end
|
||||
Binary file not shown.
@ -0,0 +1,69 @@
|
||||
/*
|
||||
en.strings
|
||||
APBToygerFacade
|
||||
|
||||
Created by shouyi.www on 2017/6/1.
|
||||
Copyright © 2017年 DTF. All rights reserved.
|
||||
*/
|
||||
|
||||
"APBToygerFacade:取消"="Cancel";
|
||||
"APBToygerFacade:再试一次"="Try Again";
|
||||
"APBToygerFacade:退出"="Quit";
|
||||
"APBToygerFacade:确定"="OK";
|
||||
"APBToygerFacade:继续"="Continue";
|
||||
"APBToygerFacade:我知道了"="Got it";
|
||||
"APBToygerFacade:其他登录方式"="Another login method";
|
||||
"APBToygerFacade:刷脸失败"="Face scan failed";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="Face scan not supported on your device";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="Face scan not supported on your device system";
|
||||
"APBToygerFacade:无法启动相机"="No camera permission";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="Please allow to access your camera in \"Settings\"-\"Privacy\"-\"Camera\"";
|
||||
"APBToygerFacade:立即开启"="OK";
|
||||
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Face scan is only available on iOS8 or above";
|
||||
"APBToygerFacade:系统错误"="System error";
|
||||
"APBToygerFacade:确定退出吗?"="Are you sure to quit face scan?";
|
||||
"APBToygerFacade:露个脸就能通过"="You can succeed by simply showing your face";
|
||||
"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:本次操作失败"="Sorry, face scan failed";
|
||||
"APBToygerFacade:网络不给力"="Network connection failed";
|
||||
"APBToygerFacade:登录中断"="Login interrupted";
|
||||
"APBToygerFacade:验证中断"="Face scan interrupted";
|
||||
|
||||
|
||||
"APBToygerFacade:刷脸验证"="Face Scan";
|
||||
"APBToygerFacade:请把脸放入框内保持不动"="Put your face into the frame";
|
||||
"APBToygerFacade:靠近一点"="Move closer";
|
||||
"APBToygerFacade:没有检测到脸"="No face";
|
||||
"APBToygerFacade:再清晰一点"="Face not clear";
|
||||
"APBToygerFacade:脸部亮一点"="More light";
|
||||
"APBToygerFacade:请正对手机"="No face";
|
||||
"APBToygerFacade:把脸移入圈内"="No face";
|
||||
"APBToygerFacade:离远一点"="Move farther";
|
||||
"APBToygerFacade:请保持不动"="Stay still";
|
||||
"APBToygerFacade:请注视屏幕"="Open your eyes";
|
||||
"APBToygerFacade:眨眨眼"="Blink";
|
||||
"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
|
||||
|
||||
"APBToygerFacade:选择其他验证方式"="Use a different verification method";
|
||||
"APBToygerFacade:拿起手机眨眨眼"="Blink";
|
||||
"APBToygerFacade:拿起手机向左摇头"="Turn Head Left";
|
||||
"APBToygerFacade:拿起手机向右摇头"="Turn Head Right";
|
||||
"APBToygerFacade:向左摇头"="Turn Head Left";
|
||||
"APBToygerFacade:向右摇头"="Turn Head Right";
|
||||
|
||||
|
||||
"APBToygerFacade:正在处理"="Processing";
|
||||
"APBToygerFacade:首次使用,请开通刷脸"="For the first time use, please enable Face Scan";
|
||||
"APBToygerFacade:立即开通"="Enable";
|
||||
"APBToygerFacade:下次再说"="Later";
|
||||
|
||||
"APBToygerFacade:请把手机正对面部"="Face straight at the phone";
|
||||
"APBToygerFacade:即将开始人脸检测"="Get ready for face recognition";
|
||||
|
||||
"APBToygerFacade:没有认出你"="Face scan failed";
|
||||
"APBToygerFacade:未能识别人脸"="Face not detected";
|
||||
"APBToygerFacade:人脸检测中"="Face Scan";
|
||||
"APBToygerFacade:刷脸失败次数过多,请稍后再试"="Too many failed attempts, please try again later";
|
||||
"APBToygerFacade:请保持单人操作"=" ";
|
||||
@ -0,0 +1,60 @@
|
||||
"APBToygerFacade:取消"="Batalkan";
|
||||
"APBToygerFacade:再试一次"="Harap coba lagi";
|
||||
"APBToygerFacade:退出"="Keluar";
|
||||
"APBToygerFacade:确定"="OK";
|
||||
"APBToygerFacade:继续"="Lanjutkan";
|
||||
"APBToygerFacade:我知道了"="OK";
|
||||
"APBToygerFacade:其他登录方式"="Ubah Metode Logon";
|
||||
"APBToygerFacade:刷脸失败"="Pengenalan wajah gagal";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="Perangkat Anda tidak mendukung pengenalan wajah";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="Sistem saat ini tidak mendukung pengenalan wajah";
|
||||
"APBToygerFacade:无法启动相机"="Tidak Memiliki Izin Akses Kamera";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="Buka Pengaturan > Privasi > Kamera dan izinkan akses";
|
||||
"APBToygerFacade:立即开启"="OK";
|
||||
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="Hanya iOS 7 dan setelahnya yang mendukung pengenalan wajah";
|
||||
"APBToygerFacade:系统错误"="Terjadi Kesalahan Sistem";
|
||||
"APBToygerFacade:确定退出吗?"="Apakah Anda yakin ingin keluar?";
|
||||
"APBToygerFacade:露个脸就能通过"="Anda hanya perlu memperlihatkan wajah Anda";
|
||||
"APBToygerFacade:操作超时"="Waktu operasi habis";
|
||||
"APBToygerFacade:正对手机,更容易成功"="Arahkan wajah lurus menghadap ponsel untuk membuat wajah Anda lebih mudah dipindai";
|
||||
"APBToygerFacade:本次操作失败"="Operasi gagal";
|
||||
"APBToygerFacade:网络不给力"="Kondisi jaringan tidak memenuhi persyaratan";
|
||||
"APBToygerFacade:登录中断"="Logon Terganggu";
|
||||
"APBToygerFacade:验证中断"="Verifikasi terputus";
|
||||
|
||||
|
||||
"APBToygerFacade:刷脸验证"="Verifikasi dengan Pengenalan Wajah";
|
||||
"APBToygerFacade:请把脸放入框内保持不动"="Posisikan wajah Anda di dalam bingkai dan jangan bergerak";
|
||||
"APBToygerFacade:靠近一点"="Harap dekatkan wajah";
|
||||
"APBToygerFacade:没有检测到脸"="Tidak ada wajah terdeteksi";
|
||||
"APBToygerFacade:再清晰一点"="Perjelas wajah Anda";
|
||||
"APBToygerFacade:脸部亮一点"="Terangi wajah Anda";
|
||||
"APBToygerFacade:请正对手机"="Arahkan wajah lurus menghadap ponsel";
|
||||
"APBToygerFacade:请露出正脸"="Tunjukkan bagian depan wajah Anda";
|
||||
"APBToygerFacade:把脸移入圈内"="Posisikan wajah pada lingkaran";
|
||||
"APBToygerFacade:离远一点"="Harap jauhkan wajah";
|
||||
"APBToygerFacade:请保持不动"="Tetap tenang";
|
||||
"APBToygerFacade:请注视屏幕"="Lihat layar";
|
||||
"APBToygerFacade:眨眨眼"="Harap kedipkan mata";
|
||||
"APBToygerFacade:蚂蚁佐罗提供技术支持"="";
|
||||
|
||||
"APBToygerFacade:选择其他验证方式"="Ubah Metode Verifikasi";
|
||||
"APBToygerFacade:拿起手机眨眨眼"="Harap kedipkan mata";
|
||||
"APBToygerFacade:拿起手机向左摇头"="Harap menoleh ke kiri";
|
||||
"APBToygerFacade:拿起手机向右摇头"="Harap menoleh ke kanan";
|
||||
"APBToygerFacade:向左摇头"="Harap menoleh ke kiri";
|
||||
"APBToygerFacade:向右摇头"="Harap menoleh ke kanan";
|
||||
|
||||
"APBToygerFacade:正在处理"="Memproses";
|
||||
"APBToygerFacade:首次使用,请开通刷脸"="Aktifkan pengenalan wajah untuk melanjutkan";
|
||||
"APBToygerFacade:立即开通"="Aktifkan";
|
||||
"APBToygerFacade:下次再说"="Lain Kali";
|
||||
|
||||
"APBToygerFacade:请把手机正对面部"="Arahkan wajah lurus menghadap ponsel";
|
||||
"APBToygerFacade:即将开始人脸检测"="Memulai pengenalan wajah";
|
||||
|
||||
"APBToygerFacade:没有认出你"="Pengenalan wajah gagal";
|
||||
"APBToygerFacade:未能识别人脸"="Tidak ada wajah terdeteksi";
|
||||
"APBToygerFacade:人脸检测中"="Pengenalan wajah dalam proses";
|
||||
"APBToygerFacade:刷脸失败次数过多,请稍后再试"="Pengenalan wajah terlalu sering dilakukan. Harap coba lagi nanti";
|
||||
"APBToygerFacade:请保持单人操作"=" ";
|
||||
@ -0,0 +1,60 @@
|
||||
"APBToygerFacade:取消"="キャンセル";
|
||||
"APBToygerFacade:再试一次"="もう一度お試しください";
|
||||
"APBToygerFacade:退出"="終了";
|
||||
"APBToygerFacade:确定"="OK";
|
||||
"APBToygerFacade:继续"="続行";
|
||||
"APBToygerFacade:我知道了"="OK";
|
||||
"APBToygerFacade:其他登录方式"="ログイン方法を切り替え";
|
||||
"APBToygerFacade:刷脸失败"="顔を認識できませんでした";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="お使いのデバイスは顔認識をサポートしていません";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="顔認識をサポートしていないシステムです";
|
||||
"APBToygerFacade:无法启动相机"="カメラにアクセスできません";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="[設定] > [プライバシー] > [カメラ] に移動し、アクセスを許可してください";
|
||||
"APBToygerFacade:立即开启"="OK";
|
||||
"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:刷脸失败次数过多,请稍后再试"="顔認識が頻繁に実行されています。後でもう一度やり直してください";
|
||||
"APBToygerFacade:请保持单人操作"=" ";
|
||||
@ -0,0 +1,61 @@
|
||||
"APBToygerFacade:取消"="취소";
|
||||
"APBToygerFacade:再试一次"="다시 시도하세요";
|
||||
"APBToygerFacade:退出"="종료";
|
||||
"APBToygerFacade:确定"="확인";
|
||||
"APBToygerFacade:继续"="계속";
|
||||
"APBToygerFacade:我知道了"="확인";
|
||||
"APBToygerFacade:其他登录方式"="로그온 방법 전환";
|
||||
"APBToygerFacade:刷脸失败"="안면 인식에 실패했습니다";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="귀하의 디바이스는 안면 인식을 지원하지 않습니다";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="현재 시스템은 안면 인식을 지원하지 않습니다";
|
||||
"APBToygerFacade:无法启动相机"="카메라 권한이 없습니다";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="설정 > 개인 > 카메라에서 접근 권한을 부여하십시오";
|
||||
"APBToygerFacade:立即开启"="OK";
|
||||
"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:刷脸失败次数过多,请稍后再试"="안면 인식이 연속으로 실행되었습니다. 나중에 다시 시도하세요";
|
||||
"APBToygerFacade:请保持单人操作"=" ";
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
/*
|
||||
zh-HK.strings
|
||||
APBToygerFacade
|
||||
|
||||
Created by shouyi.www on 2017/6/1.
|
||||
Copyright © 2017年 DTF. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
"APBToygerFacade:取消"="取消";
|
||||
"APBToygerFacade:再试一次"="再試一次";
|
||||
"APBToygerFacade:退出"="退出";
|
||||
"APBToygerFacade:确定"="確定";
|
||||
"APBToygerFacade:继续"="继续";
|
||||
"APBToygerFacade:我知道了"="我知道了";
|
||||
"APBToygerFacade:其他登录方式"="其他登录方式";
|
||||
"APBToygerFacade:刷脸失败"="刷臉失敗";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="目前系統不支援刷臉";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="目前設備不支援刷臉";
|
||||
"APBToygerFacade:无法启动相机"="無法啟動相機";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="請到“設置-隱私-相機”開啓權限";
|
||||
"APBToygerFacade:立即开启"="開通權限";
|
||||
"APBToygerFacade:刷脸仅在iOS7及以上系统可用"="刷脸仅在iOS7及以上系统可用";
|
||||
"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:刷脸失败次数过多,请稍后再试"="刷臉失敗次數過多,請稍後再試";
|
||||
"APBToygerFacade:请保持单人操作"="請保持單人操作";
|
||||
@ -0,0 +1,69 @@
|
||||
/*
|
||||
zh-Hans.strings
|
||||
APBToygerFacade
|
||||
|
||||
Created by shouyi.www on 2017/6/1.
|
||||
Copyright © 2017年 DTF. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
"APBToygerFacade:取消"="取消";
|
||||
"APBToygerFacade:再试一次"="再试一次";
|
||||
"APBToygerFacade:退出"="退出";
|
||||
"APBToygerFacade:确定"="确定";
|
||||
"APBToygerFacade:继续"="继续";
|
||||
"APBToygerFacade:我知道了"="我知道了";
|
||||
"APBToygerFacade:其他登录方式"="其他登录方式";
|
||||
"APBToygerFacade:刷脸失败"="刷脸失败";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="当前设备不支持刷脸";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="当前系统不支持刷脸";
|
||||
"APBToygerFacade:无法启动相机"="无法启动相机";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="请到“设置-隐私-相机”开启权限";
|
||||
"APBToygerFacade:立即开启"="立即开启";
|
||||
"APBToygerFacade:刷脸仅在iOS8及以上版本可用"="刷脸仅在iOS8及以上版本可用";
|
||||
"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:刷脸失败次数过多,请稍后再试"="刷脸失败次数过多,请稍后再试";
|
||||
"APBToygerFacade:请保持单人操作"="请保持单人操作";
|
||||
@ -0,0 +1,69 @@
|
||||
/*
|
||||
zh-Hant.strings
|
||||
APBToygerFacade
|
||||
|
||||
Created by shouyi.www on 2017/6/1.
|
||||
Copyright © 2017年 DTF. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
"APBToygerFacade:取消"="取消";
|
||||
"APBToygerFacade:再试一次"="再試一次";
|
||||
"APBToygerFacade:退出"="退出";
|
||||
"APBToygerFacade:确定"="確定";
|
||||
"APBToygerFacade:继续"="繼續";
|
||||
"APBToygerFacade:我知道了"="我知道了";
|
||||
"APBToygerFacade:其他登录方式"="其他登入方式";
|
||||
"APBToygerFacade:刷脸失败"="刷臉失敗";
|
||||
"APBToygerFacade:当前设备不支持刷脸"="目前設備不支援刷臉服務";
|
||||
"APBToygerFacade:当前系统不支持刷脸"="当前系统不支持刷脸";
|
||||
"APBToygerFacade:无法启动相机"="無法啟動相機";
|
||||
"APBToygerFacade:请到\“设置-隐私-相机\”开启权限"="請到“設置-隱私-相機”開啓權限";
|
||||
"APBToygerFacade:立即开启"="開通權限";
|
||||
"APBToygerFacade:刷脸仅在iOS8及以上系统可用"="刷脸仅在iOS8及以上系统可用";
|
||||
"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:刷脸失败次数过多,请稍后再试"="刷臉失敗次數過多,請稍後再試";
|
||||
"APBToygerFacade:请保持单人操作"="請保持單人操作";
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,76 @@
|
||||
//
|
||||
// APFBaseTask.h
|
||||
// APFaceDetectBiz
|
||||
//
|
||||
// Created by 晗羽 on 8/25/16.
|
||||
// Copyright © 2016 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <BioAuthEngine/IBioAuthTask.h>
|
||||
#import <BioAuthEngine/APBTaskContext.h>
|
||||
#import <BioAuthEngine/APBLogger.h>
|
||||
#import <BioAuthEngine/AFEAlertView.h>
|
||||
#import <APBToygerFacade/APBToygerUtils.h>
|
||||
#import <BioAuthEngine/APBToygerRemoteConfig.h>
|
||||
#import <BioAuthEngine/APBToygerBehavlogManager.h>
|
||||
//#import "APBToygerDataCenter.h"
|
||||
#import <BioAuthEngine/BioAuthCommonSetting.h>
|
||||
#import <APBToygerFacade/APBToygerViewController.h>
|
||||
|
||||
@class DTFLogMonitor,APBToygerDataCenter;
|
||||
|
||||
typedef void (^APFAlertExtraAction)();
|
||||
|
||||
@interface APBToygerBaseTask : NSObject <IBioAuthTask>
|
||||
|
||||
//协议定义的属性
|
||||
@property(nonatomic, copy)NSString *taskName; //任务名
|
||||
@property(nonatomic, strong)APBTaskContext *context; //任务数据
|
||||
@property(nonatomic, weak)NSMutableDictionary *pipeInfo; //共享数据
|
||||
//公用属性
|
||||
@property(nonatomic, weak)UIViewController *parentViewController; //父viewController
|
||||
@property(nonatomic, weak)APBToygerViewController *currentViewController; //当前viewController
|
||||
@property(nonatomic, weak)UIView *currentView; //当前显示的界面
|
||||
@property(nonatomic, copy)commandBlock bioCommandBlock; //对框架进行操作的block
|
||||
@property(nonatomic, strong)APBToygerRemoteConfig * bisConfig; //bis下放的配置参数
|
||||
@property(nonatomic, strong)APBToygerDataCenter * dataCenter; //行为日志
|
||||
@property(nonatomic, copy)NSString *bisToken; //bisToken
|
||||
@property(nonatomic, assign)NSInteger currentRetryCnt; //当前重试次数
|
||||
@property(nonatomic, assign)BOOL soundStatus; //当前声音状态
|
||||
//@property(nonatomic, assign)BOOL isLoginMode; //当前场景是否为登录场景
|
||||
@property(nonatomic, assign)BOOL isMYBank; //是否是网商银行
|
||||
@property(nonatomic, strong)DTFLogMonitor *monitor; //埋点
|
||||
|
||||
- (void)exitWithResult:(APBResultType)result failReason:(NSString *)failReason retCodeSub:(NSString *)retCodeSub retMessageSub:(NSString *)retMessageSub;
|
||||
|
||||
- (void)eventQuitWithCompletionCallback:(BioAuthExecCallback)callback;
|
||||
/**
|
||||
* 用户选择重试
|
||||
*/
|
||||
- (void)handleRetryActionWithScene:(NSString *)scene
|
||||
buttonTitle:(NSString *)title
|
||||
extAction:(APFAlertExtraAction)action;
|
||||
|
||||
/**
|
||||
* 用户选择退出
|
||||
*/
|
||||
- (void)handleExitActionWithScene:(NSString *)scene
|
||||
buttonTitle:(NSString *)title
|
||||
exitReason:(APBResultType)reason
|
||||
extAction:(APFAlertExtraAction)action;
|
||||
|
||||
/**
|
||||
* 用户选择继续
|
||||
*/
|
||||
- (void)handleContinueActionWithScene:(NSString *)scene
|
||||
buttonTitle:(NSString *)title
|
||||
extaction:(APFAlertExtraAction)action;
|
||||
|
||||
/**
|
||||
* 消除VC的方式,加菲和樱桃不同
|
||||
*/
|
||||
- (void)dismissViewControllerAnimated: (BOOL)flag completion:(void (^ __nullable)(void))completion;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,23 @@
|
||||
//
|
||||
// APFCherryDetectTask.h
|
||||
// APBToygerFacade
|
||||
//
|
||||
// Created by richard on 01/02/2018.
|
||||
// Copyright © 2018 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <BioAuthEngine/AFEStatusBar.h>
|
||||
#import <APBToygerFacade/APBToygerBaseTask.h>
|
||||
#import <BioAuthEngine/BioAuthEngine.h>
|
||||
#import <DTFUtility/CameraService.h>
|
||||
|
||||
@interface APBToygerCherryDetectTask : APBToygerBaseTask <DTFCameraServiceDelegate, DTFFaceViewDelegate, ToygerServiceInstanceDelegate>
|
||||
|
||||
@property (nonatomic, assign) BOOL photinusFlags;
|
||||
@property (nonatomic, strong) DTFCameraService *cameraService;
|
||||
@property (nonatomic, strong) id instance; //Toyger对象
|
||||
|
||||
- (void)onButtonCancel;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,26 @@
|
||||
//
|
||||
// APFCherryUploadTask.h
|
||||
// APFaceDetectBiz
|
||||
//
|
||||
// Created by yukun.tyk on 28/11/2016.
|
||||
// Copyright © 2016 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <APBToygerFacade/APBToygerUploadTask.h>
|
||||
#import <BioAuthEngine/APBToygerDataCenter.h>
|
||||
|
||||
typedef NS_ENUM(NSInteger, APBToygerRemoteCommand)
|
||||
{
|
||||
APBToyger_REMOTE_COMMAND_PASS = 1001, //比对通过
|
||||
APBToyger_REMOTE_COMMAND_CONTINUE = 1002, //需要继续采集
|
||||
APBToyger_REMOTE_COMMAND_FAIL = 2001, //比对失败
|
||||
APBToyger_REMOTE_COMMAND_RETRY = 2002, //需要重试
|
||||
};
|
||||
|
||||
|
||||
@interface APBToygerCherryUploadTask : APBToygerUploadTask <APBToygerDataCenterDelegate>
|
||||
|
||||
- (APBToygerRemoteCommand)remoteCommandFromString:(NSString *)code;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,36 @@
|
||||
//
|
||||
// APFaceFacade.h
|
||||
// APFaceDetectBiz
|
||||
//
|
||||
// Created by 晗羽 on 8/25/16.
|
||||
// Copyright © 2016 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <BioAuthEngine/IBioAuthFactor.h>
|
||||
|
||||
@interface APBToygerFacade : NSObject <IBioAuthFactor>
|
||||
|
||||
+(void)setTokenid:(NSString*)info;
|
||||
+(NSString*)getTokenid;
|
||||
|
||||
@end
|
||||
|
||||
#import <APBToygerFacade/APBToygerCherryDetectTask.h>
|
||||
#import <APBToygerFacade/APBToygerBaseTask.h>
|
||||
#import <APBToygerFacade/APBToygerPresentTask.h>
|
||||
#import <APBToygerFacade/APBToygerCherryUploadTask.h>
|
||||
#import <APBToygerFacade/APBToygerUtils.h>
|
||||
#import <APBToygerFacade/APBToygerUploadTask.h>
|
||||
#import <APBToygerFacade/APBToygerFacadeDefine.h>
|
||||
#import <BioAuthEngine/APBToygerRemoteConfig.h>
|
||||
#import <BioAuthEngine/APBToygerBehavlogManager.h>
|
||||
#import <BioAuthEngine/APBToygerDataCenter.h>
|
||||
#import <APBToygerFacade/APBToygerViewController.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for APBToygerFacade.
|
||||
FOUNDATION_EXPORT double APBToygerFacadeVersionNumber;
|
||||
|
||||
//! Project version string for APBToygerFacade.
|
||||
FOUNDATION_EXPORT const unsigned char APBToygerFacadeVersionString[];
|
||||
@ -0,0 +1,130 @@
|
||||
//
|
||||
// APFCherryDefine.h
|
||||
// APBToygerFacade
|
||||
//
|
||||
// Created by shouyi.www on 27/02/2017.
|
||||
// Copyright © 2017 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef APBToygerFacadeDefine_h
|
||||
#define APBToygerFacadeDefine_h
|
||||
|
||||
|
||||
static float normalized_distance(float current_value, float best_value, float range) {
|
||||
return fabsf((current_value - best_value) / range);
|
||||
}
|
||||
|
||||
//typedef struct toyger_status_evaluator_t {
|
||||
// float pitch;
|
||||
// float yaw;
|
||||
// float width;
|
||||
//
|
||||
// float best_pitch;
|
||||
// float best_yaw;
|
||||
// float best_width;
|
||||
// float pitch_range;
|
||||
// float yaw_range;
|
||||
// float width_range;
|
||||
// float pitch_weight;
|
||||
// float yaw_weight;
|
||||
// float width_weight;
|
||||
//
|
||||
// toyger_status_evaluator_t(float pitch_ = -0.3, float pitch_range_ = 0.7, float best_pitch_ = 0, float pitch_weight_ = 1,
|
||||
// float yaw_ = -0.6, float yaw_range_ = 0.6, float best_yaw_ = 0, float yaw_weight_ = 1,
|
||||
// float width_ = 0.2, float width_range_ = 1.2, float best_width_ = 0.7, float width_weight_ = 1){
|
||||
// pitch = pitch_;
|
||||
// yaw = yaw_;
|
||||
// width = width_;
|
||||
// pitch_range = pitch_range_;
|
||||
// yaw_range = yaw_range_;
|
||||
// width_range = width_range_;
|
||||
// best_pitch = best_pitch_;
|
||||
// best_yaw = best_yaw_;
|
||||
// best_width = best_width_;
|
||||
// pitch_weight = pitch_weight_;
|
||||
// yaw_weight = yaw_weight_;
|
||||
// width_weight = width_weight_;
|
||||
// }
|
||||
//
|
||||
// void reset(){
|
||||
// pitch = -0.3;
|
||||
// yaw = -0.6;
|
||||
// width = 0.2;
|
||||
// }
|
||||
//
|
||||
// void update(float pitch_, float yaw_, float width_) {
|
||||
// pitch = pitch_;
|
||||
// yaw = yaw_;
|
||||
// width = width_;
|
||||
// }
|
||||
//
|
||||
// float evaluateProgress(float pitch_, float yaw_, float width_){
|
||||
// return
|
||||
// (normalized_distance(pitch_, best_pitch, pitch_range) * pitch_weight +
|
||||
// normalized_distance(yaw_, best_yaw, yaw_range) * yaw_weight +
|
||||
// normalized_distance(width_, best_width, width_range) * width_weight) /
|
||||
// (pitch_weight + yaw_weight + width_weight);
|
||||
// }
|
||||
//
|
||||
// float evaluate(){
|
||||
// return 1 -
|
||||
// (normalized_distance(pitch, best_pitch, pitch_range) * pitch_weight +
|
||||
// normalized_distance(yaw, best_yaw, yaw_range) * yaw_weight +
|
||||
// normalized_distance(width, best_width, width_range) * width_weight) /
|
||||
// (pitch_weight + yaw_weight + width_weight);
|
||||
// }
|
||||
//
|
||||
//}ToygerStatusEvaluator;
|
||||
|
||||
|
||||
typedef struct apbtoyger_tip_evaluator_t {
|
||||
bool pose_end;
|
||||
bool has_face;
|
||||
bool did_blink;
|
||||
bool pos_okay;
|
||||
bool quality_okay;
|
||||
bool under_exposure;
|
||||
bool face_width_too_small;
|
||||
bool face_width_too_big;
|
||||
bool integrity_fail;
|
||||
bool yaw_fail;
|
||||
bool pitch_fail;
|
||||
bool tremble_fail;
|
||||
bool did_checkSeven;
|
||||
int tip_timer_wait_cnt;
|
||||
bool tip_show_switch;
|
||||
int tip_message;
|
||||
|
||||
apbtoyger_tip_evaluator_t(){
|
||||
reset();
|
||||
}
|
||||
|
||||
void reset(){
|
||||
has_face = false;
|
||||
did_blink = false;
|
||||
pos_okay = false;
|
||||
under_exposure = false;
|
||||
face_width_too_small = false;
|
||||
integrity_fail = false;
|
||||
pitch_fail = false;
|
||||
face_width_too_big = false;
|
||||
yaw_fail = false;
|
||||
tremble_fail = false;
|
||||
tip_timer_wait_cnt = 0;
|
||||
tip_show_switch = true;
|
||||
did_checkSeven = false;
|
||||
quality_okay = false;
|
||||
pose_end = false;
|
||||
tip_message =0;
|
||||
}
|
||||
}APBToygerTipEvaluator;
|
||||
|
||||
|
||||
//UI样式
|
||||
typedef enum : NSUInteger {
|
||||
APBToygerUIStyleFPPCherry = 991, //991 FPP樱桃(废弃)
|
||||
APBToygerUIStyleCherry, //992 zFace樱桃
|
||||
APBToygerUIStyleGarfield, //993 加菲
|
||||
} APBToygerUIStyle;
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,25 @@
|
||||
//
|
||||
// APFPresentTask.h
|
||||
// APFaceDetectBiz
|
||||
//
|
||||
// Created by 晗羽 on 8/26/16.
|
||||
// Copyright © 2016 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <APBToygerFacade/APBToygerBaseTask.h>
|
||||
#import <DTFUtility/CameraService.h>
|
||||
#import <BioAuthEngine/DTFFaceViewProtocol.h>
|
||||
/**
|
||||
* @author Skye Ying, 16-08-26 13:08:04
|
||||
*
|
||||
* 新建VC,启动整个view
|
||||
*/
|
||||
@interface APBToygerPresentTask : APBToygerBaseTask
|
||||
|
||||
@property(nonatomic, strong) id<DTFFaceViewProtocol> faceView;
|
||||
|
||||
-(void) postCameraPresentwithCamera:(DTFCameraService *) cameraService;
|
||||
|
||||
-(void) presentAnimated: (BOOL)flag completion:(void (^ __nullable)(void))completion;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,27 @@
|
||||
//
|
||||
// APBToygerUploadTask.h
|
||||
// APBToygerFacade
|
||||
//
|
||||
// Created by Dan Cong on 29/1/2018.
|
||||
// Copyright © 2018 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <APBToygerFacade/APBToygerBaseTask.h>
|
||||
|
||||
/**
|
||||
上传基类,用于下沉多种UI(樱桃和加菲)下通用的逻辑
|
||||
*/
|
||||
@interface APBToygerUploadTask : APBToygerBaseTask
|
||||
|
||||
- (void)uploadImage;
|
||||
|
||||
- (void)didFinishUploadWithSuccess:(BOOL)success
|
||||
retCode:(NSString *)retCode
|
||||
retMessage:(NSString *)msg
|
||||
extInfo:(NSString *)ext;
|
||||
|
||||
- (void)handleFailWithRetCodeSub:(NSString *)retCodeSub retMessageSub:(NSString *)retMessageSub;
|
||||
|
||||
- (void)requestAgain;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,59 @@
|
||||
//
|
||||
// APFUtils.h
|
||||
// APFaceDetectBiz
|
||||
//
|
||||
// Created by 晗羽 on 8/25/16.
|
||||
// Copyright © 2016 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <APBToygerFacade/APBToygerFacadeDefine.h>
|
||||
|
||||
//#import "APFaceDetectBizFacade.h"
|
||||
|
||||
//主线程同步操作
|
||||
#define SYNC_MAINTHREAD_BEGIN_APBT [APBToygerUtils APBToygerMainThread:^{
|
||||
#define SYNC_MAINTHREAD_END_APBT }];
|
||||
|
||||
#define LOCK(locker, ...) dispatch_semaphore_wait(locker, DISPATCH_TIME_FOREVER); \
|
||||
__VA_ARGS__; \
|
||||
dispatch_semaphore_signal(locker);
|
||||
|
||||
@class MGLivenessDetectionFrameEncodedData;
|
||||
|
||||
@interface APBToygerUtils : NSObject
|
||||
|
||||
+ (void)APBToygerMainThread:(dispatch_block_t)block;
|
||||
|
||||
+ (NSString *)getTextContentforKey:(NSString*)keyName;
|
||||
+ (NSString *)localizedTextForKey:(NSString *)key;
|
||||
+ (NSBundle *)getBundle;
|
||||
|
||||
+ (int)getCodefrom:(NSString *)bisToken withLength:(int)codeLen;
|
||||
//+ (NSString *)getActionNoticeByActionType:(APFLiveActionType) actionType;
|
||||
|
||||
//检查文件是否存在
|
||||
+ (BOOL) checkFileunderPath:(NSString *) filePath;
|
||||
|
||||
//写入文件
|
||||
//如果文件存在,不重写,返回失败。
|
||||
//如果文件不再在,写入,返回写入结果
|
||||
+ (BOOL) writeFileunderPath:(NSString *) filePath;
|
||||
|
||||
//删除文件
|
||||
+ (BOOL) removeFileunderPath:(NSString *) filePath;
|
||||
|
||||
//随机文件名
|
||||
+ (NSString *)randomString:(NSInteger)len;
|
||||
|
||||
+ (NSString *)localizedStringForKey:(NSString *)key;
|
||||
|
||||
+ (UIImage *)loadImageFromBundleNamed:(NSString *)imageName;
|
||||
|
||||
+ (UIWindow *)lastWindow;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
//
|
||||
// APFViewController.h
|
||||
// APFaceDetectBiz
|
||||
//
|
||||
// Created by 晗羽 on 8/25/16.
|
||||
// Copyright © 2016 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <ToygerService/ToygerService.h>
|
||||
#import <BioAuthEngine/DTFFaceViewProtocol.h>
|
||||
#import <BioAuthEngine/DTFBaseViewController.h>
|
||||
|
||||
@interface APBToygerViewController : DTFBaseViewController
|
||||
|
||||
@property(nonatomic, strong) id<DTFFaceViewProtocol> faceView;
|
||||
|
||||
- (void)startFaceRecognition:(AVCaptureVideoPreviewLayer *)layer;
|
||||
|
||||
- (void)handleFaceStateChange:(ToygerMessage)state
|
||||
stateTips:(NSString *)tips
|
||||
actionGuide:(NSString *)guide
|
||||
progress:(CGFloat)progress;
|
||||
- (void)faceDectectComplete;
|
||||
- (void)setPhotinusColor:(UIColor *)color;
|
||||
- (void)showBlur:(UIImage *)image;
|
||||
|
||||
@end
|
||||
Binary file not shown.
@ -0,0 +1,6 @@
|
||||
framework module APBToygerFacade {
|
||||
umbrella header "APBToygerFacade.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@ -0,0 +1,122 @@
|
||||
//
|
||||
// APDID.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by eric on 2021/2/7.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "ASSTokenResult.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef void(^ASSSecureSdkCallback)(ASSTokenResult* result, NSString* error);
|
||||
|
||||
typedef void(^ASSSecureSdkOpenCallback)(NSString* token, int errorCode);
|
||||
|
||||
@interface APDID : NSObject
|
||||
|
||||
/*
|
||||
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
|
||||
@param params 初始化的字典参数,包含三项内容:tid、userid、environment;
|
||||
tid与userid选传,传入可以保证vkeyid与其正确关联,取不到传入空字符串;
|
||||
环境变量请与app设置中的环境相关联,字典中的value包括线上,预发,测试,日常;
|
||||
@param callback 初始化完成后的结果回调
|
||||
|
||||
Asynchronously initialize vkeyid(apdid), recommend to invoke this API when app launches, and cashier view presents.
|
||||
Inside SDK we will decide whether to launch network request or not based on timestamp and device info.
|
||||
No thread requirement.
|
||||
@param params: Initialized parameters, includes 3 key-value pairs: tid, userid,environment;
|
||||
Tid and userid are optional, they can be associated with vkeyid(apdid) if passed in.
|
||||
If the values for tid and userid are not available, pass in empty NSString(@"").
|
||||
@param callback: Callback block when token is available
|
||||
*/
|
||||
+ (void) initToken:(NSDictionary*)params callback:(ASSSecureSdkCallback)callback;
|
||||
|
||||
/*
|
||||
同步获取vkeyid完整信息,包括vkeyid,token,clientkey,无网络请求;
|
||||
如果首次安装app,且首次网络请求未完成或失败,将会返回降级措施:vkeyid会返回客户端随机串clientkey,token将会返回空。
|
||||
|
||||
Synchronously get full info of vkeyid(apdid), token and clientkey, no network requests.
|
||||
If the app is installed for the first time and first network request failed, it would return degradation result: vkeyid would be clientkey which is a client-side generated random string, token would be empty NSString @""
|
||||
*/
|
||||
+ (ASSTokenResult*)getToken DEPRECATED_MSG_ATTRIBUTE("use getTokenResult instead");
|
||||
|
||||
/*
|
||||
同步获取vkeyid完整信息,包括vkeyid,token,clientkey,无网络请求;
|
||||
如果首次安装app,且首次网络请求未完成或失败,将会返回降级措施:vkeyid会返回客户端随机串clientkey,token将会返回空。
|
||||
|
||||
Synchronously get full info of vkeyid(apdid), token and clientkey, no network requests.
|
||||
If the app is installed for the first time and first network request failed, it would return degradation result: vkeyid would be clientkey which is a client-side generated random string, token would be empty NSString @""
|
||||
*/
|
||||
+ (ASSTokenResult*)getTokenResult;
|
||||
|
||||
|
||||
+ (ASSTokenResult *)getTokenResult:(NSString*)appName appKeyClient:(NSString*)appKeyClient;
|
||||
|
||||
|
||||
//===================lazada api====================//
|
||||
|
||||
/*
|
||||
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
|
||||
@param appName 应用名称
|
||||
|
||||
@param appKeyClient 应用客户端密钥
|
||||
|
||||
@param callback 初始化完成后的结果回调,以Token作为参数
|
||||
|
||||
*/
|
||||
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient callback:(ASSSecureSdkOpenCallback)callback;
|
||||
|
||||
/*
|
||||
同步接口返回token
|
||||
|
||||
@param appName 应用名称
|
||||
|
||||
@param appKeyClient 应用客户端密钥
|
||||
|
||||
*/
|
||||
+ (NSString *)getResultToken;
|
||||
|
||||
/*
|
||||
同步接口返回token
|
||||
|
||||
@param appName 应用名称
|
||||
|
||||
@param appKeyClient 应用客户端密钥
|
||||
|
||||
*/
|
||||
+ (NSString *)getResultToken:(NSString*)appName appKeyClient:(NSString*)appKeyClient;
|
||||
|
||||
//===================TMN api====================//
|
||||
/*
|
||||
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
|
||||
@param appName 应用名称
|
||||
|
||||
@param appKeyClient 应用客户端密钥
|
||||
|
||||
@param sessionId 业务方传入自己的id
|
||||
|
||||
@param callback 初始化完成后的结果回调,以Token作为参数
|
||||
|
||||
*/
|
||||
|
||||
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient sessionId:(NSString *)sessionId callback:(ASSSecureSdkOpenCallback)callback;
|
||||
|
||||
|
||||
//===================ae api====================//
|
||||
|
||||
/*
|
||||
强制上报接口
|
||||
@param params 初始化的字典参数,包含四项内容:umid、tid、userid、environment;
|
||||
umid必传,tid与userid选传,传入可以保证vkeyid与其正确关联,取不到传入空字符串;
|
||||
环境变量请与app设置中的环境相关联,字典中的value包括线上,预发,测试,日常;
|
||||
@param callback 初始化完成后的结果回调
|
||||
|
||||
*/
|
||||
+ (void) updateToken:(NSDictionary*)params callback:(ASSSecureSdkCallback)callback;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,41 @@
|
||||
//
|
||||
// APDeviceColor.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by eric on 2021/2/25.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface APDeviceColor : NSObject
|
||||
|
||||
/*
|
||||
* getColorLabel 设备染色接口
|
||||
*
|
||||
* @param bizToken 业务场景
|
||||
* @param extParams 扩展参数
|
||||
* @param errInfo 错误信息
|
||||
*
|
||||
* @return 设备染色数据
|
||||
*/
|
||||
+ (NSString*) getColorLabel: (NSString*) bizToken
|
||||
ext: (NSDictionary *) extParams
|
||||
error: (NSError **) errInfo;
|
||||
|
||||
/*
|
||||
* getColorLabel 设备染色接口
|
||||
*
|
||||
* @param extParams 扩展参数
|
||||
* @param errInfo 错误信息
|
||||
*
|
||||
* @return 设备染色数据
|
||||
*/
|
||||
+ (NSString*) getColorLabel: (NSDictionary *) extParams
|
||||
error: (NSError **) errInfo;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,32 @@
|
||||
//
|
||||
// APDynamic.h
|
||||
// APPSecuritySDK-Sign
|
||||
//
|
||||
// Created by eric on 2021/2/25.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface APDynamic : NSObject
|
||||
|
||||
/*
|
||||
* dynamicCheckDispatch 动态攻防脚本运行
|
||||
*
|
||||
* @param dict 动态攻防脚本
|
||||
*/
|
||||
+ (void)dynamicCheckDispatch:(NSDictionary *)dict;
|
||||
|
||||
/*
|
||||
* dynamicCheckDispatch 动态攻防脚本运行,动态攻防脚本运行后会自动上传, 无特殊需求不建议
|
||||
*
|
||||
* @param dict 动态攻防脚本
|
||||
* @param callback 运行结果回调
|
||||
*/
|
||||
+ (void)dynamicCheckDispatch:(NSDictionary *)dict withCallBack: (void(^)(Boolean, NSString *))callback;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,21 @@
|
||||
//
|
||||
// APRiskConfigReportRequest.h
|
||||
// APPSecuritySDK-Common
|
||||
//
|
||||
// Created by eric on 2021/8/16.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface APRiskConfigReportRequest : NSObject
|
||||
|
||||
@property(nonatomic, strong) NSString* os;
|
||||
@property(nonatomic, strong) NSString* apdid;
|
||||
@property(nonatomic, strong) NSDictionary* deviceDataMap;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,19 @@
|
||||
//
|
||||
// APRiskConfigReportResponse.h
|
||||
// APPSecuritySDK-Common
|
||||
//
|
||||
// Created by eric on 2021/8/16.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface APRiskConfigReportResponse : NSObject
|
||||
|
||||
@property(nonatomic, strong) NSDictionary* resultData;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,20 @@
|
||||
//
|
||||
// APRiskConfigServiceProtocol.h
|
||||
// APPSecuritySDKAdapter
|
||||
//
|
||||
// Created by hongren on 2020/9/7.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
#import "APRiskSyncHandlerProtocol.h"
|
||||
|
||||
@protocol APRiskConfigServiceProtocol <NSObject>
|
||||
|
||||
@required
|
||||
- (NSString *)stringValueForKey:(NSString *)key;
|
||||
|
||||
- (void)addConfigChangeListener:(id<APRiskSyncHandlerProtocol>)handler forKey:(NSString *)key;
|
||||
|
||||
- (void)refreshConfig:(NSDictionary *)tConfigMap from:(NSString *)sourceType;
|
||||
|
||||
@end
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
//
|
||||
// APRiskFileUploadProtocol.h
|
||||
// APPSecuritySDKAdapter
|
||||
//
|
||||
// Created by hongren on 2020/9/7.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
@protocol APRiskFileUploadProtocol <NSObject>
|
||||
|
||||
@required
|
||||
- (NSString *)uploadCustomFile:(NSString *)path;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,21 @@
|
||||
//
|
||||
// APRiskLoggerProtocol.h
|
||||
// APPSecuritySDK-Common
|
||||
//
|
||||
// Created by eric on 2021/6/25.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol APRiskLoggerProtocol <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
-(void)print:(NSString *)format, ...NS_REQUIRES_NIL_TERMINATION;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,30 @@
|
||||
//
|
||||
// APRiskRPCProtocol.h
|
||||
// APPSecuritySDKAdapter
|
||||
//
|
||||
// Created by hongren on 2020/9/7.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import "APRiskReportRequest.h"
|
||||
#import "APRiskReportResponse.h"
|
||||
#import "APRiskRpcConfiguration.h"
|
||||
#import "APRiskConfigReportRequest.h"
|
||||
#import "APRiskConfigReportResponse.h"
|
||||
|
||||
@protocol APRiskRPCProtocol <NSObject>
|
||||
//gateway
|
||||
|
||||
@required
|
||||
- (APRiskReportResponse *)sendStaticRequest:(APRiskReportRequest *)data
|
||||
config:(APRiskRpcConfiguration*)cfg;
|
||||
|
||||
@required
|
||||
- (APRiskConfigReportResponse *)sendConfigReportRequest:(APRiskConfigReportRequest *)data
|
||||
config:(APRiskRpcConfiguration*)cfg;
|
||||
|
||||
@required
|
||||
- (BOOL)updateLog:(NSString*)log
|
||||
config:(APRiskRpcConfiguration*)cfg;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,29 @@
|
||||
//
|
||||
// APRiskRemoteLoggerProtocol.h
|
||||
// APPSecuritySDKAdapter
|
||||
//
|
||||
// Created by hongren on 2020/9/7.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
@protocol APRiskRemoteLoggerProtocol <NSObject>
|
||||
|
||||
@required
|
||||
- (void)writeLogWithActionId:(NSString *)event
|
||||
extParams:(NSArray *)args
|
||||
appId:(NSString *)appId
|
||||
seed:(NSString *)seed
|
||||
ucId:(NSString *)ucId;
|
||||
|
||||
@required
|
||||
- (void)writeLogWithActionId:(NSString *)event
|
||||
extParams:(NSArray *)args
|
||||
appId:(NSString *)appId
|
||||
seed:(NSString *)seed
|
||||
ucId:(NSString *)ucId
|
||||
bizType:(NSString *)bizType;
|
||||
|
||||
@required
|
||||
- (void)writeEventLog:(NSDictionary *)dict;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,68 @@
|
||||
//
|
||||
// APRiskReportRequest.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by hongren on 2020/9/7.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface APRiskReportRequest : NSObject
|
||||
|
||||
/**
|
||||
* os type: android|ios"
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *os;
|
||||
/**
|
||||
* device id for ios for static report, or device id for dynamic report both for ios and android
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *apdid;
|
||||
/**
|
||||
* public region device id for android for static report
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *pubApdid;
|
||||
/**
|
||||
* private region device id for android for static report
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *priApdid;
|
||||
/**
|
||||
* apdid token
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *token;
|
||||
/**
|
||||
* umid token
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *umidToken;
|
||||
/**
|
||||
* rpc version
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *version;
|
||||
/**
|
||||
* last apdid time (create time)
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *lastTime;
|
||||
|
||||
/**
|
||||
* dynamicKey
|
||||
*/
|
||||
@property(nonatomic,strong) NSString* dynamicKey;
|
||||
/**
|
||||
* device info map
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSDictionary *dataMap;
|
||||
+ (Class)dataMapElementClass;
|
||||
|
||||
@property(nonatomic,strong) NSDictionary *bizData;
|
||||
+ (Class)bizDataElementClass;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,65 @@
|
||||
//
|
||||
// APRiskReportResponse.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by hongren on 2020/9/7.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface APRiskReportResponse : NSObject
|
||||
|
||||
/**
|
||||
* success or not
|
||||
*/
|
||||
|
||||
@property(nonatomic, assign) BOOL success;
|
||||
/**
|
||||
* result code
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *resultCode;
|
||||
|
||||
/**
|
||||
* device id
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *apdid;
|
||||
/**
|
||||
* apdid token
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *token;
|
||||
/**
|
||||
* current apdid time (create time)
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *currentTime;
|
||||
/**
|
||||
* rpc version
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *version;
|
||||
/**
|
||||
* switch for vkey
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *vkeySwitch;
|
||||
/**
|
||||
* switch for BugTrack
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *bugTrackSwitch;
|
||||
/**
|
||||
* version for applist cmd
|
||||
*/
|
||||
|
||||
@property(nonatomic, strong) NSString *appListVer;
|
||||
|
||||
@property(nonatomic, strong) NSString *dynamicKey;
|
||||
|
||||
@property(nonatomic, strong) NSDictionary *resultData;
|
||||
+ (Class)resultDataElementClass;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,20 @@
|
||||
//
|
||||
// APRiskRpcConfiguration.h
|
||||
// APPSecuritySDKAdapter
|
||||
//
|
||||
// Created by hongren on 2020/9/8.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface APRiskRpcConfiguration : NSObject
|
||||
// 超时时间
|
||||
@property(nonatomic, assign) int timeout;
|
||||
|
||||
// 网关地址
|
||||
@property(nonatomic, strong) NSString* gatewayURL;
|
||||
|
||||
// workspaceid和appid
|
||||
@property(nonatomic, strong) NSDictionary *headers;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,21 @@
|
||||
//
|
||||
// APRiskSyncHandlerProtocol.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by eric on 2020/10/15.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol APRiskSyncHandlerProtocol <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
-(void) handleWithBizType: (NSString *) bizType andData: (NSString *) data;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,28 @@
|
||||
//
|
||||
// APRiskSyncServiceProtocol.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by eric on 2020/10/15.
|
||||
// Copyright © 2020 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "APRiskSyncHandlerProtocol.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
static NSString* const kEdgeBizTypeGlobal = @"EDGE-GLOBAL";
|
||||
static NSString* const kEdgeBizTypeSingle = @"EDGE-SINGLE";
|
||||
static NSString* const kEdgeBizTypeUid = @"EDGE-SINGLE-USER";
|
||||
static NSString* const kEdgeBizTypeSyncDegradeToConfig = @"EDGE-SYNC-DEGRADE-TO-CONFIG";
|
||||
|
||||
@protocol APRiskSyncServiceProtocol <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
-(void) registerHandler:(id<APRiskSyncHandlerProtocol>)handler;
|
||||
-(void) registerSyncBiz;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,41 @@
|
||||
//
|
||||
// APSecRDS.h
|
||||
// APSecRDS
|
||||
//
|
||||
// Created by xingchen on 15/4/8.
|
||||
// Copyright (c) 2015年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface APSecRDS : NSObject
|
||||
|
||||
/*
|
||||
appname 当前app的名称
|
||||
appver 当前app的版本
|
||||
sdkname 当前sdk的名称
|
||||
sdkver 当前sdk的版本
|
||||
user 淘宝/支付宝身份
|
||||
pagesrc 淘宝/支付宝
|
||||
page 当前页面标识
|
||||
|
||||
*/
|
||||
-(void) onPageWithView:(NSString*)pageName args:(NSDictionary*) inArgs;
|
||||
-(NSString*) onPageEndWithView:(NSString*) pageName user:(NSString*) userName;
|
||||
-(NSString*) onPageEndZipDataWithView:(NSString*)pageName user:(NSString*)userName;
|
||||
|
||||
-(void) onControlClickWithView:(NSString*) pageName ctrl: (NSString*)ctrlName;
|
||||
|
||||
//按键信息
|
||||
-(void) onKeyDownWithView:(NSString*) pageName ctrl:(NSString*) ctrlName keyCode:(NSString*)keyValue;
|
||||
|
||||
//焦点信息
|
||||
-(void) onGetFocusWithView:(NSString*)pageName ctrl:(NSString*) ctrlName;
|
||||
-(void) onLostFocusWithView:(NSString*) pageName ctrl:(NSString*) ctrlName;
|
||||
|
||||
//触屏信息
|
||||
-(void) onTouchScreenWithView:(NSString*)pageName ctrl:(NSString*) ctrlName point:(CGPoint) pt;
|
||||
|
||||
|
||||
@end
|
||||
@ -0,0 +1,48 @@
|
||||
//
|
||||
// APSecStore.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by eric on 2021/3/10.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface APSecStore : NSObject
|
||||
|
||||
/*
|
||||
*功能: 从keychain中载入字符串
|
||||
*线程安全: 是
|
||||
*可重入: 是
|
||||
*@return: 成功返回key对应字符串,失败返回nil
|
||||
*@param key:不能为nil
|
||||
*@param error:失败时保存错误信息
|
||||
*/
|
||||
+(NSString*) loadKey:(NSString*) key error:(NSError **)error;
|
||||
|
||||
/*
|
||||
*功能: 将字符串(键-值对)存入keychain
|
||||
*线程安全: 是
|
||||
*可重入: 是
|
||||
*@return: 成功返回yes,失败返回no
|
||||
*@param key:不能为nil
|
||||
*@param value:不能为nil
|
||||
*@param error:失败时保存错误信息
|
||||
*/
|
||||
+(BOOL) saveKey:(NSString*) key Value:(NSString*)value error:(NSError **)error;
|
||||
|
||||
/*
|
||||
*功能: 从keychain中删除字符串(键-值对)
|
||||
*线程安全: 是
|
||||
*可重入: 是
|
||||
*@return: 成功返回yes,失败返回no
|
||||
*@param key:不能为nil
|
||||
*@param error:失败时保存错误信息
|
||||
*/
|
||||
+(BOOL) deleteKey:(NSString*) key error:(NSError **)error;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,113 @@
|
||||
//
|
||||
// ASSSecureSdk.h
|
||||
// APSecSecuritySDK
|
||||
//
|
||||
// Created by xingchen on 15/2/26.
|
||||
// Copyright (c) 2015年 Alipay. All rights reserved.
|
||||
//
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//初始化API的字典参数中,TID的key
|
||||
//key for TID in the NSDictionary parameter for initToken:callback: API
|
||||
extern NSString * const ASS_TID;
|
||||
|
||||
//初始化API的字典参数中,userid的key
|
||||
//key for USERID in the NSDictionary parameter for initToken:callback: API
|
||||
extern NSString * const ASS_USERID;
|
||||
|
||||
//初始化API的字典参数中,环境变量的key
|
||||
//key for server environment configuration in the NSDictionary parameter for initToken:callback: API
|
||||
extern NSString * const ASS_ENVIRONMENT;
|
||||
|
||||
//初始化API的字典参数中,环境变量的value,代表线上环境
|
||||
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for online environment
|
||||
extern NSString * const ASS_ENVIRONMENT_ONLINE;
|
||||
|
||||
//初始化API的字典参数中,环境变量的value,代表测试环境
|
||||
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for test environment
|
||||
extern NSString * const ASS_ENVIRONMENT_SIT;
|
||||
|
||||
//初始化API的字典参数中,环境变量的value,代表开发环境
|
||||
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for daily environment
|
||||
extern NSString * const ASS_ENVIRONMENT_DAILY;
|
||||
|
||||
//初始化API的字典参数中,环境变量的value,代表预发环境
|
||||
//value for server configuration in the NSDictionary parameter for initToken:callback: API, stands for pre online environment
|
||||
extern NSString * const ASS_ENVIRONMENT_PRE;
|
||||
|
||||
//初始化API的字典参数中,设置RPC网关地址的key。
|
||||
//key for RPC server gateway address in the NSDictionary parameter for initToken:callback: API.
|
||||
//If value for this key is specified, the value for ASS_ENVIRONMENT will be ignored.
|
||||
extern NSString* const ASS_RPC_GATEWAY_ADDR;
|
||||
|
||||
//rpc header workspaceid key
|
||||
extern NSString* const ASS_RPC_WORKSPACEID;
|
||||
|
||||
//rpc header appid key
|
||||
extern NSString* const ASS_RPC_APPID;
|
||||
|
||||
//初始化API的字典参数中,设置UMID网关host地址的key。
|
||||
//host 要设置的线上地址,如ynuf.alipay.com,不要带协议头,不要带后面的参数,只能传纯host地址
|
||||
//key for UMID server host in the NSDictionary parameter for initToken:callback: API.
|
||||
//host should only contain online address such as ynuf.alipay.com, without protocol or parameters.
|
||||
extern NSString* const ASS_UMID_HOST;
|
||||
|
||||
//初始化API的字典参数中,设置加密的umid。
|
||||
extern NSString * const ASS_ENCODE_UMID;
|
||||
|
||||
/*!
|
||||
@typedef ASSStatusCode
|
||||
|
||||
Possible return codes
|
||||
@constant ASSStatusCodeOk Completed, No errors
|
||||
@constant ASSStatusCodeInvalidParam input param invalid
|
||||
@constant ASSStatusCodeAppNameNil appName is nil
|
||||
@constant ASSStatusCodeAppKeyNil appKeyClient is nil
|
||||
@constant ASSStatusCodeConnectionError network connection failure
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, ASSStatusCode)
|
||||
{
|
||||
ASSStatusCodeOk = 0,
|
||||
ASSStatusCodeInvalidParam,
|
||||
ASSStatusCodeAppNameNil,
|
||||
ASSStatusCodeAppKeyNil,
|
||||
ASSStatusCodeConnectionError,
|
||||
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, ASSAddressFlag)
|
||||
{
|
||||
ASSAddressFlagIndonesia = 1,
|
||||
ASSAddressFlagMalaysia = 2,
|
||||
ASSAddressFlagPilipinas = 3,
|
||||
ASSAddressFlagSingapore = 4,
|
||||
ASSAddressFlagIpayVn = 11,
|
||||
ASSAddressFlagIpayId = 12,
|
||||
ASSAddressFlagIpayMy = 13,
|
||||
ASSAddressFlagIpaySg = 14,
|
||||
ASSAddressFlagIpayTh = 15,
|
||||
ASSAddressFlagIpayPh = 16,
|
||||
ASSAddressFlagIpayDefault = 17,
|
||||
};
|
||||
|
||||
@interface APSecureSdk : NSObject
|
||||
|
||||
/**
|
||||
获取单例
|
||||
*/
|
||||
+ (id)sharedInstance;
|
||||
|
||||
/*
|
||||
*网关设置
|
||||
*/
|
||||
- (void)setSecuritySDKConfig:(ASSAddressFlag)address;
|
||||
|
||||
/**
|
||||
初始化
|
||||
*/
|
||||
- (void)initWithRpcConfiguration:(NSDictionary *) config;
|
||||
|
||||
//===================测试联调 api====================//
|
||||
- (void)setRpcConfiguration:(NSDictionary *) config;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,61 @@
|
||||
//
|
||||
// APSign.h
|
||||
// APPSecuritySDK-Sign
|
||||
//
|
||||
// Created by eric on 2021/2/25.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
extern NSString * const APSE_SIGN_MODE_NORMAL;
|
||||
extern NSString * const APSE_SIGN_MODE_ENHANCE;
|
||||
extern NSString * const APSE_SIGN_MODE_NORMAL_ASYNC;
|
||||
extern NSString * const APSE_SIGN_MODE_ENHANCE_ASYNC;
|
||||
|
||||
@interface APSign : NSObject
|
||||
|
||||
/*
|
||||
* getColorInfo 请求可信接口,获取数字签名
|
||||
*
|
||||
* @param bizToken 业务场景
|
||||
* @param bizParam 业务参数
|
||||
* @param extParams 扩展参数
|
||||
* @param errInfo 错误信息
|
||||
*
|
||||
* @return 数字签名数据
|
||||
*/
|
||||
+ (NSString*) getColorInfo: (NSString*) bizToken
|
||||
param: (NSString*) bizParam
|
||||
ext: (NSDictionary*) extParams
|
||||
error: (NSError **) errInfo;
|
||||
|
||||
/*
|
||||
* preColorInfo 签名数据预处理接口,用于不同业务定制签名携带数据
|
||||
*
|
||||
* @param userAction 当前动作,由业务定制的行为事件
|
||||
* @param extParams 业务参数,格式需要与内部对齐
|
||||
*
|
||||
* @return 预处理数据
|
||||
*/
|
||||
+ (NSString*) preColorInfo: (int) userAction
|
||||
ext: (NSDictionary*) extParams
|
||||
error: (NSError **) errInfo;
|
||||
|
||||
/*
|
||||
* preColorInfo 签名数据预处理接口,用于不同业务定制签名携带数据
|
||||
*
|
||||
* @param userAction 当前动作,由业务定制的行为事件
|
||||
* @param extParams 业务参数,格式需要与内部对齐
|
||||
*
|
||||
* @return 预处理数据
|
||||
*/
|
||||
+ (NSString*) preColorInfoForString: (int) userAction
|
||||
ext: (NSString*) extParams
|
||||
error: (NSError **) errInfo;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,234 @@
|
||||
//
|
||||
// ASSCommon.h
|
||||
// ae-security-sdk
|
||||
//
|
||||
// Created by xingchen on 14/12/30.
|
||||
// Copyright (c) 2014年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "ASSLogger.h"
|
||||
|
||||
//#define IN_DEBUG
|
||||
#define USED_BY_ALIPAY
|
||||
|
||||
static NSErrorDomain APSECURITYSDK_ERROR_DOMAIN = @"APSecuritySDKErrorDomain";
|
||||
|
||||
static NSString* const PRIVATE_KEY_XXXX = @"qqAIhzy)H)ip53<>ugx,sI{#}CE$37L|z5G=IScgO^=aQHaN[b|NM.RWdZpcy.r$";
|
||||
|
||||
static NSString* const PRIVATE_KEY_CLIENTKEY = @"EQopzyui)H)ipQW983<ll>uitx,sgI{#}##20110kl==^^woQG,msq.xinjun.$$";
|
||||
|
||||
static NSString* const LOG_SWITCH_SETTING_INITIALIZED = @"开关设置从keychain初始化成功";
|
||||
|
||||
static NSString* const LOG_LOAD_SETTING_EXCEPTION = @"开关设置在keychain中无存储,读取失败";
|
||||
|
||||
static NSString* const LOG_DECRYPT_SETTING_EXCEPTION = @"开关设置从keychain中读取成功,解密失败";
|
||||
|
||||
static NSString* const LOG_SWITCH_APPLIST_INITIALIZED = @"applist从keychain初始化成功";
|
||||
|
||||
static NSString* const LOG_LOAD_APPLIST_EXCEPTION = @"applist相关信息在keychain中无存储,读取失败";
|
||||
|
||||
static NSString* const LOG_DECRYPT_APPLIST_EXCEPTION = @"applist信息从keychain中读取成功,解密失败";
|
||||
|
||||
static NSString* const LOG_UMID_TOKEN_REQUEST_BACK = @"UMID TOKEN返回结果为:";
|
||||
|
||||
static NSString* const LOG_VKEYINFO_GENERATED = @"本地VKEY开关打开,将生成VKEY信息";
|
||||
|
||||
static NSString* const LOG_VKEYINFO_ABORT = @"本地VKEY开关关闭,将放弃生成VKEY信息";
|
||||
|
||||
static NSString* const LOG_VKEY_NO_KEYCHAIN_CACHE = @"VKEY缓存信息在keychain中无存储,读取失败";
|
||||
|
||||
static NSString* const LOG_VKEY_FOUND_KEYCHAIN_CACHE = @"VKEY缓存信息在keychain中获取缓存值";
|
||||
|
||||
static NSString* const LOG_VKEY_INFO_DETAIL = @"KEY信息为:";
|
||||
|
||||
static NSString* const LOG_VKEY_GENERATION_EXCEPTION = @"VEr:";
|
||||
|
||||
static NSString* const LOG_GID_GENERATED = @"本地GID开关打开,将生成GID信息";
|
||||
|
||||
static NSString* const LOG_GID_ABORT = @"本地GID开关关闭,将放弃生成GID信息";
|
||||
|
||||
static NSString* const LOG_GID_NO_KEYCHAIN_CACHE = @"GID缓存信息在keychain中无存储,读取失败";
|
||||
|
||||
static NSString* const LOG_GID_FOUND_KEYCHAIN_CACHE = @"GID缓存信息在keychain中获取缓存值";
|
||||
|
||||
static NSString* const LOG_GID_INFO_DETAIL = @"GID信息为:";
|
||||
|
||||
static NSString* const LOG_VOS_RUNNING = @"VKEY任务启动";
|
||||
|
||||
static NSString* const LOG_VOS_ASYNC_ABORT = @"放弃异步VOS任务";
|
||||
|
||||
static NSString* const LOG_VOS_VKEY_GENERATION = @"VOS VKEY采集中";
|
||||
|
||||
static NSString* const LOG_VOS_GID_GENERATION = @"VOS GID采集中";
|
||||
|
||||
static NSString* const LOG_GID_GENERATION_EXCEPTION = @"GEr:";
|
||||
|
||||
static NSString* const LOG_JB_ERROR_DETECTED = @"JEr";
|
||||
|
||||
static NSString* const LOG_STATIC_INFO_DETAIL = @"采集静态信息列表如下:";
|
||||
|
||||
static NSString* const LOG_APP_LIST_INFO_COLLECTED = @"APPLIST信息扫描获取中";
|
||||
|
||||
static NSString* const LOG_APP_LIST_INFO_ABORT = @"APPLIST信息放弃扫描获取";
|
||||
|
||||
static NSString* const LOG_LOAD_MODEL_KEYCHAIN_EXCEPTION = @"VKEYID在keychain无存储,读取失败";
|
||||
|
||||
static NSString* const LOG_LOAD_MODEL_FROM_KEYCHAIN = @"VKEYID从keychain中成功读取";
|
||||
|
||||
static NSString *const LOG_LOCALMODEL_ABSENT = @"本地未找到VKEYID存储";
|
||||
|
||||
static NSString *const LOG_LOCALMODEL_LOADSUCCESS = @"本地成功找到VKEYID存储";
|
||||
|
||||
static NSString *const LOG_LOAD_PREAPDID_SUCCESS = @"本地成功在keychain中读取旧版apdid的值:";
|
||||
|
||||
static NSString *const LOG_LOAD_PREAPDID_FAILED = @"旧版apdid在keychain中无存储,读取失败";
|
||||
|
||||
static NSString* const LOG_STATIC_INFO_CHANGED = @"所采集的静态信息发生改变或者存储中没有记录";
|
||||
|
||||
static NSString* const LOG_STATIC_INFO_SAME = @"所采集的静态信息与存储中相同";
|
||||
|
||||
static NSString* const LOG_TODAY_FIRST = @"检测为24小时内首次请求";
|
||||
|
||||
static NSString* const LOG_NOT_TODAY_FIRST = @"检测24小时内已经发起过请求";
|
||||
|
||||
static NSString *const LOG_GETAPDIDTOKEN_RET_LOCAL = @"不发起网络请求,直接返回本地存储";
|
||||
|
||||
static NSString* const LOG_CONNECT_TO_SERVER = @"需要访问服务器请求TOKEN";
|
||||
|
||||
static NSString* const LOG_REQUEST_INFO_INCLUDED = @"静态请求上传需要携带静态信息";
|
||||
|
||||
static NSString* const LOG_REQUEST_INFO_EXCLUDED = @"静态请求上传不需要携带静态信息";
|
||||
|
||||
static NSString* const LOG_STATIC_REQUEST_EXCEPTION = @"静态数据请求发送出现异常";
|
||||
|
||||
static NSString* const LOG_STATIC_REQUEST_FAILED = @"静态数据请求返回出现错误";
|
||||
|
||||
static NSString* const LOG_STATIC_REQUEST_SUCCESS = @"静态数据请求请求返回";
|
||||
|
||||
static NSString* const LOG_SERVER_RESPONSE_SUCCESS = @"服务端返回结果通过验证,证明有效:";
|
||||
|
||||
static NSString* const LOG_SERVER_RESPONSE_FAILED = @"服务端获取TOKEN失败";
|
||||
|
||||
static NSString* const LOG_LOG_REQUEST_RESPONSE = @"日志上传成功返回";
|
||||
|
||||
static NSString *const LOG_LOCALMODEL_SAVED_KEYCHAIN = @"成功将VKEY ID保存至keychain";
|
||||
|
||||
static NSString *const LOG_UPDATE_SETTING = @"已更新keychain中开关的设置值";
|
||||
|
||||
static NSString* const LOG_APP_LIST_NEED_UPDATE = @"经过检测,app list列表需要从服务器更新";
|
||||
|
||||
static NSString *const LOG_UPDATE_APPLIST = @"app list列表成功从服务器更新";
|
||||
|
||||
static NSString* const LOG_APPLIST_SETTING_SAVED_KEYCHAIN = @"app list列表信息成功更新至keychain保存";
|
||||
|
||||
static NSString* const LOG_APP_LIST_REQUEST_EXCEPTION = @"app list请求出现异常";
|
||||
|
||||
static NSString* const LOG_APP_LIST_RESPONSE_FAILED = @"app list请求结果失败";
|
||||
|
||||
static NSString* const LOG_LOG_UPDATE_EXCEPTION = @"日志信息请求发送出现异常";
|
||||
|
||||
static NSString* const LOG_LOG_UPLOAD_ERROR = @"日志信息发送出现错误";
|
||||
|
||||
static NSString* const LOG_LOG_UPLOAD_SUCCESS = @"日志信息发送返回成功";
|
||||
|
||||
static NSString *const LOG_SETTINGMODEL_SAVEFAILED = @"开关信息保存错误";
|
||||
|
||||
static NSString *const LOG_SETTINGMODEL_SUCCESS = @"开关信息成功保存到keychain";
|
||||
|
||||
static NSString* const LOG_LOG_UPLOAD_PROCESS = @"上报日志开关打开,开始上报错误日志流程";
|
||||
|
||||
static NSString* const LOG_LOG_UPLOAD_ABORT = @"上报日志开关关闭,放弃上报错误日志";
|
||||
|
||||
static NSString* const LOG_LOG_FILE_DETAIL = @"检测到错误日志文件:";
|
||||
|
||||
static NSString* const LOG_LOG_FILE_REMOVAL = @"已经删除错误日志文件:";
|
||||
|
||||
static NSString* const LOG_LOG_UPLOAD_START = @"开始日志上报网络请求";
|
||||
|
||||
static NSString* const LOG_LOG_UPLOAD_DETAIL = @"日志上报网络请求具体内容:";
|
||||
|
||||
|
||||
|
||||
static NSString* const LOG_JSON_PARSE_EXCEPTION = @"JSON解析失败";
|
||||
|
||||
static NSString* const ASS_STORAGE_KEY_SUCCESS = @"success";
|
||||
static NSString* const ASS_STORAGE_KEY_APDID = @"apdid";
|
||||
static NSString* const ASS_STORAGE_KEY_TOKEN = @"token";
|
||||
static NSString* const ASS_STORAGE_KEY_TIME = @"time";
|
||||
static NSString* const ASS_STORAGE_KEY_VKEYSWITCH = @"vkeyon";
|
||||
static NSString* const ASS_STORAGE_KEY_LOGSWITCH = @"logon";
|
||||
static NSString* const ASS_STORAGE_KEY_APPLISTVERSION = @"appver";
|
||||
static NSString* const ASS_STORAGE_KEY_STATICHASH = @"statichash";
|
||||
static NSString* const ASS_STORAGE_KEY_ERROR = @"error";
|
||||
static NSString* const ASS_APPKEY_INVALID = @"APPKEY_ERROR";
|
||||
static NSString* const ASS_STORAGE_KEY_WEBRTCURL = @"webrtcurl";
|
||||
static NSString* const ASS_STORAGE_KEY_DYNAMICKEY = @"dynamickey";
|
||||
static NSString* const ASS_STORAGE_KEY_AGENTURL = @"agentcurl";
|
||||
static NSString* const ASS_STORAGE_KEY_APSE_DEGRADE = @"apse_degrade";
|
||||
static NSString* const ASS_STORAGE_KEY_TIMEINTERVAL = @"timeInterval";
|
||||
|
||||
static NSString* const SECURE_SDK_KEYCHAIN_KEY = @"com.alipay.securesdk.storage";
|
||||
static NSString* const LAST_LOGIN_TIME_KEY = @"com.alipay.asssecuritySDK.lastlogintime";
|
||||
static NSString* const SECURE_SDK_RANDOM_STRING = @"com.alipay.securesdk.ranstr";
|
||||
static NSString* const SECURE_SDK_RANDOM_TOKEN = @"com.alipay.securesdk.tokenid";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_SETTING = @"com.alipay.asssecuresdk.config";
|
||||
static NSString* const SECURE_SDK_RANDOM_CLIENTKEY_STRING = @"com.alipay.securesdk.clientkey";
|
||||
static NSString* const SECURE_SDK_KEYCHAIN_TOKEN = @"maintoken";
|
||||
|
||||
static NSString* const ASS_KEYCHAIN_KEY_APPLIST = @"com.alipay.asssecuresdk.list";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_DFP = @"com.alipay.asssecuresdk.dfp";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_GID = @"com.alipay.asssecuresdk.gid";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_JBER = @"com.alipay.asssecuresdk.jber";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_APDIDC = @"com.alipay.asssecuresdk.apdidc";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_TMXTIME = @"com.alipay.asssecuresdk.tmxtime";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_TMXSESSOINID = @"com.alipay.asssecuresdk.tmxsessionid";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_ARPMAC = @"com.alipay.asssecuresdk.arpmac";
|
||||
static NSString* const ASS_KEYCHAIN_KEY_DYNAMICKEY = @"com.alipay.asssecuresdk.dynamickey";
|
||||
|
||||
static NSString* const ASS_USER_DEFAULT_KEY_DEGRADE_TIME = @"asssecuritysdkdegrade";
|
||||
|
||||
static const int overtime = 9;
|
||||
|
||||
//CRASHGUARD
|
||||
static NSString* const CRASH_GUARD_GET_COLOR_INFO = @"05f445";
|
||||
static NSString* const CRASH_GUARD_PRE_COLOR_INFO = @"f379d2";
|
||||
static NSString* const CRASH_GUARD_INIT_COLOR_INFO = @"25f523";
|
||||
static NSString* const CRASH_GUARD_UPDATE_COLOR_CODE = @"8e81ac";
|
||||
static NSString* const CRASH_GUARD_GET_COLOR_LABEL = @"d785d8";
|
||||
static NSString* const CRASH_GUARD_UPDATE_COLOR_LABEL = @"dccf1d";
|
||||
static NSString* const CRASH_GUARD_INIT_TOKEN = @"0780aa";
|
||||
static NSString* const CRASH_GUARD_INIT = @"e37f013";
|
||||
|
||||
|
||||
@interface ASSCommon : NSObject
|
||||
|
||||
+ (int)getCurrentMode;
|
||||
|
||||
+ (NSString*)getRPCURL;
|
||||
|
||||
+ (NSString*)getServerHost;
|
||||
|
||||
+ (void) setRPCHeader:(NSDictionary*)header;
|
||||
|
||||
+ (NSDictionary*)getRPCHeader;
|
||||
|
||||
+ (void)setupEnvironmentMode:(int)mode;
|
||||
|
||||
+ (void)setupRPCAddress:(NSString*)address;
|
||||
|
||||
+ (BOOL)useURLWhitelist;
|
||||
|
||||
+ (BOOL)checkDeviceSystemVersion;
|
||||
|
||||
+ (void)setSecuritySDKConfig:(int)address;
|
||||
|
||||
+ (void)setRpcHeaderAppid:(NSString*)apid;
|
||||
|
||||
+ (NSString*)getRpcHeaderAppid;
|
||||
|
||||
+ (void)setRpcHeaderWorkspaceid:(NSString*)spaceid;
|
||||
|
||||
+ (NSString*)getRpcHeaderWorkspaceid;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,37 @@
|
||||
//
|
||||
// ASSDynamicManager.h
|
||||
// APSecSecuritySDK
|
||||
//
|
||||
// Created by msq on 2019/1/5.
|
||||
// Copyright © 2019 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "APDynamicProtocol.h"
|
||||
|
||||
@interface ASSDynamicManager : NSObject<APDynamicProtocol>
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
- (void)dynamicCheckDispatch:(NSDictionary *)dict;
|
||||
|
||||
- (void)dynamicCheckDispatch:(NSDictionary *)dict withCallBack: (void(^)(Boolean, NSString *))callback;
|
||||
|
||||
- (void)dynamicCheckCustomLocal:(int)delay;
|
||||
|
||||
+ (NSData *)sendDynamicSynchronousRequest:(NSString *)url;
|
||||
|
||||
+ (void)uploadTimerCheckResult:(NSString *)data
|
||||
dynamicTrace:(NSString*)trace
|
||||
dynamicCmd:(int)cmd
|
||||
dynamicNum:(int)num;
|
||||
|
||||
+ (NSString *)uploadCustomFile:(NSString *)path;
|
||||
|
||||
+ (void)recordError:(const char *)pos
|
||||
withAction:(const char *)action
|
||||
errCode:(int)code;
|
||||
|
||||
//+ (NSString *)processFeature;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,39 @@
|
||||
//
|
||||
// ASSLogger.h
|
||||
// ae-security-sdk
|
||||
//
|
||||
// Created by xingchen on 14/12/22.
|
||||
// Copyright (c) 2014年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "ASSProtocolCenter.h"
|
||||
|
||||
#define ASSLog(...) do { \
|
||||
if ([ASSProtocolCenter sharedCenter].logDelegate) { \
|
||||
[[ASSProtocolCenter sharedCenter].logDelegate print:__VA_ARGS__, nil]; \
|
||||
}} while(0)
|
||||
#define ASSDtl(params, detail) [[ASSProtocolCenter sharedCenter].logDelegate print:[NSString stringWithFormat:@"%@%@",params,detail], nil]
|
||||
#define ASSLogError(erroInfo) do { [[ASSLogger sharedInstance] addLogWithMessage: erroInfo]; } while(0)
|
||||
|
||||
@interface ASSLogger : NSObject
|
||||
|
||||
@property (nonatomic, strong) NSString* loggerInfo;
|
||||
|
||||
+(id)sharedInstance;
|
||||
|
||||
-(void)initializeWithArgs:(NSDictionary*)inArgs;
|
||||
|
||||
-(void)addLogWithMessage:(NSString*)message;
|
||||
|
||||
-(void)uploadLog;
|
||||
|
||||
//---------for test
|
||||
-(NSData*)generateMessage:(NSString*)msg;
|
||||
-(void)addLogWithMessage:(NSString *)message withFileName:(NSString*)fileName;
|
||||
-(NSString*)getCurrentFileName:(NSDate*)date;
|
||||
-(void)internal_addLog:(NSString*)message;
|
||||
-(void)uploadLogCertified;
|
||||
|
||||
|
||||
@end
|
||||
@ -0,0 +1,28 @@
|
||||
//
|
||||
// ASSSecureInfo.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by msq on 2018/7/9.
|
||||
// Copyright © 2018年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define ASSSecureInfo ASSSecureInfoCore
|
||||
|
||||
@interface ASSSecureInfo : NSObject
|
||||
/**
|
||||
* 重打包检测
|
||||
* 返回值:YES表示个人签名;NO表示企业签名
|
||||
*
|
||||
*/
|
||||
+ (BOOL)hasPersonSign;
|
||||
|
||||
/**
|
||||
* 越狱检测
|
||||
* 返回值:0表示非越狱;大于0其他值表示越狱
|
||||
*
|
||||
*/
|
||||
+ (uint32_t)checkJB;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,77 @@
|
||||
//
|
||||
// ASSSecureOpenSdk.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by msq on 16/6/1.
|
||||
// Copyright © 2016年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "APSecureSdk.h"
|
||||
#import "ASSTokenResult.h"
|
||||
|
||||
typedef void(^ASSSecureSdkCallbackOpen)(NSString* token, int errorCode);
|
||||
|
||||
@interface ASSSecureOpenSdk : NSObject
|
||||
|
||||
/*
|
||||
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
|
||||
@param appName 应用名称
|
||||
@param appKeyClient 应用客户端密钥
|
||||
@param callback 初始化完成后的结果回调,以Token作为参数
|
||||
*/
|
||||
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient callback:(ASSSecureSdkCallbackOpen)callback;
|
||||
|
||||
|
||||
/*
|
||||
异步初始化vkeyid,推荐在app启动时和收银台页面加载时调用,SDK内部会根据时间戳和设备信息进行判断是否需要进行网络请求,无线程要求
|
||||
@param appName 应用名称
|
||||
@param appKeyClient 应用客户端密钥
|
||||
@param parameters 业务方按约定的自定义参数
|
||||
@param callback 初始化完成后的结果回调,以Token作为参数
|
||||
*/
|
||||
+ (void)initToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient parameters:(NSDictionary*)inArgs callback:(ASSSecureSdkCallbackOpen)callback;
|
||||
|
||||
/*
|
||||
异步强制更新vkeyid,推荐在app启动时和收银台页面加载时调用,无线程要求
|
||||
@param appName 应用名称
|
||||
@param appKeyClient 应用客户端密钥
|
||||
@param parameters 业务方按约定的自定义参数
|
||||
@param callback 初始化完成后的结果回调,以Token作为参数
|
||||
*/
|
||||
+ (void)updateToken:(NSString *)appName appKeyClient:(NSString *)appKeyClient parameters:(NSDictionary*)inArgs callback:(ASSSecureSdkCallbackOpen)callback;
|
||||
|
||||
/*
|
||||
VKEYID和VKEYID token的接口,无网络请求。
|
||||
同步调用前应当先调用过异步初始化接口
|
||||
|
||||
如果异步初始化由于网络等原因失败,同步接口将返回降级方案:
|
||||
1)VKEYID将在旧版apdid存在的情况下返回旧版apdid,否则返回随机串
|
||||
2)VKEYID token将返回空字符串:@""
|
||||
*/
|
||||
+ (ASSTokenResultOpen*)getTokenResult;
|
||||
|
||||
/*
|
||||
*获取exactID
|
||||
*/
|
||||
+ (NSString*)getExactID;
|
||||
|
||||
/*
|
||||
*设置自定义的网关地址
|
||||
*/
|
||||
+ (void)setGatewayAddress:(NSString*)addr;
|
||||
|
||||
+ (void)setRpcConfiguration:(NSDictionary *) config;
|
||||
|
||||
|
||||
/**
|
||||
* 感知埋点。
|
||||
* appName - 应用名 (智科人脸:“zorro”)
|
||||
* appKeyClient - 应用key (智科人脸:“elBwppCSr9nB1LIQ”)
|
||||
* action - 感知行为编号
|
||||
* extParams - 可选扩展参数,以map方式传参
|
||||
*/
|
||||
//+(APRiskResult*)APPerceptRisk:(NSString*)appName appKeyClient:(NSString*)appKeyClient userAction:(NSInteger)action extParams:(NSDictionary *)args;
|
||||
|
||||
|
||||
@end
|
||||
@ -0,0 +1,29 @@
|
||||
//
|
||||
// ASSSgomInfoOpen.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by hongren on 2021/8/16.
|
||||
// Copyright © 2021 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* 感知结果类。
|
||||
*/
|
||||
@interface ASSSgomResult: NSObject
|
||||
|
||||
@property (nonatomic) NSInteger resCode;
|
||||
@property (nonatomic, strong) NSString* resInfo;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface ASSSgomInfoOpen : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
- (ASSSgomResult*)updateSgomInfo:(int) userAction
|
||||
ext:(NSDictionary*) extParams;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,40 @@
|
||||
//
|
||||
// ASSTokenResult.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by xingchen on 15/7/31.
|
||||
// Copyright (c) 2015年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define ASSTokenResult ASSTokenResultCore
|
||||
|
||||
|
||||
@interface ASSTokenResult : NSObject
|
||||
|
||||
@property (nonatomic, strong) NSString* vkeyidToken;
|
||||
@property (nonatomic, strong) NSString* clientKey;
|
||||
@property (nonatomic, strong) NSString* umidToken;
|
||||
@property (nonatomic, strong) NSString* vkeyid;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface ASSTokenResultOpen: NSObject
|
||||
|
||||
@property (nonatomic, strong) NSString* vkeyidToken;
|
||||
@property (nonatomic, strong) NSString* clientKey;
|
||||
@property (nonatomic, strong) NSString* vkeyid;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* 感知结果类。
|
||||
*/
|
||||
@interface APRiskResult: NSObject
|
||||
|
||||
@property (nonatomic) int resCode;
|
||||
@property (nonatomic, strong) NSString* resInfo;
|
||||
|
||||
@end
|
||||
@ -0,0 +1,101 @@
|
||||
//
|
||||
// AntSecurityManager.h
|
||||
// APPSecuritySDK
|
||||
//
|
||||
// Created by msq on 2018/8/20.
|
||||
// Copyright © 2018年 Alipay. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef enum: NSInteger {
|
||||
//正常
|
||||
SEC_STORE_OK = 0,
|
||||
//未找到
|
||||
SEC_STORE_NOT_FOUND = 10001,
|
||||
//拷贝
|
||||
SEC_STORE_CP = 10002,
|
||||
//内部错误
|
||||
SEC_STORE_ERR = 10003,
|
||||
|
||||
SEC_STORE_PARAM_ERR = 10004,
|
||||
|
||||
SEC_STORE_DEGRADE_ERR = 10005,
|
||||
|
||||
} SEC_STORE_ERR_CODE;
|
||||
|
||||
@interface APSecStoreResult : NSObject
|
||||
|
||||
@property (nonatomic, strong) NSString* value;
|
||||
|
||||
@property (nonatomic, assign) SEC_STORE_ERR_CODE errCode;
|
||||
|
||||
@property (nonatomic, assign) int errCodeDetail;
|
||||
|
||||
@end
|
||||
|
||||
@interface AntSecurityManager : NSObject
|
||||
|
||||
/**
|
||||
* brief aes_encrypt
|
||||
* ase 加密
|
||||
* param data 原始数据
|
||||
*
|
||||
* return
|
||||
* 返回加密后数据
|
||||
* nil 表示异常
|
||||
*/
|
||||
+ (NSString*)securityEncrypt:(NSString*)data;
|
||||
|
||||
/**
|
||||
* brief aes_decrypt
|
||||
* ase 解密
|
||||
* param data 加密原始数据
|
||||
*
|
||||
* return
|
||||
* 返回解密后数据
|
||||
* nil 表示异常
|
||||
*/
|
||||
+ (NSString*)securityDecrypt:(NSString*)data;
|
||||
|
||||
/**
|
||||
* brief wbSign
|
||||
*
|
||||
* param data 签名数据
|
||||
*
|
||||
* return
|
||||
* 签名数据 44B base64文本
|
||||
*/
|
||||
+ (NSString*)wbSign:(NSString*)data;
|
||||
|
||||
/**
|
||||
*防拷贝存储保存数据接口
|
||||
*@param key
|
||||
*@param value 需要加密的数据
|
||||
*@param bizType 业务场景
|
||||
*@return 返回错误码,0表示正常,其他非0值都表示异常
|
||||
*/
|
||||
|
||||
+ (int) setSafeStore:(NSString*)key value:(NSString*)value bizType:(NSString*)bizType;
|
||||
|
||||
/**
|
||||
*防拷贝存储读取数据接口
|
||||
*@param key
|
||||
*@param bizType 业务场景
|
||||
*@return 返回APSecStoreResult对象
|
||||
* SEC_STORE_OK 0 正常
|
||||
* SEC_STORE_NOT_FOUND 10001 未找到
|
||||
* SEC_STORE_CP 10002 拷贝
|
||||
* SEC_STORE_ERR 10003 内部错误
|
||||
*/
|
||||
+ (APSecStoreResult*)getSafeStore:(NSString*)key bizType:(NSString*)bizType;
|
||||
|
||||
/**
|
||||
*删除保存数据接口
|
||||
*@param key
|
||||
*@param bizType 业务场景
|
||||
*@return 返回错误码,0表示正常,其他非0值都表示异常
|
||||
*/
|
||||
+ (int) deleteSafeStore:(NSString*)key bizType:(NSString*)bizType;
|
||||
|
||||
@end
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,559 @@
|
||||
<?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>files</key>
|
||||
<dict>
|
||||
<key>APPSecuritySDK-Info.plist</key>
|
||||
<data>
|
||||
Po//BA5tM1BE58borc33LNpqXyw=
|
||||
</data>
|
||||
<key>Headers/APDID.h</key>
|
||||
<data>
|
||||
YaNffM20hdQMiNpnIoEPIHF8o+A=
|
||||
</data>
|
||||
<key>Headers/APDeviceColor.h</key>
|
||||
<data>
|
||||
sqZwHJLZ8j2L+9pkCmTqWHaRPoo=
|
||||
</data>
|
||||
<key>Headers/APDynamic.h</key>
|
||||
<data>
|
||||
TBp9H7ZpcLh5hWGFJbObSnR3sSQ=
|
||||
</data>
|
||||
<key>Headers/APRiskConfigReportRequest.h</key>
|
||||
<data>
|
||||
5vPyFFL4v0DrNrSc35DrU0204M4=
|
||||
</data>
|
||||
<key>Headers/APRiskConfigReportResponse.h</key>
|
||||
<data>
|
||||
WODwFqptygg++OMfRxg5nJhV1tM=
|
||||
</data>
|
||||
<key>Headers/APRiskConfigServiceProtocol.h</key>
|
||||
<data>
|
||||
SJJczKTD81Beaeutnk5eh5yYk6s=
|
||||
</data>
|
||||
<key>Headers/APRiskFileUploadProtocol.h</key>
|
||||
<data>
|
||||
LLqKfgEm/gVHeBO+chBoA32ce6w=
|
||||
</data>
|
||||
<key>Headers/APRiskLoggerProtocol.h</key>
|
||||
<data>
|
||||
KaoFaIX0tcWToF7p3GQSPdm1fNI=
|
||||
</data>
|
||||
<key>Headers/APRiskRPCProtocol.h</key>
|
||||
<data>
|
||||
/OdHTVHBuEGxpO5dJbde5mXoV3Q=
|
||||
</data>
|
||||
<key>Headers/APRiskRemoteLoggerProtocol.h</key>
|
||||
<data>
|
||||
L9Ca3T+cAEzjRZxJTwHTaKytgQs=
|
||||
</data>
|
||||
<key>Headers/APRiskReportRequest.h</key>
|
||||
<data>
|
||||
p0bXoJMwS+46ZRrgLqdvbEFjAmI=
|
||||
</data>
|
||||
<key>Headers/APRiskReportResponse.h</key>
|
||||
<data>
|
||||
3pzJU3RgAQBnPg/R2tEjuGJLfvc=
|
||||
</data>
|
||||
<key>Headers/APRiskRpcConfiguration.h</key>
|
||||
<data>
|
||||
ypma2woz2iRq5pghoIkfFTGVm+8=
|
||||
</data>
|
||||
<key>Headers/APRiskSyncHandlerProtocol.h</key>
|
||||
<data>
|
||||
Vum7s9ObS3JRBHwQBG4BUdk6SN8=
|
||||
</data>
|
||||
<key>Headers/APRiskSyncServiceProtocol.h</key>
|
||||
<data>
|
||||
V0kCGcKZFd1gG+a2uuDzVkzj218=
|
||||
</data>
|
||||
<key>Headers/APSecRDS.h</key>
|
||||
<data>
|
||||
ZKM/B2Jcl/et+wyK8FepeewKCi8=
|
||||
</data>
|
||||
<key>Headers/APSecStore.h</key>
|
||||
<data>
|
||||
rEuJJetfP9Aj7GLQd5R3IgSZw/c=
|
||||
</data>
|
||||
<key>Headers/APSecureSdk.h</key>
|
||||
<data>
|
||||
ywtAfrae7i2g9jT6cXJt775tdng=
|
||||
</data>
|
||||
<key>Headers/APSign.h</key>
|
||||
<data>
|
||||
UxWq8miIIfr3zl7GiKnKdG8PS5s=
|
||||
</data>
|
||||
<key>Headers/ASSCommon.h</key>
|
||||
<data>
|
||||
lrrlG7ZqNaz4ciXX/i5kj/NnG3A=
|
||||
</data>
|
||||
<key>Headers/ASSDynamicManager.h</key>
|
||||
<data>
|
||||
4Vk+CxCMPtR9isbOl7FqtE5jZuo=
|
||||
</data>
|
||||
<key>Headers/ASSLogger.h</key>
|
||||
<data>
|
||||
WvM9Fp3B5ZaI8D+rnHiUcBTxsdk=
|
||||
</data>
|
||||
<key>Headers/ASSSecureInfo.h</key>
|
||||
<data>
|
||||
C7uQ4VE5uwtF5ws1blMIKLKpfmI=
|
||||
</data>
|
||||
<key>Headers/ASSSecureOpenSdk.h</key>
|
||||
<data>
|
||||
KmdnMxfQN0cqG23Vuu092URfYCs=
|
||||
</data>
|
||||
<key>Headers/ASSSgomInfoOpen.h</key>
|
||||
<data>
|
||||
/AhECuNKFdWPVi1Q6oH8rMN66XM=
|
||||
</data>
|
||||
<key>Headers/ASSTokenResult.h</key>
|
||||
<data>
|
||||
X5xdpK/2lE52tWoVFEg/ZivE9UQ=
|
||||
</data>
|
||||
<key>Headers/AntSecurityManager.h</key>
|
||||
<data>
|
||||
w5tB5gEPNoVoucc6rkAlUnUhzV4=
|
||||
</data>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
iJIQ3hx3R9PDehqmni7k6WFuCCI=
|
||||
</data>
|
||||
<key>en.lproj/InfoPlist.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
zmV6UqBSo6r1NOz798vd5O4zTBA=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>module.map</key>
|
||||
<data>
|
||||
nJxa72k41Z2wyhSJqqJgUyYvSgA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>APPSecuritySDK-Info.plist</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Po//BA5tM1BE58borc33LNpqXyw=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
B2XyqSNoreUIQ8uDojzpys2o9qi8XuLbypPrkCR+l8w=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APDID.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
YaNffM20hdQMiNpnIoEPIHF8o+A=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
0nNHe4UB7qz6XFIk/QzRt79MyXYVEOukTfqa3YBJYbY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APDeviceColor.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
sqZwHJLZ8j2L+9pkCmTqWHaRPoo=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
c/mo/+N/KECjwx+fLMepqE+OqRtyfnn2hHshYhmO9IU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APDynamic.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
TBp9H7ZpcLh5hWGFJbObSnR3sSQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
tUrg2Z43qGA67I0mIGCqRWU6Gc2I9Yx9mn5e2mu9XQU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskConfigReportRequest.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5vPyFFL4v0DrNrSc35DrU0204M4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
OMGRtuphIpujn+dr+tCsCMIUw+KV8WQ2zE+bsdDUVCw=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskConfigReportResponse.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
WODwFqptygg++OMfRxg5nJhV1tM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
NvTd6RhL7dbwHKHDPiqBqkIc9aWUQLV5SwFFsEorcqg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskConfigServiceProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
SJJczKTD81Beaeutnk5eh5yYk6s=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
RyMjAfHvdfRW5n+MDPHVlPZ6VM0Kr/T2A133j9ytwDQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskFileUploadProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
LLqKfgEm/gVHeBO+chBoA32ce6w=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
b2wnReDRJkaR7JxbLjLQXdNsfQbd29tkXtSh/5sjuGo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskLoggerProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KaoFaIX0tcWToF7p3GQSPdm1fNI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
k2gnCevVtGYZ1cgzxh9FrAlnVnnDzD/3l8lIuDPVuDc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskRPCProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
/OdHTVHBuEGxpO5dJbde5mXoV3Q=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
1v7HTHTTRf+k61+lf5L1URwSh/MFv72gdnHxTodGrJA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskRemoteLoggerProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
L9Ca3T+cAEzjRZxJTwHTaKytgQs=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
BmYD66C5squNiQNaLya1JrWDDCJ9V8w6C+AVGpr8QF4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskReportRequest.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
p0bXoJMwS+46ZRrgLqdvbEFjAmI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
XH1Y2gtlfBaBoOANsxALY7w6fBn81SMhxHKHNVbEFcQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskReportResponse.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
3pzJU3RgAQBnPg/R2tEjuGJLfvc=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
PAxPqKwwsKVZNGSWI01WquBx9DZcg0tTsnYe8/UwlAM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskRpcConfiguration.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ypma2woz2iRq5pghoIkfFTGVm+8=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
xucoo82E5P13oVpu65VVAqbLK11kcVmtbwRCVlEQI5E=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskSyncHandlerProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Vum7s9ObS3JRBHwQBG4BUdk6SN8=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
4wA6oLvZ4U8u4Ff5SSuprJISDBd1X+Zx5MqlV0aGoik=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APRiskSyncServiceProtocol.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
V0kCGcKZFd1gG+a2uuDzVkzj218=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
oSMsgkxXfg8rdX0ZWmUqRmlTF1fgLfINWgGqYcBeMfI=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APSecRDS.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ZKM/B2Jcl/et+wyK8FepeewKCi8=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
N3/Ych+ScRXiaFWFlsCWXqyGbWdqHhBCHpyp0sQFYPc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APSecStore.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
rEuJJetfP9Aj7GLQd5R3IgSZw/c=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
R7UHcZTpvTV6HWYJm1bEji6L2ry1wSoCprSTRHEqP0M=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APSecureSdk.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ywtAfrae7i2g9jT6cXJt775tdng=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
S8aripi9OWRTxz5CBuWeYoSqMhcgLX2GUUT5Ihnwd8o=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/APSign.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
UxWq8miIIfr3zl7GiKnKdG8PS5s=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Te3d2WjOmORK+v6JoH87htyWMIRPvOVgrOi25YxMBWY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSCommon.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
lrrlG7ZqNaz4ciXX/i5kj/NnG3A=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
adc/BhjRDcEbnGdNnfGBsTu2jTNZbT2Csi+oHGqx2oY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSDynamicManager.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
4Vk+CxCMPtR9isbOl7FqtE5jZuo=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
lMtcIcfdivy04/miLJ4swfqpcY6/+5XYbnQMhMiToRw=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSLogger.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
WvM9Fp3B5ZaI8D+rnHiUcBTxsdk=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
JNJIdG9385MDYXjB+F1Mj1NXHTx8faIKEft1KjkceeI=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSSecureInfo.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
C7uQ4VE5uwtF5ws1blMIKLKpfmI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
VS1+TQV7GpG7Z2dfhSkfmGi3KjE6cGBUxof1/s+bLPo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSSecureOpenSdk.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KmdnMxfQN0cqG23Vuu092URfYCs=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Xq/bbsjzFy4rMCr4osH17Nif1NZQqxmWKvgRHq4THr0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSSgomInfoOpen.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
/AhECuNKFdWPVi1Q6oH8rMN66XM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
j8Lnl+QqgD+rwdHhl7yEh7Op76XuicUYflL4/LNrFXE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/ASSTokenResult.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
X5xdpK/2lE52tWoVFEg/ZivE9UQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
7O9oGJk95fMdxJyn2mOlI1Iqe1vPcmPRvP5Rgj8J9zk=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/AntSecurityManager.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
w5tB5gEPNoVoucc6rkAlUnUhzV4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
5QS2NUN5NsRJ5dYsLrHlgLY/GLXNwZDSsR5gN4lin6k=
|
||||
</data>
|
||||
</dict>
|
||||
<key>en.lproj/InfoPlist.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
zmV6UqBSo6r1NOz798vd5O4zTBA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
kmHsztpgjvF0JW5f3HdMHm49z1M0CcG8OT1JDQHHE/E=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>module.map</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
nJxa72k41Z2wyhSJqqJgUyYvSgA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
XRW9liRaYf8O2c1bSPVShfimQ3Yfcd1SbIKvIE+sv7c=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@ -0,0 +1,9 @@
|
||||
module APPSecuritySDK {
|
||||
header "Headers/APSecureSdk.h"
|
||||
header "Headers/APDID.h"
|
||||
header "Headers/APDeviceColor.h"
|
||||
header "Headers/APSign.h"
|
||||
header "Headers/APDynamic.h"
|
||||
header "Headers/ASSTokenResult.h"
|
||||
export *
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@ -0,0 +1,45 @@
|
||||
//
|
||||
// AliyunFaaceAuthFacade.h
|
||||
// AliyunFaceAuthFacade
|
||||
//
|
||||
// Created by 汪澌哲 on 2022/11/21.
|
||||
// Copyright © 2022 DTF. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <DTFUtility/ZIMResponse.h>
|
||||
#import <DTFUtility/DTFConstant.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface AliyunFaceAuthFacade : NSObject
|
||||
|
||||
+ (void)init;
|
||||
|
||||
+ (void)initSDK;
|
||||
|
||||
/* IPV6的初始化接口 只有你的网络环境强制要求是IPV6的时候,才调用initIPv6。
|
||||
*/
|
||||
+ (void)initIPv6;
|
||||
|
||||
+ (NSString *)getVersion;
|
||||
|
||||
+ (NSString *)getNFCVersion;
|
||||
|
||||
+ (void)preload:(NSDictionary *)param completion:(void (^)(BOOL success))completion;
|
||||
|
||||
+ (NSDictionary *)getMetaInfo;
|
||||
|
||||
+ (NSDictionary *)getNFCMetaInfo;
|
||||
|
||||
+ (void)verifyWith:(NSString *)zimId
|
||||
extParams:(NSDictionary *)params
|
||||
onCompletion:(void (^)(ZIMResponse *response))callback;
|
||||
|
||||
+ (void)nfcVerifyWith:(NSString *)zimId
|
||||
extParams:(NSDictionary *)params
|
||||
onCompletion:(void (^)(ZIMResponse *response))callback;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -0,0 +1,32 @@
|
||||
//
|
||||
// PoPGatewayNetwork.h
|
||||
// ZimDemo
|
||||
//
|
||||
// Created by sanyuan.he on 2020/1/20.
|
||||
// Copyright © 2020 com.. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface PoPGatewayNetwork : NSObject
|
||||
|
||||
@property(nonatomic, assign) NSTimeInterval timeoutForInit;
|
||||
|
||||
@property(nonatomic, assign) NSTimeInterval timeoutForVerify;
|
||||
|
||||
-(void)bizSendContent:(NSDictionary*)serviceParameters completionBlock:(void (^) (NSError *error, NSURLResponse *response, NSData *data))completionBlock;
|
||||
|
||||
-(void)verifySendContent:(NSDictionary*)serviceParameters completionBlock:(void (^) (NSError *error, NSURLResponse *response, NSData *data))completionBlock;
|
||||
|
||||
|
||||
-(void)sendInitFaceVerifyContent:(NSDictionary*)serviceParameters keyName:(NSString*)name initKey:(NSString *)initKey initSimpleValue:(NSString *)initSimpleValue completionBlock:(void (^) (NSError *error, NSURLResponse *response, NSData *data))completionBlock;
|
||||
|
||||
-(void)sendOCRContent:(NSDictionary*)serviceParameters completionBlock:(void (^) (NSError *error, NSURLResponse *response, NSData *data))completionBlock;
|
||||
|
||||
-(void)sendLogContent:(NSDictionary*)serviceParameters extraHeader:(NSDictionary *)header completionBlock:(void (^) (NSError *error, NSURLResponse *response, NSData *data))completionBlock;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 438 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 646 B |
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user