Touch ID指紋解鎖使用

来源:http://www.cnblogs.com/shujincai/archive/2016/08/17/5778679.html
-Advertisement-
Play Games

Touch ID是iPhone5S後加入的一項新的功能,也就是大家熟知的指紋識別技術。大家用得最多的可能是手機的解屏操作,不用在和以前一樣輸入手機的四位數密碼進行驗證。一方面不用擔心密碼被別人看到,另一方面也方便了自己的操作。iOS8後蘋果開放了Touch ID的API給開發者,這也給我們的app帶 ...


Touch ID是iPhone5S後加入的一項新的功能,也就是大家熟知的指紋識別技術。大家用得最多的可能是手機的解屏操作,不用在和以前一樣輸入手機的四位數密碼進行驗證。一方面不用擔心密碼被別人看到,另一方面也方便了自己的操作。iOS8後蘋果開放了Touch ID的API給開發者,這也給我們的app帶來了新的體驗。

使用

Touch ID的API非常的簡單也好理解,在使用前我們需要導入LocalAuthentication這個庫。並引入關鍵模塊:LAcontext

蘋果公司並沒有對Touch ID完全開放,只是開放瞭如下所的兩個介面

(1) canEvaluatePolicy:error: 判讀是否能夠認證Touch ID

(2) evaluatePolicy:localizedReson:reply: 認證Touch ID

關鍵代碼如下

LAContext * myContext = [[LAContext alloc]init];

  NSError * authError = nil;

  NSString * myLocatizedReasonString = @"請掃描你的指紋.";

    if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {

        [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocatizedReasonString reply:^(BOOL success, NSError * _Nullable error) {

            if (success) {

                dispatch_async (dispatch_get_main_queue(), ^{

                    //在主線程更新 UI,不然會卡主

                     TouchViewController * touchVC = [[TouchViewController alloc]init];

                     [self.navigationController pushViewController:touchVC animated:YES];

                });

            }

            if (!success) {

                NSLog(@"%@",error);

            }

        }];

    }

錯誤處理

typedef NS_ENUM(NSInteger, LAError)

{

    //用戶驗證沒有通過,比如提供了錯誤的手指的指紋

    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

    // 用戶取消了Touch ID驗證

    LAErrorUserCancel  = kLAErrorUserCancel,

    //用戶不想進行Touch ID驗證,想進行輸入密碼操作

    LAErrorUserFallback  = kLAErrorUserFallback,

     // 系統終止了驗證

    LAErrorSystemCancel = kLAErrorSystemCancel,

     // 用戶沒有在設備Settings中設定密碼

    LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,

    // 設備不支持Touch ID

    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

// 設備沒有進行Touch ID 指紋註冊

    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,

} NS_ENUM_AVAILABLE(10_10, 8_0);


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL的升級相對來說還是比較簡單的。 它支持兩種方式的升級: 原地升級(In-place Upgrade) 關閉資料庫,替換舊的二進位文件,重啟資料庫,執行mysql_upgrade 邏輯升級(Logical Upgrade) 用mysqldump導出數據,安裝新的資料庫版本,將數據導入到新的數 ...
  • 假設你創建一個資料庫時,指定其初始化大小(SIZE )非常大。例如,如下測試案例所示 USE [master]GO CREATE DATABASE [TEST] ON PRIMARY ( NAME = N'TEST_Data', FILENAME = N'D:\SQL_DATA\TEST_Data.... ...
  • 1: 新增欄位: 2:刪除欄位: 3:修改欄位名: 4:修改欄位類型: ...
  • 環境:準備測試前,我查看了一下我公司的電腦是4核的(四個子視窗) 廢話少說,直接附上代碼和結果吧 測試代碼 運行結果: 資料庫的結果: 看到了吧,確實插入了1000萬條,準確無誤 然後我就想試試20個線程,每個線程插入50萬條數據看看性能怎麼樣。結果如下: 線程越多不是好事,反而更慢。。。 當線程達 ...
  • 為了保證臨界資源的安全性和可靠性,線程不得不使用鎖,同一時間只允許一個或幾個線程訪問變數。常用的鎖有互斥量,讀寫鎖,條件變數 一、互斥量 互斥量是用pthread_mutex_t數據類型表示的,在使用之前,必須對其進行初始化,可以把它設置為PTHREAD_MUTEX_INITIALIZER(只適於靜 ...
  • 一 、安裝java jdk配置環境變數 1、 卸載原有openjdk yum -y remove java-1.7.0-openjdk* yum -y remove tzdata-java.noarch 2、 下載新的jdk 並解壓 [root@localhost java]# curl -O ht ...
  • 很多kali愛好者想把kali linux作為系統使用,但是有些win下的程式有時候也需要用到,此時需要虛擬機。 kali系統在安裝虛擬機的時候也會遇到一大堆坑,接下來是我的爬坑過程。 一波三折。 環境 :kali linux 2.0 32位 軟體 :virtualbox 虛擬機 0x01 bash ...
  • typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // 未使用,總為0 DWORD TimeDateStamp; // 文件創建時間戳 WORD MajorVersion; // 未使用,總為0 WORD MinorVer... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...