feat: 自定义插件的更新
This commit is contained in:
BIN
LinxiaBaiduLiveLibs/BMKLocationKit.framework/BMKLocationKit
Normal file
BIN
LinxiaBaiduLiveLibs/BMKLocationKit.framework/BMKLocationKit
Normal file
Binary file not shown.
@@ -0,0 +1,141 @@
|
||||
//
|
||||
// BMKGeoFenceManager.h
|
||||
// BMKLocationKit
|
||||
//
|
||||
// Created by baidu on 2017/3/2.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import "BMKGeoFenceRegion.h"
|
||||
|
||||
@protocol BMKGeoFenceManagerDelegate;
|
||||
|
||||
///地理围栏监听状态类型
|
||||
typedef NS_OPTIONS(NSUInteger, BMKGeoFenceActiveAction)
|
||||
{
|
||||
BMKGeoFenceActiveActionNone = 0, ///< 不进行监听
|
||||
BMKGeoFenceActiveActionInside = 1 << 0, ///< 在范围内
|
||||
BMKGeoFenceActiveActionOutside = 1 << 1, ///< 在范围外
|
||||
BMKGeoFenceActiveActionStayed = 1 << 2, ///< 停留(在范围内超过10分钟)
|
||||
};
|
||||
|
||||
///BMKGeoFence errorDomain
|
||||
FOUNDATION_EXPORT NSErrorDomain const _Nonnull BMKGeoFenceErrorDomain;
|
||||
|
||||
///地理围栏错误码
|
||||
typedef NS_ENUM(NSInteger, BMKGeoFenceErrorCode) {
|
||||
BMKGeoFenceErrorUnknown = 1, ///< 未知错误
|
||||
BMKGeoFenceErrorInvalidParameter = 2, ///< 参数错误
|
||||
BMKGeoFenceErrorFailureConnection = 3, ///< 网络连接异常
|
||||
BMKGeoFenceErrorFailureAuth = 4, ///< 鉴权失败
|
||||
BMKGeoFenceErrorNoValidFence = 5, ///< 无可用围栏
|
||||
BMKGeoFenceErroFailureLocating = 6, ///< 定位错误
|
||||
};
|
||||
|
||||
|
||||
///地理围栏管理类
|
||||
@interface BMKGeoFenceManager : NSObject
|
||||
|
||||
|
||||
///实现了 BMKGeoFenceManagerDelegate 协议的类指针。
|
||||
@property (nonatomic, weak, nullable) id<BMKGeoFenceManagerDelegate> delegate;
|
||||
|
||||
|
||||
///需要进行通知的行为,默认为BMKGeoFenceActiveActionInside。
|
||||
@property (nonatomic, assign) BMKGeoFenceActiveAction activeAction;
|
||||
|
||||
|
||||
///指定定位是否会被系统自动暂停。默认为NO。
|
||||
@property (nonatomic, assign) BOOL pausesLocationUpdatesAutomatically;
|
||||
|
||||
|
||||
///是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。
|
||||
@property (nonatomic, assign) BOOL allowsBackgroundLocationUpdates;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 添加一个圆形围栏
|
||||
* @param center 围栏的中心点经纬度坐标
|
||||
* @param radius 围栏的半径,单位:米,要求大于0
|
||||
* @param type 围栏的坐标系类型
|
||||
* @param customID 用户自定义ID,可选,SDK原值返回
|
||||
*/
|
||||
- (void)addCircleRegionForMonitoringWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius coorType:(BMKLocationCoordinateType)type customID:(NSString * _Nullable)customID;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 根据经纬度坐标数据添加一个闭合的多边形围栏,点与点之间按顺序尾部相连, 第一个点与最后一个点相连
|
||||
* @param coordinates 经纬度坐标点数据,coordinates对应的内存会拷贝,调用者负责该内存的释放
|
||||
* @param count 经纬度坐标点的个数,不可小于3个
|
||||
* @param type 围栏的坐标系类型
|
||||
* @param customID 用户自定义ID,可选,SDK原值返回
|
||||
*/
|
||||
- (void)addPolygonRegionForMonitoringWithCoordinates:(CLLocationCoordinate2D * _Nonnull)coordinates count:(NSInteger)count coorType:(BMKLocationCoordinateType)type customID:(NSString * _Nullable)customID;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 根据customID获得指定的围栏,如果customID传nil,则返回全部围栏
|
||||
* @param customID 用户执行添加围栏函数时传入的customID
|
||||
* @return 获得的围栏构成的数组,如果没有结果,返回nil
|
||||
*/
|
||||
- (NSArray * _Nullable)geoFenceRegionsWithCustomID:(NSString * _Nullable)customID;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 移除指定围栏
|
||||
* @param region 要停止监控的围栏
|
||||
*/
|
||||
- (void)removeTheGeoFenceRegion:(BMKGeoFenceRegion * _Nonnull)region;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 移除指定customID的围栏
|
||||
* @param customID 用户执行添加围栏函数时传入的customID
|
||||
*/
|
||||
- (void)removeGeoFenceRegionsWithCustomID:(NSString * _Nullable)customID;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 移除所有围栏
|
||||
*/
|
||||
- (void)removeAllGeoFenceRegions;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
///地理围栏代理协议,该协议定义了获取地理围栏相关回调方法,包括添加、状态改变等。
|
||||
@protocol BMKGeoFenceManagerDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* @brief 为了适配app store关于新的后台定位的审核机制(app store要求如果开发者只配置了使用期间定位,则代码中不能出现申请后台定位的逻辑),当开发者在plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription时,需要在该delegate中调用后台定位api:[locationManager requestAlwaysAuthorization]。开发者如果只配置了NSLocationWhenInUseUsageDescription,且只有使用期间的定位需求,则无需在delegate中实现逻辑。
|
||||
* @param manager 定位 BMKGeoFenceManager 类。
|
||||
* @param locationManager 系统 CLLocationManager 类 。
|
||||
* @since 1.7.0
|
||||
*/
|
||||
- (void)BMKGeoFenceManager:(BMKGeoFenceManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager;
|
||||
|
||||
/**
|
||||
* @brief 添加地理围栏完成后的回调,成功与失败都会调用
|
||||
* @param manager 地理围栏管理类
|
||||
* @param regions 成功添加的一个或多个地理围栏构成的数组
|
||||
* @param customID 用户执行添加围栏函数时传入的customID
|
||||
* @param error 添加失败的错误信息
|
||||
*/
|
||||
- (void)BMKGeoFenceManager:(BMKGeoFenceManager * _Nonnull)manager didAddRegionForMonitoringFinished:(NSArray <BMKGeoFenceRegion *> * _Nullable)regions customID:(NSString * _Nullable)customID error:(NSError * _Nullable)error;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 地理围栏状态改变时回调,当围栏状态的值发生改变,定位失败都会调用
|
||||
* @param manager 地理围栏管理类
|
||||
* @param region 状态改变的地理围栏
|
||||
* @param customID 用户执行添加围栏函数时传入的customID
|
||||
* @param error 错误信息,如定位相关的错误
|
||||
*/
|
||||
- (void)BMKGeoFenceManager:(BMKGeoFenceManager * _Nonnull)manager didGeoFencesStatusChangedForRegion:(BMKGeoFenceRegion * _Nullable)region customID:(NSString * _Nullable)customID error:(NSError * _Nullable)error;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
//
|
||||
// BMKGeoFenceRegion.h
|
||||
// BMKLocationKit
|
||||
//
|
||||
// Created by baidu on 2017/3/2.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
#import "BMKLocationManager.h"
|
||||
|
||||
///BMKGeoFence Region State
|
||||
typedef NS_ENUM(NSInteger, BMKGeoFenceRegionStatus)
|
||||
{
|
||||
BMKGeoFenceRegionStatusUnknown = 0, ///< 未知
|
||||
BMKGeoFenceRegionStatusInside = 1, ///< 在范围内
|
||||
BMKGeoFenceRegionStatusOutside = 1 << 1, ///< 在范围外
|
||||
BMKGeoFenceRegionStatusStayed = 1 << 2, ///< 停留(在范围内超过10分钟)
|
||||
};
|
||||
|
||||
#pragma mark - BMKGeoFenceRegion
|
||||
|
||||
|
||||
///地理围栏基类,不可直接使用
|
||||
@interface BMKGeoFenceRegion : NSObject<NSCopying>
|
||||
|
||||
|
||||
///BMKGeoFenceRegion的唯一标识符
|
||||
@property (nonatomic, copy, readonly) NSString *identifier;
|
||||
|
||||
|
||||
///用户自定义ID,可为nil。
|
||||
@property (nonatomic, copy, readonly) NSString *customID;
|
||||
|
||||
|
||||
///坐标点和围栏的关系,比如用户的位置和围栏的关系
|
||||
@property (nonatomic, assign) BMKGeoFenceRegionStatus fenceStatus;
|
||||
|
||||
///设定围栏坐标系类型。默认为 BMKLocationCoordinateTypeGCJ02。
|
||||
@property(nonatomic, readonly) BMKLocationCoordinateType coordinateType;
|
||||
|
||||
///上次发生状态变化的时间
|
||||
@property(nonatomic, assign)NSTimeInterval lastEventTime;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 判断位置与围栏状态
|
||||
* @param CLLocationCoordinate2D 坐标值
|
||||
* @return 返回BMKGeoFenceRegionStatus状态
|
||||
*/
|
||||
-(BMKGeoFenceRegionStatus)judgeStatusWithCoor:(CLLocationCoordinate2D)coor;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - BMKLocationCircleRegion
|
||||
|
||||
|
||||
///圆形地理围栏
|
||||
@interface BMKGeoFenceCircleRegion : BMKGeoFenceRegion
|
||||
|
||||
|
||||
///中心点的经纬度坐标
|
||||
@property (nonatomic, readonly) CLLocationCoordinate2D center;
|
||||
|
||||
|
||||
///半径,单位:米
|
||||
@property (nonatomic, readonly) CLLocationDistance radius;
|
||||
|
||||
/**
|
||||
* @brief 构造圆形围栏
|
||||
* @param customid 用户自定义ID
|
||||
* @param identityid 识别id
|
||||
* @param center 中心坐标
|
||||
* @param radius 围栏半径
|
||||
* @param type 坐标系类型
|
||||
* @return BMKGeoFenceCircleRegion id
|
||||
*/
|
||||
- (id)initWithCustomID:(NSString *)customid identityID:(NSString *)identityid center:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius coor:(BMKLocationCoordinateType)type;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark -BMKGeoFencePolygonRegion
|
||||
|
||||
|
||||
///多边形地理围栏
|
||||
@interface BMKGeoFencePolygonRegion : BMKGeoFenceRegion
|
||||
|
||||
|
||||
///经纬度坐标点数据
|
||||
@property (nonatomic, readonly) CLLocationCoordinate2D *coordinates;
|
||||
|
||||
|
||||
///经纬度坐标点的个数
|
||||
@property (nonatomic, readonly) NSInteger count;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 构造多边形围栏
|
||||
* @param customid 用户自定义ID
|
||||
* @param identityid 识别id
|
||||
* @param coor 多边形顶点
|
||||
* @param count 顶点个数
|
||||
* @param type 坐标系类型
|
||||
* @return BMKGeoFencePolygonRegion id
|
||||
*/
|
||||
- (id)initWithCustomID:(NSString *)customid identityID:(NSString *)identityid coor:(CLLocationCoordinate2D *)coor count:(NSInteger)count coor:(BMKLocationCoordinateType)type;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// BMKLocation.h
|
||||
// LocationComponent
|
||||
//
|
||||
// Created by baidu on 2017/8/16.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef BMKLocation_h
|
||||
#define BMKLocation_h
|
||||
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
#import "BMKLocationReGeocode.h"
|
||||
|
||||
/**
|
||||
* BMKLocationProvider 位置数据来源,分iOS系统定位和其他定位服务结果两种,目前仅支持iOS系统定位服务
|
||||
*
|
||||
*/
|
||||
typedef NS_ENUM(int, BMKLocationProvider) {
|
||||
|
||||
BMKLocationProviderIOS = 0, //!<位置来源于iOS本身定位
|
||||
BMKLocationProviderOther //!<位置来源于其他定位服务
|
||||
|
||||
};
|
||||
|
||||
///描述百度iOS 定位数据
|
||||
@interface BMKLocation : NSObject
|
||||
|
||||
///BMKLocation 位置数据
|
||||
@property(nonatomic, copy, readonly) CLLocation * _Nullable location;
|
||||
|
||||
///BMKLocation 地址数据
|
||||
@property(nonatomic, copy) BMKLocationReGeocode * _Nullable rgcData;
|
||||
|
||||
///BMKLocation 位置来源
|
||||
@property(nonatomic, assign) BMKLocationProvider provider;
|
||||
|
||||
///BMKLocation 位置ID
|
||||
@property(nonatomic, retain) NSString * _Nullable locationID;
|
||||
|
||||
/*
|
||||
* floorString
|
||||
*
|
||||
* Discussion:
|
||||
* 室内定位成功时返回的楼层信息,ex:f1
|
||||
*/
|
||||
@property(readonly, nonatomic, copy, nullable) NSString *floorString;
|
||||
|
||||
/*
|
||||
* buildingID
|
||||
*
|
||||
* Discussion:
|
||||
* 室内定位成功时返回的百度建筑物ID
|
||||
*/
|
||||
@property(readonly, nonatomic, copy, nullable) NSString *buildingID;
|
||||
|
||||
/*
|
||||
* buildingName
|
||||
*
|
||||
* Discussion:
|
||||
* 室内定位成功时返回的百度建筑物名称
|
||||
*/
|
||||
@property(readonly, nonatomic, copy, nullable) NSString *buildingName;
|
||||
|
||||
|
||||
/*
|
||||
* extraInfo
|
||||
*
|
||||
* Discussion:
|
||||
* 定位附加信息,如停车位code识别结果、停车位code示例、vdr推算结果置信度等
|
||||
*/
|
||||
@property(readonly, nonatomic, copy, nullable) NSDictionary * extraInfo;
|
||||
|
||||
/**
|
||||
* @brief 初始化BMKLocation实例
|
||||
* @param loc CLLocation对象
|
||||
* @param rgc BMKLocationReGeocode对象
|
||||
* @return BMKLocation id
|
||||
*/
|
||||
- (id _Nonnull)initWithLocation:(CLLocation * _Nullable)loc withRgcData:(BMKLocationReGeocode * _Nullable)rgc;
|
||||
|
||||
/**
|
||||
* @brief 构造BMKLocation
|
||||
* @param location CLLocation
|
||||
* @param floorString 楼层字符串
|
||||
* @param buildingID 建筑物ID
|
||||
* @param buildingName 建筑物名称
|
||||
* @param info 位置附加信息
|
||||
* @return BMKLocation id
|
||||
*/
|
||||
-(id _Nonnull)initWithLocation:(CLLocation * _Nullable)location floorString:(NSString * _Nullable)floorString buildingID:(NSString * _Nullable)buildingID
|
||||
buildingName:(NSString * _Nullable)buildingName extraInfo:(NSDictionary * _Nullable)info withRgcData:(BMKLocationReGeocode * _Nullable)rgc;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
#endif /* BMKLocation_h */
|
||||
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// BMKLocationAuth.h
|
||||
// LocationComponent
|
||||
//
|
||||
// Created by baidu on 2017/4/10.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef BMKLocationAuth_h
|
||||
#define BMKLocationAuth_h
|
||||
|
||||
///定位鉴权错误码
|
||||
typedef NS_ENUM(NSInteger, BMKLocationAuthErrorCode) {
|
||||
BMKLocationAuthErrorUnknown = -1, ///< 未知错误
|
||||
BMKLocationAuthErrorSuccess = 0, ///< 鉴权成功
|
||||
BMKLocationAuthErrorNetworkFailed = 1, ///< 因网络鉴权失败
|
||||
BMKLocationAuthErrorFailed = 2, ///< KEY非法鉴权失败
|
||||
|
||||
};
|
||||
///通知Delegate
|
||||
@protocol BMKLocationAuthDelegate <NSObject>
|
||||
@optional
|
||||
|
||||
/**
|
||||
*@brief 返回授权验证错误
|
||||
*@param iError 错误号 : 为0时验证通过,具体参加BMKLocationAuthErrorCode
|
||||
*/
|
||||
- (void)onCheckPermissionState:(BMKLocationAuthErrorCode)iError;
|
||||
@end
|
||||
|
||||
|
||||
///BMKLocationAuth类。用于鉴权
|
||||
@interface BMKLocationAuth : NSObject
|
||||
|
||||
///鉴权状态0:成功; 1:网络错误; 2:授权失败
|
||||
@property(nonatomic, readonly, assign) BMKLocationAuthErrorCode permisionState;
|
||||
|
||||
/**
|
||||
* @brief 得到BMKLocationAuth的单例
|
||||
*/
|
||||
+ (BMKLocationAuth*)sharedInstance;
|
||||
|
||||
|
||||
/**
|
||||
*@brief 启动引擎
|
||||
*@param key 申请的有效key
|
||||
*@param delegate 回调是否鉴权成功
|
||||
*/
|
||||
-(void)checkPermisionWithKey:(NSString*)key authDelegate:(id<BMKLocationAuthDelegate>)delegate;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
#endif /* BMKLocationAuth_h */
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// BMKLocationComponent.h
|
||||
// LocationComponent
|
||||
//
|
||||
// Created by Baidu on 3/31/14.
|
||||
// Copyright (c) 2014 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import "BMKLocationManager.h"
|
||||
#import "BMKLocationKitVersion.h"
|
||||
#import "BMKLocationPoi.h"
|
||||
#import "BMKLocation.h"
|
||||
#import "BMKGeoFenceRegion.h"
|
||||
#import "BMKGeoFenceManager.h"
|
||||
#import "BMKLocationReGeocode.h"
|
||||
#import "BMKLocationAuth.h"
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// BMKLocationKitVersion.h
|
||||
// BMKLocationKit
|
||||
//
|
||||
// Created by baidu on 17/9/9.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef BMKLocationKitVersion_h
|
||||
#define BMKLocationKitVersion_h
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
/**
|
||||
*获取当前定位sdk 的版本号
|
||||
*当前定位sdk版本 : 2.0.0
|
||||
*@return 返回当前定位sdk 的版本号
|
||||
*/
|
||||
UIKIT_EXTERN NSString* BMKLocationKitVersion();
|
||||
|
||||
/**
|
||||
*获取当前定位sdk 的float版本号
|
||||
*当前定位sdk版本 : 2.0
|
||||
*@return 返回当前定位sdk 的float版本号
|
||||
*/
|
||||
UIKIT_EXTERN float BMKLocationKitFloatVersion();
|
||||
|
||||
|
||||
|
||||
#endif /* BMKLocationKitVersion_h */
|
||||
@@ -0,0 +1,296 @@
|
||||
//
|
||||
// BMKLocationManager.h
|
||||
// BMKLocationKit
|
||||
//
|
||||
// Created by baidu on 2017/3/2.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Availability.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
#import "BMKLocationReGeocode.h"
|
||||
#import "BMKLocation.h"
|
||||
|
||||
/** BMKLocationCoordinateType 枚举坐标系类型
|
||||
*
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, BMKLocationCoordinateType)
|
||||
{
|
||||
BMKLocationCoordinateTypeBMK09LL = 0, ///<BMK09LL
|
||||
BMKLocationCoordinateTypeBMK09MC, ///<BMK09MC
|
||||
BMKLocationCoordinateTypeWGS84, ///<WGS84
|
||||
BMKLocationCoordinateTypeGCJ02 ///<GCJ02
|
||||
};
|
||||
|
||||
/** BMKLocationNetworkState 枚举识别网络状态类型
|
||||
*
|
||||
*/
|
||||
typedef NS_ENUM(int, BMKLocationNetworkState) {
|
||||
BMKLocationNetworkStateUnknown = 0, ///<网络状态未知
|
||||
BMKLocationNetworkStateWifi, ///<网络状态wifi
|
||||
BMKLocationNetworkStateWifiHotSpot, ///<网络状态连接WIFI移动热点
|
||||
BMKLocationNetworkStateMobile2G, ///<网络状态移动2G
|
||||
BMKLocationNetworkStateMobile3G, ///<网络状态移动3G
|
||||
BMKLocationNetworkStateMobile4G ///<网络状态移动4G
|
||||
|
||||
};
|
||||
|
||||
|
||||
///BMKLocation errorDomain
|
||||
|
||||
FOUNDATION_EXPORT NSErrorDomain const _Nonnull BMKLocationErrorDomain;
|
||||
|
||||
///BMKLocation errorCode
|
||||
typedef NS_ENUM(NSInteger, BMKLocationErrorCode)
|
||||
{
|
||||
BMKLocationErrorUnKnown = 0, ///<未知异常
|
||||
BMKLocationErrorLocFailed = 1, ///<位置未知,持续定位中
|
||||
BMKLocationErrorDenied = 2, ///<手机不允许定位,请确认用户授予定位权限或者手机是否打开定位开关
|
||||
BMKLocationErrorNetWork = 3, ///<因为网络原因导致系统定位失败
|
||||
BMKLocationErrorHeadingFailed = 4, ///<获取手机方向信息失败
|
||||
BMKLocationErrorGetExtraNetworkFailed = 5, ///<网络原因导致获取额外信息(地址、网络状态等信息)失败
|
||||
BMKLocationErrorGetExtraParseFailed = 6, ///<网络返回数据解析失败导致获取额外信息(地址、网络状态等信息)失败
|
||||
BMKLocationErrorFailureAuth = 7, ///<鉴权失败导致无法返回定位、地址等信息
|
||||
};
|
||||
|
||||
/** BMKLAccuracyAuthorization 枚举返回定位精度等级
|
||||
*
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, BMKLAccuracyAuthorization) {
|
||||
|
||||
BMKLAccuracyAuthorizationFullAccuracy, ///<全量定位精度等级,该等级下定位返回结果会尽可能精准
|
||||
BMKLAccuracyAuthorizationReducedAccuracy, ///<降级定位精度等级,该等级下定位会返回大概5km精度范围的点,定位频率、实时性上也会变慢,比如可能是20分钟之前的点,适用于那些只要求城市级别精度的app使用;ios14之后,该等级受用户控制,需要高等级权限的app需要对应做好适配工作
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief 单次定位返回Block
|
||||
* @param location 定位信息,数据包括CLLocation 位置数据,BMKLocationReGeocode 地址信息,参考BMKLocation。
|
||||
* @param state 移动热点状态
|
||||
* @param error 错误信息,参考 BMKLocationErrorCode
|
||||
*/
|
||||
typedef void (^BMKLocatingCompletionBlock)(BMKLocation * _Nullable location, BMKLocationNetworkState state , NSError * _Nullable error);
|
||||
|
||||
|
||||
|
||||
@protocol BMKLocationManagerDelegate;
|
||||
|
||||
#pragma mark - BMKLocationManager
|
||||
|
||||
|
||||
///BMKLocationManager类。初始化之前请设置 BMKLocationAuth 中的APIKey,否则将无法正常使用服务.
|
||||
@interface BMKLocationManager : NSObject
|
||||
|
||||
///实现了 BMKLocationManagerDelegate 协议的类指针。
|
||||
@property (nonatomic, weak, nullable) id<BMKLocationManagerDelegate> delegate;
|
||||
|
||||
///设定定位的最小更新距离。默认为 kCLDistanceFilterNone。
|
||||
@property(nonatomic, assign) CLLocationDistance distanceFilter;
|
||||
|
||||
///设定定位精度。默认为 kCLLocationAccuracyBest。
|
||||
@property(nonatomic, assign) CLLocationAccuracy desiredAccuracy;
|
||||
|
||||
///设定定位类型。默认为 CLActivityTypeAutomotiveNavigation。
|
||||
@property(nonatomic, assign) CLActivityType activityType;
|
||||
|
||||
///设定定位坐标系类型。默认为 BMKLocationCoordinateTypeGCJ02。
|
||||
@property(nonatomic, assign) BMKLocationCoordinateType coordinateType;
|
||||
|
||||
///指定定位是否会被系统自动暂停。默认为NO。
|
||||
@property(nonatomic, assign) BOOL pausesLocationUpdatesAutomatically;
|
||||
|
||||
|
||||
///是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。由于iOS系统限制,需要在定位未开始之前或定位停止之后,修改该属性的值才会有效果。
|
||||
@property(nonatomic, assign) BOOL allowsBackgroundLocationUpdates;
|
||||
|
||||
///指定单次定位超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。注意: 单次定位超时时间从确定了定位权限(非kCLAuthorizationStatusNotDetermined状态)后开始计算。
|
||||
@property(nonatomic, assign) NSInteger locationTimeout;
|
||||
|
||||
///指定单次定位逆地理超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。
|
||||
@property(nonatomic, assign) NSInteger reGeocodeTimeout;
|
||||
|
||||
///连续定位是否返回逆地理信息,默认YES。
|
||||
@property (nonatomic, assign) BOOL locatingWithReGeocode;
|
||||
|
||||
///定位sdk-v1.3之后,开发者可以选择是否需要最新版本rgc数据,1.9之后默认是需要YES;YES的情况下,定位sdk会实时返回最新的rgc数据,如城市变更等数据都会实时更新
|
||||
@property (nonatomic, assign) BOOL isNeedNewVersionReGeocode;
|
||||
|
||||
|
||||
///开发者可以指定该用户的id,用于后续统一识别用户,便于查找问题
|
||||
@property(nonatomic, copy, nullable) NSString * userID;
|
||||
|
||||
///返回定位精度等级,IOS14之后用户可以直接控制返回定位的精度等级,开发者可以通过这个值适配不同定位等级下的产品逻辑
|
||||
@property (nonatomic, readonly) BMKLAccuracyAuthorization accuracyAuthorization;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 单次定位。如果当前正在连续定位,调用此方法将会失败,返回NO。\n该方法将会根据设定的 desiredAccuracy 去获取定位信息。如果获取的定位信息精确度低于 desiredAccuracy ,将会持续的等待定位信息,直到超时后通过completionBlock返回精度最高的定位信息。\n可以通过 stopUpdatingLocation 方法去取消正在进行的单次定位请求。
|
||||
* @param withReGeocode 是否带有逆地理信息(获取逆地理信息需要联网)
|
||||
* @param withNetWorkState 是否带有移动热点识别状态(需要联网)
|
||||
* @param completionBlock 单次定位完成后的Block
|
||||
* @return 是否成功添加单次定位Request
|
||||
*/
|
||||
- (BOOL)requestLocationWithReGeocode:(BOOL)withReGeocode withNetworkState:(BOOL)withNetWorkState completionBlock:(BMKLocatingCompletionBlock _Nonnull)completionBlock;
|
||||
|
||||
/**
|
||||
* @brief 开始连续定位。调用此方法会cancel掉所有的单次定位请求。
|
||||
*/
|
||||
- (void)startUpdatingLocation;
|
||||
|
||||
/**
|
||||
* @brief 停止连续定位。调用此方法会cancel掉所有的单次定位请求,可以用来取消单次定位。
|
||||
*/
|
||||
- (void)stopUpdatingLocation;
|
||||
|
||||
/**
|
||||
* @brief 请求网络状态结果回调。
|
||||
*/
|
||||
- (void)requestNetworkState;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 该方法返回设备是否支持设备朝向事件回调。
|
||||
* @return 是否支持设备朝向事件回调
|
||||
*/
|
||||
+ (BOOL)headingAvailable;
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager开始设备朝向事件回调。
|
||||
*/
|
||||
- (void)startUpdatingHeading;
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager停止设备朝向事件回调。
|
||||
*/
|
||||
- (void)stopUpdatingHeading;
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager尝试使用高精度室内定位。在特定的室内场景下会有更高精度的定位回调,只在室内定位版本生效。
|
||||
*/
|
||||
- (void)tryIndoorLocation;
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager会关闭高精度室内定位,只在室内定位版本生效。
|
||||
*/
|
||||
- (void)stopIndoorLocation;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 转换为百度经纬度的坐标
|
||||
* @param coordinate 待转换的经纬度
|
||||
* @param srctype 待转换坐标系类型
|
||||
* @param destype 目标百度坐标系类型(bd09ll,bd09mc)
|
||||
* @return 目标百度坐标系经纬度
|
||||
*/
|
||||
+ (CLLocationCoordinate2D) BMKLocationCoordinateConvert:(CLLocationCoordinate2D) coordinate SrcType:(BMKLocationCoordinateType)srctype DesType:(BMKLocationCoordinateType)destype;
|
||||
|
||||
/**
|
||||
* @brief 判断目标经纬度是否在大陆以及港、澳地区。
|
||||
* @param coordinate 待判断的目标经纬度
|
||||
* @param coortype 待判断经纬度的坐标系类型
|
||||
* @return 是否在大陆以及港、澳地区
|
||||
*/
|
||||
+ (BOOL) BMKLocationDataAvailableForCoordinate:(CLLocationCoordinate2D)coordinate withCoorType:(BMKLocationCoordinateType)coortype;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 返回当前定位权限
|
||||
* @return CLAuthorizationStatus 定位权限枚举类型
|
||||
*/
|
||||
- (CLAuthorizationStatus)authorizationStatus;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 如果你没有全量定位等级精度权限,利用该接口可以临时请求一次全量定位精度等级,系统会抛出弹框让用户确认是否授权app授予相应权限
|
||||
* @param purposeKey info.plist中NSLocationTemporaryUsageDescriptionDictionary定义的key,对应相应的value可以详细描述申请全量定位精度等级的原因
|
||||
* @param completion 回调是否
|
||||
* @return
|
||||
*/
|
||||
- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString * _Nonnull)purposeKey completion:(void(^ _Nullable)(NSError * _Nullable))completion API_AVAILABLE(ios(14.0));
|
||||
|
||||
/**
|
||||
* @brief 请求一次全量定位精度等级
|
||||
* @param purposeKey info.plist中NSLocationTemporaryUsageDescriptionDictionary定义的key
|
||||
* @return
|
||||
*/
|
||||
- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString * _Nonnull)purposeKey API_AVAILABLE(ios(14.0));
|
||||
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark - BMKLocationManagerDelegate
|
||||
|
||||
|
||||
///BMKLocationManagerDelegate 协议定义了发生错误时的错误回调方法,连续定位的回调方法等。
|
||||
@protocol BMKLocationManagerDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* @brief 为了适配app store关于新的后台定位的审核机制(app store要求如果开发者只配置了使用期间定位,则代码中不能出现申请后台定位的逻辑),当开发者在plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription时,需要在该delegate中调用后台定位api:[locationManager requestAlwaysAuthorization]。开发者如果只配置了NSLocationWhenInUseUsageDescription,且只有使用期间的定位需求,则无需在delegate中实现逻辑。
|
||||
* @param manager 定位 BMKLocationManager 类。
|
||||
* @param locationManager 系统 CLLocationManager 类 。
|
||||
* @since 1.6.0
|
||||
*/
|
||||
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager;
|
||||
|
||||
/**
|
||||
* @brief 当定位发生错误时,会调用代理的此方法。
|
||||
* @param manager 定位 BMKLocationManager 类。
|
||||
* @param error 返回的错误,参考 CLError 。
|
||||
*/
|
||||
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didFailWithError:(NSError * _Nullable)error;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 连续定位回调函数。
|
||||
* @param manager 定位 BMKLocationManager 类。
|
||||
* @param location 定位结果,参考BMKLocation。
|
||||
* @param error 错误信息。
|
||||
*/
|
||||
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didUpdateLocation:(BMKLocation * _Nullable)location orError:(NSError * _Nullable)error;
|
||||
|
||||
/**
|
||||
* @brief 定位权限状态改变时回调函数
|
||||
* @param manager 定位 BMKLocationManager 类。
|
||||
* @param status 定位权限状态。
|
||||
*/
|
||||
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status API_DEPRECATED_WITH_REPLACEMENT("-BMKLocationManagerDidChangeAuthorization", ios(4.2, 14.0));
|
||||
|
||||
|
||||
/**
|
||||
* @brief authorizationStatus或者accuracyAuthorization有变化时回调函数
|
||||
* @param manager 定位 BMKLocationManager 类。
|
||||
*/
|
||||
- (void)BMKLocationManagerDidChangeAuthorization:(BMKLocationManager * _Nonnull)manager;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager提示需要设备校正回调方法。
|
||||
* @param manager 提供该定位结果的BMKLocationManager类的实例。
|
||||
*/
|
||||
- (BOOL)BMKLocationManagerShouldDisplayHeadingCalibration:(BMKLocationManager * _Nonnull)manager;
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager提供设备朝向的回调方法。
|
||||
* @param manager 提供该定位结果的BMKLocationManager类的实例
|
||||
* @param heading 设备的朝向结果
|
||||
*/
|
||||
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager
|
||||
didUpdateHeading:(CLHeading * _Nullable)heading;
|
||||
|
||||
/**
|
||||
* @brief 该方法为BMKLocationManager所在App系统网络状态改变的回调事件。
|
||||
* @param manager 提供该定位结果的BMKLocationManager类的实例
|
||||
* @param state 当前网络状态
|
||||
* @param error 错误信息
|
||||
*/
|
||||
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager
|
||||
didUpdateNetworkState:(BMKLocationNetworkState)state orError:(NSError * _Nullable)error;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// BMKLocationPoi.h
|
||||
// BMKLocationKit
|
||||
//
|
||||
// Created by baidu on 2017/3/2.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
///描述Poi各属性
|
||||
@interface BMKLocationPoi : NSObject
|
||||
|
||||
///BMKLocationPoi的id属性
|
||||
@property(nonatomic, copy, readonly) NSString *uid;
|
||||
|
||||
///BMKLocationPoi的名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *name;
|
||||
|
||||
///BMKLocationPoi的标签属性
|
||||
@property(nonatomic, copy, readonly) NSString *tags;
|
||||
|
||||
///BMKLocationPoi的地址属性
|
||||
@property(nonatomic, copy, readonly) NSString *addr;
|
||||
|
||||
///BMKLocationPoi的可信度
|
||||
@property(nonatomic, assign, readonly) float relaiability;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 通过NSDictionary初始化方法一
|
||||
*/
|
||||
- (id)initWithDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 通过NSDictionary初始化方法二
|
||||
*/
|
||||
- (id)initWithTwoDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// BMKLocationPoiRegion.h
|
||||
// LocationComponent
|
||||
//
|
||||
// Created by Jiang,Fangsheng on 2019/9/4.
|
||||
// Copyright © 2019 baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef BMKLocationPoiRegion_h
|
||||
#define BMKLocationPoiRegion_h
|
||||
|
||||
|
||||
///描述PoiRegion各属性
|
||||
@interface BMKLocationPoiRegion : NSObject
|
||||
|
||||
///BMKLocationPoiRegion的方向属性,如『内』、『外』
|
||||
@property(nonatomic, copy, readonly) NSString *directionDesc;
|
||||
|
||||
///BMKLocationPoiRegion的名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *name;
|
||||
|
||||
///BMKLocationPoiRegion的标签属性
|
||||
@property(nonatomic, copy, readonly) NSString *tags;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 通过NSDictionary初始化方法一
|
||||
*/
|
||||
- (id)initWithDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
#endif /* BMKLocationPoiRegion_h */
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// BMKLocationReGeocode.h
|
||||
// BMKLocationKit
|
||||
//
|
||||
// Created by baidu on 2017/3/2.
|
||||
// Copyright © 2017年 baidu. All rights reserved.
|
||||
//
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "BMKLocationPoi.h"
|
||||
#import "BMKLocationPoiRegion.h"
|
||||
|
||||
///BMKLocationReGeocode类。描述跟地址有关的信息.
|
||||
@interface BMKLocationReGeocode : NSObject
|
||||
|
||||
///国家名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *country;
|
||||
|
||||
///国家编码属性
|
||||
@property(nonatomic, copy, readonly) NSString *countryCode;
|
||||
|
||||
///省份名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *province;
|
||||
|
||||
///城市名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *city;
|
||||
|
||||
///区名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *district;
|
||||
|
||||
///乡镇名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *town;
|
||||
|
||||
///街道名字属性
|
||||
@property(nonatomic, copy, readonly) NSString *street;
|
||||
|
||||
///街道号码属性
|
||||
@property(nonatomic, copy, readonly) NSString *streetNumber;
|
||||
|
||||
///城市编码属性
|
||||
@property(nonatomic, copy, readonly) NSString *cityCode;
|
||||
|
||||
///行政区划编码属性
|
||||
@property(nonatomic, copy, readonly) NSString *adCode;
|
||||
|
||||
|
||||
///位置语义化结果的定位点在什么地方周围的描述信息
|
||||
@property(nonatomic, copy, readonly) NSString *locationDescribe;
|
||||
|
||||
|
||||
///位置语义化结果的属性,该定位点周围的poi列表信息
|
||||
@property(nonatomic, retain, readonly) NSArray<BMKLocationPoi *> *poiList;
|
||||
|
||||
///位置语义化结果的定位点在什么地方周围的描述信息
|
||||
@property(nonatomic, strong, readonly) BMKLocationPoiRegion *poiRegion;
|
||||
|
||||
/**
|
||||
* @brief 通过NSData初始化方法
|
||||
*/
|
||||
- (id)initWithReGeocodeString:(NSData *)reGeocodeString;
|
||||
|
||||
|
||||
/**
|
||||
* @brief 通过JSON初始化方法
|
||||
*/
|
||||
- (id)initWithJsonString:(NSData *)jsonString withHighAccuracy:(BOOL)highAcc;
|
||||
|
||||
@end
|
||||
11
LinxiaBaiduLiveLibs/BMKLocationKit.framework/readme.txt
Normal file
11
LinxiaBaiduLiveLibs/BMKLocationKit.framework/readme.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
1、版本:
|
||||
百度地图iOS定位SDK v2.0.0
|
||||
|
||||
2、是否带IDFA:
|
||||
是
|
||||
|
||||
3、是否为Bitcode:
|
||||
是
|
||||
|
||||
4、集成方法:
|
||||
http://lbsyun.baidu.com/index.php?title=ios-locsdk
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// QualityUtil.h
|
||||
// IDLFaceSDK
|
||||
//
|
||||
// Created by Tong,Shasha on 2017/5/24.
|
||||
// Copyright © 2017年 Baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreGraphics/CoreGraphics.h>
|
||||
|
||||
@interface BDFaceQualityUtil : NSObject
|
||||
+ (CGRect)getFaceRect:(NSArray *) trackingPoints withCount:(NSUInteger) count;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// Util.h
|
||||
// IDLFaceSDK
|
||||
//
|
||||
// Created by Tong,Shasha on 2017/5/24.
|
||||
// Copyright © 2017年 Baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreGraphics/CoreGraphics.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#define FACESDK_BUNDLE_Name @"com.baidu.idl.face.faceSDK.bundle"
|
||||
#define FACESDK_BUNDLE [[NSBundle alloc] initWithPath:[[NSBundle mainBundle] pathForResource:FACESDK_BUNDLE_Name ofType:nil]]
|
||||
|
||||
@interface BDFaceUtil : NSObject
|
||||
|
||||
+ (CGRect)convertRectFrom:(CGRect)imageRect image:(UIImage *)image previewRect:(CGRect)previewRect;
|
||||
|
||||
+ (NSString *)iphoneType;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,441 @@
|
||||
//
|
||||
// FaceSDKManager.h
|
||||
// IDLFaceSDK
|
||||
//
|
||||
// Created by Tong,Shasha on 2017/5/15.
|
||||
// Copyright © 2017年 Baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
typedef NS_ENUM(NSInteger, FaceLivenessActionType) {
|
||||
FaceLivenessActionTypeLiveEye = 0,
|
||||
FaceLivenessActionTypeLiveMouth = 1,
|
||||
FaceLivenessActionTypeLiveYawRight = 2,
|
||||
FaceLivenessActionTypeLiveYawLeft = 3,
|
||||
FaceLivenessActionTypeLivePitchUp = 4,
|
||||
FaceLivenessActionTypeLivePitchDown = 5,
|
||||
FaceLivenessActionTypeLiveYaw = 6,
|
||||
FaceLivenessActionTypeNoAction = 7,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, ResultCode) {
|
||||
ResultCodeOK,
|
||||
ResultCodePitchOutofDownRange, //头部偏低
|
||||
ResultCodePitchOutofUpRange, //头部偏高
|
||||
ResultCodeYawOutofLeftRange, //头部偏左
|
||||
ResultCodeYawOutofRightRange, //头部偏右
|
||||
ResultCodeTooBrightIllumination, // 光线过亮
|
||||
ResultCodePoorIllumination, //光照不足
|
||||
ResultCodeNoFaceDetected, //没有检测到人脸
|
||||
ResultCodeDataNotReady,
|
||||
ResultCodeDataHitOne, //采集到一张照片
|
||||
ResultCodeDataHitLast, //采集到最后一张照片
|
||||
ResultCodeImageBlured, //图像模糊
|
||||
ResultCodeOcclusionLeftEye, //左眼有遮挡
|
||||
ResultCodeOcclusionRightEye, //右眼有遮挡
|
||||
ResultCodeOcclusionNose, //鼻子有遮挡
|
||||
ResultCodeOcclusionMouth, //嘴巴有遮挡
|
||||
ResultCodeOcclusionLeftContour, //左脸颊有遮挡
|
||||
ResultCodeOcclusionRightContour, //右脸颊有遮挡
|
||||
ResultCodeOcclusionChinCoutour, //下颚有遮挡
|
||||
ResultCodeVerifyInitError, //鉴权失败
|
||||
ResultCodeVerifyDecryptError,
|
||||
ResultCodeVerifyInfoFormatError,
|
||||
ResultCodeVerifyExpired,
|
||||
ResultCodeVerifyMissRequiredInfo,
|
||||
ResultCodeVerifyInfoCheckError,
|
||||
ResultCodeVerifyLocalFileError,
|
||||
ResultCodeVerifyRemoteDataError,
|
||||
ResultCodeLeftEyeClosed,
|
||||
ResultCodeRightEyeClosed,
|
||||
ResultCodeUnknowType //未知类型
|
||||
};
|
||||
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TrackResultCode) {
|
||||
TrackResultCodeOK,
|
||||
TrackResultCodeImageBlured, // 图像模糊
|
||||
TrackResultCodePoorIllumination, // 光照不行
|
||||
TrackResultCodeNoFaceDetected, //没有检测到人脸
|
||||
TrackResultCodeOcclusionLeftEye, //左眼有遮挡
|
||||
TrackResultCodeOcclusionRightEye, //右眼有遮挡
|
||||
TrackResultCodeOcclusionNose, //鼻子有遮挡
|
||||
TrackResultCodeOcclusionMouth, //嘴巴有遮挡
|
||||
TrackResultCodeOcclusionLeftContour, //左脸颊有遮挡
|
||||
TrackResultCodeOcclusionRightContour, //右脸颊有遮挡
|
||||
TrackResultCodeOcclusionChinCoutour, //下颚有遮挡
|
||||
TrackResultCodeVerifyInitError, //鉴权失败
|
||||
TrackResultCodeVerifyDecryptError,
|
||||
TrackResultCodeVerifyInfoFormatError,
|
||||
TrackResultCodeVerifyExpired,
|
||||
TrackResultCodeVerifyMissRequiredInfo,
|
||||
TrackResultCodeVerifyInfoCheckError,
|
||||
TrackResultCodeVerifyLocalFileError,
|
||||
TrackResultCodeVerifyRemoteDataError,
|
||||
TrackResultCodeUnknowType //未知类型
|
||||
};
|
||||
|
||||
|
||||
@class FaceInfo;
|
||||
@class FaceLivenessState;
|
||||
@class FaceCropImageInfo;
|
||||
|
||||
@interface FaceSDKManager : NSObject
|
||||
/* 超时时间 */
|
||||
@property (nonatomic, assign) CGFloat conditionTimeout;
|
||||
/* 语音超时*/
|
||||
@property (nonatomic, assign) CGFloat intervalOfVoiceRemind;
|
||||
/* 输出图像个数 */
|
||||
@property (nonatomic, assign) int imageNum;
|
||||
/* 图像加密类型,默认0 */
|
||||
@property (nonatomic, assign) int imageEncrypteType;
|
||||
/* 图像加密类型,默认0 */
|
||||
@property (nonatomic, assign) float minRectScale;
|
||||
/* 图片计数器,用来计当前图片的数量*/
|
||||
@property (nonatomic, assign) int currentNum;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
* 获取版本号
|
||||
*/
|
||||
- (NSString *)getVersion;
|
||||
|
||||
/**
|
||||
* 重置计数器
|
||||
*/
|
||||
- (void)reset;
|
||||
|
||||
/**
|
||||
* 获取设备zid 公安验证上传
|
||||
*/
|
||||
- (NSString *)getZtoken;
|
||||
|
||||
/**
|
||||
* SDK鉴权方法-文件授权
|
||||
* SDK鉴权方法 必须在使用其他方法之前设置,否则会导致SDK不可用
|
||||
*
|
||||
* @param licenseID 授权ID
|
||||
* @param licensePath 本地鉴权文件路径
|
||||
* @param remoteAuthorize 是否远程更新过期鉴权文件
|
||||
*/
|
||||
- (void)setLicenseID:(NSString *)licenseID andLocalLicenceFile:(NSString *)licensePath andRemoteAuthorize:(BOOL)remoteAuthorize;
|
||||
|
||||
/**
|
||||
* 初始化采集功能
|
||||
*/
|
||||
- (int) initCollect;
|
||||
|
||||
/**
|
||||
* 卸载采集功能
|
||||
*/
|
||||
- (int)uninitCollect;
|
||||
|
||||
/**
|
||||
* 判断授权是否通过,true 表示通过,false 表示不通过
|
||||
*/
|
||||
- (BOOL)canWork;
|
||||
|
||||
/**
|
||||
* 设置预测库耗能模式
|
||||
* 默认 LITE_POWER_NO_BIND
|
||||
*/
|
||||
- (void)setLitePower:(int)litePower;
|
||||
|
||||
/**
|
||||
* 需要检测的最大人脸数目
|
||||
* 默认1
|
||||
*/
|
||||
- (void)setMaxDetectNum:(int)detectNum ;
|
||||
|
||||
/**
|
||||
* 需要检测的最小人脸大小
|
||||
* 默认40
|
||||
*/
|
||||
- (void)setMinFaceSize:(int)width;
|
||||
|
||||
/**
|
||||
* 人脸置信度阈值(检测分值大于该阈值认为是人脸
|
||||
* RGB
|
||||
* 默认 0.5f
|
||||
*/
|
||||
- (void)setNotFaceThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值
|
||||
* 默认0.5
|
||||
*/
|
||||
- (void)setOccluThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值-左眼遮挡置信度
|
||||
* 默认0.31
|
||||
*/
|
||||
-(void)setOccluLeftEyeThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值- 右眼遮挡置信度
|
||||
* 默认0.31
|
||||
*/
|
||||
-(void)setOccluRightEyeThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值-鼻子遮挡置信度
|
||||
* 默认0.27
|
||||
*/
|
||||
-(void)setOccluNoseThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值-嘴巴遮挡置信度
|
||||
* 默认0.2
|
||||
*/
|
||||
-(void)setOccluMouthThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值-左脸遮挡置信度
|
||||
* 默认0.48
|
||||
*/
|
||||
-(void)setOccluLeftCheekThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值-右脸遮挡置信度
|
||||
* 默认0.48
|
||||
*/
|
||||
-(void)setOccluRightCheekThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测遮挡阈值-下巴遮挡置信度
|
||||
* 默认0.4
|
||||
*/
|
||||
-(void)setOccluChinThreshold:(CGFloat)thr ;
|
||||
|
||||
|
||||
/**
|
||||
* 最大光照阈值
|
||||
*/
|
||||
- (void)setMaxIllumThreshold:(CGFloat)thr;
|
||||
|
||||
/**
|
||||
* 最小光照阈值
|
||||
*/
|
||||
- (void)setMinIllumThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 质量检测模糊阈值
|
||||
* 默认0.5
|
||||
*/
|
||||
- (void)setBlurThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 姿态检测阈值
|
||||
* 默认pitch=12,yaw=12,row=10
|
||||
*/
|
||||
- (void)setEulurAngleThrPitch:(float)pitch yaw:(float)yaw roll:(float)roll ;
|
||||
|
||||
/**
|
||||
* 输出图像个数
|
||||
* 默认3
|
||||
*/
|
||||
- (void)setMaxCropImageNum:(int)imageNum ;
|
||||
|
||||
/**
|
||||
* 输出图像宽,设置为有效值(大于0)则对图像进行缩放,否则输出原图抠图结果
|
||||
* 默认 480
|
||||
*/
|
||||
- (void)setCropFaceSizeWidth:(CGFloat)width ;
|
||||
|
||||
/**
|
||||
* 输出图像高,设置为有效值(大于0)则对图像进行缩放,否则输出原图抠图结果
|
||||
* 默认 680
|
||||
*/
|
||||
- (void)setCropFaceSizeHeight:(CGFloat)height ;
|
||||
|
||||
/**
|
||||
* 输出图像,下巴扩展,大于等于0,0:不进行扩展
|
||||
* 默认0.1
|
||||
*/
|
||||
- (void)setCropChinExtend:(CGFloat)chinExtend ;
|
||||
|
||||
/**
|
||||
* 输出图像,额头扩展,大于等于0,0:不进行扩展
|
||||
* 默认0.2
|
||||
*/
|
||||
- (void)setCropForeheadExtend:(CGFloat)foreheadExtend ;
|
||||
|
||||
/**
|
||||
* 输出图像,人脸框与背景比例,大于等于1,1:不进行扩展
|
||||
* 默认1.5f
|
||||
*/
|
||||
- (void)setCropEnlargeRatio:(float)cropEnlargeRatio;
|
||||
|
||||
/**
|
||||
* 动作超时配置
|
||||
*/
|
||||
- (void)setConditionTimeout:(CGFloat)timeout ;
|
||||
|
||||
/**
|
||||
* 语音间隔提醒配置
|
||||
*/
|
||||
- (void)setIntervalOfVoiceRemind:(CGFloat)timeout;
|
||||
|
||||
/**
|
||||
* 是否开启静默活体,默认false
|
||||
*/
|
||||
// - (void)setIsCheckSilentLive:(BOOL)isCheck;
|
||||
|
||||
/**
|
||||
* 静默活体阈值配置,默认0.8。
|
||||
* 大于阈值返回图片,低于阈值返回未检测到人脸
|
||||
*/
|
||||
// - (void)setSilentLiveThreshold:(CGFloat)thr ;
|
||||
|
||||
/**
|
||||
* 设置原始图片缩放比例,默认1不缩放,scale 阈值0~1
|
||||
*/
|
||||
- (void)setImageWithScale:(CGFloat)scale;
|
||||
|
||||
/**
|
||||
* 设置图片加密类型,type=0 基于base64 加密;type=1 基于百度安全算法加密
|
||||
*/
|
||||
- (void)setImageEncrypteWithType:(int) type;
|
||||
|
||||
/**
|
||||
* 人脸过远框比例 默认:0.4
|
||||
*/
|
||||
- (void)setMinRect:(float) minRectScale;
|
||||
/**
|
||||
* 采集动作验证
|
||||
* @param image 检测的图片
|
||||
* @param isOriginal 是否返回原始图片
|
||||
* @param completion 判断采集是否完成,人脸信息状态是否正常
|
||||
*/
|
||||
- (void)detectWithImage:(UIImage *)image isRreturnOriginalValue:(BOOL) isOriginal completion:(void (^)(FaceInfo *faceinfo, ResultCode resultCode))completion;
|
||||
|
||||
/**
|
||||
* 动作活体动作验证
|
||||
* @param image 检测的图片
|
||||
* @param actionLiveType 当前要求做的动作
|
||||
* @param completion 判断当前动作是否完成,人脸信息状态是否正常
|
||||
*/
|
||||
- (void)livenessWithImage:(UIImage *)image withAction:(FaceLivenessActionType)actionLiveType completion:(void (^)(FaceInfo *faceinfo, FaceLivenessState *state, ResultCode resultCode))completion;
|
||||
|
||||
@end
|
||||
|
||||
@interface FaceLivenessState : NSObject
|
||||
/**
|
||||
* 动作活体-眨眨眼
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL isLiveEye;
|
||||
/**
|
||||
* 动作活体-张张嘴
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL isLiveMouth;
|
||||
/**
|
||||
* 动作活体-向左转头
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL isLiveYawLeft;
|
||||
/**
|
||||
* 动作活体-向右转头
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL isLiveYawRight;
|
||||
/**
|
||||
* 动作活体-抬头
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL isLivePitchUp;
|
||||
/**
|
||||
* 动作活体-低头
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL isLivePitchDown;
|
||||
@end
|
||||
|
||||
@interface FaceCropImageInfo : NSObject
|
||||
/**
|
||||
* 基于质量检测,姿态角度,对图片得分
|
||||
*/
|
||||
@property (nonatomic, assign) float qualityScore;
|
||||
/**
|
||||
* 离线RGB 静默活体得分
|
||||
*/
|
||||
@property (nonatomic,assign) float silentliveScore;
|
||||
/**
|
||||
* 采集到的矫正,调整宽高图片,会有宽高
|
||||
*/
|
||||
@property (nonatomic ,strong) UIImage *cropImageWithBlack;
|
||||
/**
|
||||
* 加密采集到的矫正,调整宽高图片,会有宽高
|
||||
*/
|
||||
@property (nonatomic ,strong) NSString *cropImageWithBlackEncryptStr;
|
||||
/**
|
||||
* 原始图片
|
||||
*/
|
||||
@property (nonatomic ,strong) UIImage *originalImage;
|
||||
/**
|
||||
* 加密原始图片
|
||||
*/
|
||||
@property (nonatomic ,strong) NSString *originalImageEncryptStr;
|
||||
/**
|
||||
* 排序规则
|
||||
*/
|
||||
- (NSComparisonResult)compareWithImageInfo:(FaceCropImageInfo *)info;
|
||||
@end
|
||||
|
||||
@interface FaceInfo : NSObject
|
||||
/**
|
||||
* 人脸在图片中的位置
|
||||
*/
|
||||
@property (nonatomic, assign) CGRect faceRect;
|
||||
/**
|
||||
* 人脸track 中的faceid
|
||||
*/
|
||||
@property (nonatomic, assign) NSInteger faceId;
|
||||
/**
|
||||
* 人脸72关键点
|
||||
*/
|
||||
@property (nonatomic, strong) NSArray * landMarks;
|
||||
/**
|
||||
* 人脸角度
|
||||
*/
|
||||
@property (nonatomic, assign) float angle;
|
||||
/**
|
||||
* 人脸质量-光照置信度,通过quality 方法调用获取
|
||||
*/
|
||||
@property (nonatomic,assign) float illum;
|
||||
|
||||
/**
|
||||
* 人脸质量-模糊置信度,通过quality 方法调用获取
|
||||
*/
|
||||
@property (nonatomic,assign) float blur;
|
||||
/**
|
||||
* 人脸上下偏转角,通过headpose 方法调用获取
|
||||
*/
|
||||
@property (nonatomic, assign) float pitch;
|
||||
|
||||
/**
|
||||
* 人脸左右偏转角,通过headpose 方法调用获取
|
||||
*/
|
||||
@property (nonatomic, assign) float yaw;
|
||||
|
||||
/**
|
||||
* 人脸平行平面内的头部旋转角,通过headpose 方法调用获取
|
||||
*/
|
||||
@property (nonatomic, assign) float roll;
|
||||
|
||||
/**
|
||||
* 离线RGB 静默活体得分
|
||||
*/
|
||||
@property (nonatomic,assign) float silentliveScore;
|
||||
|
||||
/**
|
||||
* 人脸检测得分
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat score;
|
||||
|
||||
/**
|
||||
* 输出图片结构体,包含图片质量分数,裁剪没有黑边的图片,裁剪有黑边的图片,未裁剪图片,原始图
|
||||
*/
|
||||
@property (nonatomic, strong) FaceCropImageInfo * cropImageInfo;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,93 @@
|
||||
//
|
||||
// IDLFaceDetectionManager.h
|
||||
// IDLFaceSDK
|
||||
//
|
||||
// Created by Tong,Shasha on 2017/5/18.
|
||||
// Copyright © 2017年 Baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <CoreGraphics/CoreGraphics.h>
|
||||
|
||||
@class FaceInfo;
|
||||
|
||||
#define TIME_THRESHOLD_FOR_ANOTHER_SESSION 2.0
|
||||
|
||||
typedef NS_ENUM(NSUInteger, DetectRemindCode) {
|
||||
DetectRemindCodeOK = 0, //成功
|
||||
DetectRemindCodeBeyondPreviewFrame, //出框
|
||||
DetectRemindCodeNoFaceDetected, //没有检测到人脸
|
||||
DetectRemindCodeMuchIllumination,
|
||||
DetectRemindCodePoorIllumination, //光照不足
|
||||
DetectRemindCodeImageBlured, //图像模糊
|
||||
DetectRemindCodeTooFar, //太远
|
||||
DetectRemindCodeTooClose, //太近
|
||||
DetectRemindCodePitchOutofDownRange, //头部偏低
|
||||
DetectRemindCodePitchOutofUpRange, //头部偏高
|
||||
DetectRemindCodeYawOutofLeftRange, //头部偏左
|
||||
DetectRemindCodeYawOutofRightRange, //头部偏右
|
||||
DetectRemindCodeOcclusionLeftEye, //左眼有遮挡
|
||||
DetectRemindCodeOcclusionRightEye, //右眼有遮挡
|
||||
DetectRemindCodeOcclusionNose, //鼻子有遮挡
|
||||
DetectRemindCodeOcclusionMouth, //嘴巴有遮挡
|
||||
DetectRemindCodeOcclusionLeftContour, //左脸颊有遮挡
|
||||
DetectRemindCodeOcclusionRightContour, //右脸颊有遮挡
|
||||
DetectRemindCodeOcclusionChinCoutour, //下颚有遮挡
|
||||
DetectRemindCodeTimeout, //超时
|
||||
DetectRemindCodeVerifyInitError, //鉴权失败
|
||||
// DetectRemindCodeVerifyDecryptError,
|
||||
// DetectRemindCodeVerifyInfoFormatError,
|
||||
// DetectRemindCodeVerifyExpired,
|
||||
// DetectRemindCodeVerifyMissRequiredInfo,
|
||||
// DetectRemindCodeVerifyInfoCheckError,
|
||||
// DetectRemindCodeVerifyLocalFileError,
|
||||
// DetectRemindCodeVerifyRemoteDataError,
|
||||
// DetectRemindCodeDataHitLast
|
||||
DetectRemindCodeConditionMeet,
|
||||
DetectRemindCodeDataHitOne
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TrackDetectRemindCode) {
|
||||
TrackDetectRemindCodeOK = 0, //成功
|
||||
TrackDetectRemindCodeImageBlured, //图像模糊
|
||||
TrackDetectRemindCodePoorIllumination, // 光照不足
|
||||
TrackDetectRemindCodeNoFaceDetected, //没有检测到人脸
|
||||
TrackDetectRemindCodeOcclusionLeftEye, //左眼有遮挡
|
||||
TrackDetectRemindCodeOcclusionRightEye, //右眼有遮挡
|
||||
TrackDetectRemindCodeOcclusionNose, //鼻子有遮挡
|
||||
TrackDetectRemindCodeOcclusionMouth, //嘴巴有遮挡
|
||||
TrackDetectRemindCodeOcclusionLeftContour, //左脸颊有遮挡
|
||||
TrackDetectRemindCodeOcclusionRightContour, //右脸颊有遮挡
|
||||
TrackDetectRemindCodeOcclusionChinCoutour, //下颚有遮挡
|
||||
TrackDetectRemindCodeTooClose, //太近
|
||||
TrackDetectRemindCodeTooFar, //太远
|
||||
TrackDetectRemindCodeBeyondPreviewFrame //出框
|
||||
|
||||
};
|
||||
|
||||
typedef void (^DetectStrategyCompletion) (FaceInfo * faceinfo,NSDictionary * images, DetectRemindCode remindCode);
|
||||
|
||||
//typedef void (^TrackDetectStrategyCompletion) (NSArray * faceArray, TrackDetectRemindCode remindCode);
|
||||
|
||||
@interface IDLFaceDetectionManager : NSObject
|
||||
|
||||
@property (nonatomic, assign) BOOL enableSound;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
* 人脸采集,成功之后返回扣图图片,原始图片
|
||||
* @param image 镜头拿到的图片
|
||||
* @param detectRect 预览的Rect
|
||||
* @param previewRect 检测的Rect
|
||||
* return completion 回调信息
|
||||
*/
|
||||
- (void)detectStratrgyWithNormalImage:(UIImage *)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(DetectStrategyCompletion)completion;
|
||||
|
||||
|
||||
- (void)reset;
|
||||
|
||||
-(void)startInitial;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,114 @@
|
||||
//
|
||||
// IDLFaceLivenessManager.h
|
||||
// IDLFaceSDK
|
||||
//
|
||||
// Created by Tong,Shasha on 2017/5/18.
|
||||
// Copyright © 2017年 Baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <CoreGraphics/CoreGraphics.h>
|
||||
@class FaceInfo;
|
||||
@class FaceLivenessState;
|
||||
|
||||
#define TIME_THRESHOLD_FOR_ANOTHER_SESSION 2.0
|
||||
|
||||
typedef NS_ENUM(NSInteger, LivenessActionType) {
|
||||
LivenessActionTypeLiveEye = 0,
|
||||
LivenessActionTypeLiveMouth = 1,
|
||||
LivenessActionTypeLiveYawRight = 2,
|
||||
LivenessActionTypeLiveYawLeft = 3,
|
||||
LivenessActionTypeLivePitchUp = 4,
|
||||
LivenessActionTypeLivePitchDown = 5,
|
||||
LivenessActionTypeLiveYaw = 6,
|
||||
LivenessActionTypeNoAction = 7,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, LivenessRemindCode) {
|
||||
LivenessRemindCodeOK = 0, //成功
|
||||
LivenessRemindCodeBeyondPreviewFrame, //出框
|
||||
LivenessRemindCodeNoFaceDetected, //没有检测到人脸
|
||||
LivenessRemindCodeMuchIllumination,
|
||||
LivenessRemindCodePoorIllumination, //光照不足
|
||||
LivenessRemindCodeImageBlured, //图像模糊
|
||||
LivenessRemindCodeTooFar, //太远
|
||||
LivenessRemindCodeTooClose, //太近
|
||||
LivenessRemindCodePitchOutofDownRange, //头部偏低
|
||||
LivenessRemindCodePitchOutofUpRange, //头部偏高
|
||||
LivenessRemindCodeYawOutofLeftRange, //头部偏左
|
||||
LivenessRemindCodeYawOutofRightRange, //头部偏右
|
||||
LivenessRemindCodeOcclusionLeftEye, //左眼有遮挡
|
||||
LivenessRemindCodeOcclusionRightEye, //右眼有遮挡
|
||||
LivenessRemindCodeOcclusionNose, //鼻子有遮挡
|
||||
LivenessRemindCodeOcclusionMouth, //嘴巴有遮挡
|
||||
LivenessRemindCodeOcclusionLeftContour, //左脸颊有遮挡
|
||||
LivenessRemindCodeOcclusionRightContour, //右脸颊有遮挡
|
||||
LivenessRemindCodeOcclusionChinCoutour, //下颚有遮挡
|
||||
LivenessRemindCodeTimeout, //超时
|
||||
LivenessRemindCodeLiveEye, //眨眨眼
|
||||
LivenessRemindCodeLiveMouth, //张大嘴
|
||||
LivenessRemindCodeLiveYawLeft, //向右摇头
|
||||
LivenessRemindCodeLiveYawRight, //向左摇头
|
||||
LivenessRemindCodeLivePitchUp, //向上抬头
|
||||
LivenessRemindCodeLivePitchDown, //向下低头
|
||||
LivenessRemindCodeLiveYaw, //摇摇头
|
||||
LivenessRemindCodeSingleLivenessFinished, //完成一个活体动作
|
||||
LivenessRemindActionCodeTimeout, // 当前活体动作超时
|
||||
LivenessRemindCodeLeftEyeClosed,
|
||||
LivenessRemindCodeRightEyeClosed,
|
||||
LivenessRemindCodeVerifyInitError, //鉴权失败
|
||||
// LivenessRemindCodeVerifyDecryptError,
|
||||
// LivenessRemindCodeVerifyInfoFormatError,
|
||||
// LivenessRemindCodeVerifyExpired,
|
||||
// LivenessRemindCodeVerifyMissRequiredInfo,
|
||||
// LivenessRemindCodeVerifyInfoCheckError,
|
||||
// LivenessRemindCodeVerifyLocalFileError,
|
||||
// LivenessRemindCodeVerifyRemoteDataError,
|
||||
LivenessRemindCodeConditionMeet,
|
||||
LivenessRemindCodeFaceIdChanged, // faceid 发生变化
|
||||
LivenessRemindCodeDataHitOne
|
||||
// LivenessRemindCodeDataHitLast,
|
||||
};
|
||||
|
||||
typedef void (^LivenessStrategyCompletion) (NSDictionary * images, FaceInfo *faceInfo, LivenessRemindCode remindCode);
|
||||
typedef void (^LivenessNormalCompletion) (NSDictionary * images, FaceInfo *faceInfo, LivenessRemindCode remindCode);
|
||||
|
||||
/**
|
||||
* 活体检测过程中,返回活体总数,当前成功个数,当前活体类型
|
||||
*/
|
||||
typedef void (^LivenessProcess) (float numberOfLiveness, float numberOfSuccess, LivenessActionType currenActionType);
|
||||
|
||||
|
||||
@interface IDLFaceLivenessManager : NSObject
|
||||
@property (nonatomic, assign) BOOL enableSound;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
* 人脸活体验证,成功之后返回扣图图片,原始图片
|
||||
* @param image 镜头拿到的图片
|
||||
* @param detectRect 预览的Rect
|
||||
* @param previewRect 检测的Rect
|
||||
* return completion 回调信息
|
||||
*/
|
||||
-(void) livenessNormalWithImage:(UIImage *)image previewRect:(CGRect)previewRect detectRect:(CGRect)detectRect completionHandler:(LivenessNormalCompletion)completion;
|
||||
|
||||
/**
|
||||
* 活体检测过程中,返回活体总数,当前成功个数,当前活体类型
|
||||
*/
|
||||
-(void) livenessProcessHandler:(LivenessProcess) process;
|
||||
|
||||
- (void)reset;
|
||||
|
||||
-(void)startInitial;
|
||||
|
||||
/**
|
||||
* 返回无黑边的方法
|
||||
* @param array 活体动作数组
|
||||
* @param order 是否顺序执行
|
||||
* @param numberOfLiveness 活体动作个数
|
||||
*/
|
||||
- (void)livenesswithList:(NSArray *)array order:(BOOL)order numberOfLiveness:(NSInteger)numberOfLiveness;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// IDLFaceSDK.h
|
||||
// IDLFaceSDK
|
||||
//
|
||||
// Created by Tong,Shasha on 2017/5/15.
|
||||
// Copyright © 2017年 Baidu. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for IDLFaceSDK.
|
||||
FOUNDATION_EXPORT double IDLFaceSDKVersionNumber;
|
||||
|
||||
//! Project version string for IDLFaceSDK.
|
||||
FOUNDATION_EXPORT const unsigned char IDLFaceSDKVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <IDLFaceSDK/PublicHeader.h>
|
||||
|
||||
|
||||
#import "FaceSDKManager.h"
|
||||
#import "IDLFaceLivenessManager.h"
|
||||
#import "IDLFaceDetectionManager.h"
|
||||
#import "BDFaceUtil.h"
|
||||
#import "BDFaceQualityUtil.h"
|
||||
BIN
LinxiaBaiduLiveLibs/IDLFaceSDK.framework/IDLFaceSDK
Executable file
BIN
LinxiaBaiduLiveLibs/IDLFaceSDK.framework/IDLFaceSDK
Executable file
Binary file not shown.
BIN
LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Info.plist
Normal file
BIN
LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Info.plist
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module IDLFaceSDK {
|
||||
umbrella header "IDLFaceSDK.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
<?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>Headers/BDFaceQualityUtil.h</key>
|
||||
<data>
|
||||
fcj/C6f2qlP6eZ5+RCJmWMtAPQ0=
|
||||
</data>
|
||||
<key>Headers/BDFaceUtil.h</key>
|
||||
<data>
|
||||
VECTCE+71SOsF5RLPGnwLx2SOQg=
|
||||
</data>
|
||||
<key>Headers/FaceSDKManager.h</key>
|
||||
<data>
|
||||
HtK3UhOfFgE7zgaseOG5WK5QEg4=
|
||||
</data>
|
||||
<key>Headers/IDLFaceDetectionManager.h</key>
|
||||
<data>
|
||||
3FgLOS0NvbMFpGRtqvEJlav7MuI=
|
||||
</data>
|
||||
<key>Headers/IDLFaceLivenessManager.h</key>
|
||||
<data>
|
||||
VbXN+PK0Q7IfahU2MI0U5SaPHIQ=
|
||||
</data>
|
||||
<key>Headers/IDLFaceSDK.h</key>
|
||||
<data>
|
||||
4jVunSoXEW6EIui6HmQGQ/B7GgU=
|
||||
</data>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
gB1gmw3UfXQHkHkeV5Y7sb7bpDA=
|
||||
</data>
|
||||
<key>Modules/module.modulemap</key>
|
||||
<data>
|
||||
uTVmiSBEgQ4Qw0TMMpcn7pr7ssU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Headers/BDFaceQualityUtil.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fcj/C6f2qlP6eZ5+RCJmWMtAPQ0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
4FebuT7rY9k2JVw4SLUakj7+ixAkjWnoHD+MaQDJSYo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/BDFaceUtil.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
VECTCE+71SOsF5RLPGnwLx2SOQg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Hxb8esap8atN28mAw/uztk+/wyRFRJl5Kv7KIYs0naM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/FaceSDKManager.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
HtK3UhOfFgE7zgaseOG5WK5QEg4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
9xcXJTgHFJL+bQRkxB+pP+i/R4m53mKGg3BtzOl0bvw=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/IDLFaceDetectionManager.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
3FgLOS0NvbMFpGRtqvEJlav7MuI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
5kMvOke/ASfe/WAEL97lR3CVaA99NKplFzR7rU4+nvA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/IDLFaceLivenessManager.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
VbXN+PK0Q7IfahU2MI0U5SaPHIQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
/Hk63uC19rBPuUOElYDIMMETOhhWGNf16+qpnjOWbBc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Headers/IDLFaceSDK.h</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
4jVunSoXEW6EIui6HmQGQ/B7GgU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
lgQ9lUWcrFfTCL6Di9EwgliVBVZwbncZINzCfW4idDE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Modules/module.modulemap</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
uTVmiSBEgQ4Qw0TMMpcn7pr7ssU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
2UWkZrJMmZYFFeU4C525GWZ73nY7N7bcJ+9yd1WwEos=
|
||||
</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>
|
||||
Reference in New Issue
Block a user