iOS开发 Object-C 与 Swift 中的Touch ID开发 重磅出击3DTouch 仅限于6s或以上机型实用

3DTouch 重磅出击


效果图:



只需要简单的几部就可以完成。


在 Info.plist 中添加

   UIApplicationShortcutItems   为Array类型

     在其内部添加一个   Item 为 Dictionar类型

  在Item 下添加如下几个键:

1. UIApplicationShortcutItemType     string类型:-11.UITouchText.share

2. UIApplicationShortcutItemTitle    string类型:Share

3.   UIApplicationShortcutItemIconType string类型:UIApplicationShortcutIconTypeShare



AppDelegate中添加如下方法:

- (void)application:(UIApplication *)application

  performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem

  completionHandler:(void(^)(BOOL succeeded))completionHandler{


//判断先前我们设置的唯一标识

    if([shortcutItem.type isEqualToString:@"-11.UITouchText.share"]){

        //点击后执行的内容


    }

}






Object-C  Touch ID 验证

导入库 



#import <LocalAuthentication/LocalAuthentication.h>


- (IBAction)btnClick:(UIButton *)sender {

    //初始化上下文对象

    LAContext* context = [[LAContextalloc] init];

    //错误对象

    NSError* error = nil;

    NSString* result =@"Authentication is needed to access your notes.";

    

    //首先使用canEvaluatePolicy判断设备支持状态

    if ([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]) {

        //支持指纹验证

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricslocalizedReason:result reply:^(BOOL success,NSError *error) {

            if (success) {

                //验证成功,主线程处理UI

                dispatch_async(dispatch_get_main_queue(), ^{

                    UIAlertView * alert = [[UIAlertViewalloc]initWithTitle:@"Touch ID"message:@"验证成功"delegate:nilcancelButtonTitle:@"好的"otherButtonTitles: nil];

                    [alert show];

                });

            }

            else

            {

                NSLog(@"%@",error.localizedDescription);

                switch (error.code) {

                    case LAErrorSystemCancel:

                    {

                        NSLog(@"Authentication was cancelled by the system");

                        //切换到其他APP,系统取消验证Touch ID

                        break;

                    }

                    case LAErrorUserCancel:

                    {

                        NSLog(@"Authentication was cancelled by the user");

                        //用户取消验证Touch ID

                        break;

                    }

                    case LAErrorUserFallback:

                    {

                        NSLog(@"User selected to enter custom password");

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                            //用户选择输入密码,切换主线程处理

                        }];

                        break;

                    }

                    default:

                    {

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                            //其他情况,切换主线程处理

                        }];

                        break;

                    }

                }

            }

        }];

    }

    else

    {

        //不支持指纹识别,LOG出错误详情

        

        switch (error.code) {

            caseLAErrorTouchIDNotEnrolled:

            {

                NSLog(@"TouchID is not enrolled");

                break;

            }

            caseLAErrorPasscodeNotSet:

            {

                NSLog(@"A passcode has not been set");

                break;

            }

            default:

            {

                NSLog(@"TouchID not available");

                break;

            }

        }

        

        NSLog(@"%@",error.localizedDescription);

    }

}



Swift Touch ID 验证

导入库 跟 Object-C 一样framework 就可以了


    func MyBtnClick(sender: MyButton) {

        print("-------",sender)

        

        let laContext = LAContext()

        var authError : NSError?

        let errorReason = "需要验证Touch ID"

        

        if laContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &authError){

            laContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: errorReason, reply: {

                (success, error) in

                if success {

                    print ( "Touch ID 验证成功")

                }

                else{

                    print ( "Touch ID 验证失败")

                }

            })

        }

        else{

            let alert = UIAlertView(title: "Can not do authenticatation", message:String(authError), delegate: nil, cancelButtonTitle: "Cancel")

            alert.show()

        }

    }

附:

/*

 typedef NS_ENUM(NSInteger, LAError)

 {

 

 //授权失败

 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

 

 //用户取消Touch ID授权

 LAErrorUserCancel           = kLAErrorUserCancel,

 

 //用户选择输入密码

 LAErrorUserFallback         = kLAErrorUserFallback,

 

 //系统取消授权(例如其他APP切入)

 LAErrorSystemCancel         = kLAErrorSystemCancel,

 

 //系统未设置密码

 LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,

 

 //设备Touch ID不可用,例如未打开

 LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

 

 //设备Touch ID不可用,用户未录入

 LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,

 } NS_ENUM_AVAILABLE(10_10, 8_0);

 

 */

谢谢浏览!!!




阅读更多

没有更多推荐了,返回首页