精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS 8 中如何用 Swift 實(shí)現(xiàn) Touch ID 驗(yàn)證

移動(dòng)開(kāi)發(fā) iOS
iOS8開(kāi)放了很多API,包括HomeKit、HealthKit什么的。我們這里要說(shuō)的是其中之一的Touch ID驗(yàn)證。如題所述,這個(gè)項(xiàng)目使用Swift來(lái)實(shí)現(xiàn)的。如果你的swift不熟的話,需要略微補(bǔ)補(bǔ)腦哦。

iOS8開(kāi)放了很多API,包括HomeKit、HealthKit什么的。我們這里要說(shuō)的是其中之一的Touch ID驗(yàn)證。

以前用app保護(hù)用戶(hù)的隱私內(nèi)容,只能設(shè)定和輸入密碼。眼看著只能是iPhone本身用Touch ID方便酷炫的解鎖而自己的app不能。實(shí)在讓人捉急。現(xiàn)在咱也可以酷炫一把了。當(dāng)用戶(hù)打開(kāi)使用了Touch ID認(rèn)證的app查看什么內(nèi)容的時(shí)候就只能是把手指放在Home鍵上去驗(yàn)證身份。在app中驗(yàn)證的指紋就是用戶(hù)在手機(jī)里的指紋。是的,你的app無(wú)需用戶(hù) 再輸入一次驗(yàn)證用的指紋了。所以使用起來(lái)還是很方便的。不過(guò)你要做好其他的準(zhǔn)備。就像iPhone解鎖少不了密碼輸入一樣。用戶(hù)如果沒(méi)有開(kāi)啟Touch ID咱的app也不能扒瞎不是?

如題所述,這個(gè)項(xiàng)目使用Swift來(lái)實(shí)現(xiàn)的。如果你的swift不熟的話,需要略微補(bǔ)補(bǔ)腦哦。

說(shuō)了這么多,看看效果吧

看到了吧。只要把大拇指放在Home鍵上就會(huì)解鎖了。

界面布局是這樣的:

這里是通過(guò)點(diǎn)擊按鈕觸發(fā)驗(yàn)證的。點(diǎn)了Authenticate按鈕之后彈出***張圖的驗(yàn)證提示。

好啦,進(jìn)入正題。

首先創(chuàng)建一個(gè)項(xiàng)目。名字啊什么的就隨你的便了都可以。但是編程語(yǔ)言,這里需要選擇Swift。既然xcode6.0.1已經(jīng)號(hào)稱(chēng)提供了對(duì)swift 的全面支持。那我們就直接上swift了。實(shí)在不行還可以通過(guò)蘋(píng)果提供的機(jī)制調(diào)用已有的ObjC代碼。總之五個(gè)字:這都不是事。而且swfit本來(lái)也可以 省很多的代碼量。項(xiàng)目的其他的地方保持默認(rèn)選擇就可以。也就是我們省點(diǎn)事,直接用storyboard就好了。雖然其實(shí)沒(méi)有什么界面元素可以省略了。。。

在創(chuàng)建好的項(xiàng)目里,選擇Build Phases。把LocalAuthentication的framework引入項(xiàng)目。到這里項(xiàng)目的設(shè)置就可以了。

在代碼中import引入的framework。

  1. import LocalAuthentication 

接下來(lái)創(chuàng)建一個(gè)按鈕:

  1. var authButton: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton 
  2. authButton.frame = CGRect(x: 100, y: screenHeight / 2, width: 100, height: 30) 
  3. authButton.setTitle("Authenticate", forState: UIControlState.Normal) 

這里是創(chuàng)建按鈕的代碼。首先創(chuàng)建一個(gè)和系統(tǒng)同類(lèi)型的按鈕。UIButton.buttonWithType(UIButtonType.System)返回的是一個(gè)AnyObject類(lèi)型的對(duì)象,所以需要強(qiáng)制類(lèi)型轉(zhuǎn)換成UIButon的。AnyObject和Any這兩個(gè)類(lèi)型會(huì)經(jīng)常遇到。主要是為了和ObjC之前的代碼想兼容。所以也會(huì)經(jīng)常的用is或者as操作符檢測(cè)和強(qiáng)制類(lèi)型轉(zhuǎn)換。

  • AnyObject是指任何一個(gè)class類(lèi)型的實(shí)例
  • Any是指任何一個(gè)類(lèi)型的實(shí)例

比如,AnyObject數(shù)組可以存放任意某個(gè)class類(lèi)型的實(shí)例。這些實(shí)例都是class類(lèi)型,而且是同一個(gè)類(lèi)型的。Any的數(shù)組則可以放任意類(lèi)型的實(shí)例,而且這些數(shù)組成員的類(lèi)型不一定是一樣的。

創(chuàng)建UIButton的代碼和之前用OC的方式?jīng)]有什么太大的區(qū)別。只不過(guò)換成了swift的語(yǔ)法。有了按鈕以后,也就該設(shè)定按鈕點(diǎn)擊事件的處理方法了。還記得不addTarget:

  1. authButton.addTarget(self, action: Selector("addPassAction:"), forControlEvents: UIControlEvents.TouchUpInside) 

先看看addTarget的聲明:func addTarget(target: AnyObject?, action: Selector, forControlEvents controlEvents: UIControlEvents) 對(duì) 應(yīng)在方法的調(diào)用中可以看到self就是AnyObject的target,不用多說(shuō)什么了。后面的action是一個(gè)Selector的結(jié)構(gòu)體 (struct)。我們?cè)谡{(diào)用的時(shí)候初始化了一個(gè)Selector的結(jié)構(gòu)體。這個(gè)參數(shù)也可以直接給出action的字符串,而不用初始化Selector 這個(gè)結(jié)構(gòu)體。這里涉及到了一個(gè)類(lèi)型自動(dòng)轉(zhuǎn)換的知識(shí)點(diǎn)。Selector的構(gòu)造函數(shù)需要提供一個(gè)字符串作為參數(shù),所以如果直接給出字符串的時(shí)候編譯器會(huì)直接 把這個(gè)字符串作為參數(shù)初始化一個(gè)Selector的結(jié)構(gòu)體出來(lái)。Selector的字符串內(nèi)容中,***是一個(gè)冒號(hào)“:”,和ObjC的寫(xiě)法一樣的。冒號(hào)說(shuō) 明方法有一個(gè)參數(shù)。***是UIControlEvents的枚舉類(lèi)型。這里總于不用每次都寫(xiě)的那么長(zhǎng)了。

然后,實(shí)現(xiàn)Selector:

  1. func addPassAction(sender:UIButton!){ 
  2.         println("add pass action"
  3.   
  4.         var laContext = LAContext() 
  5.         var authError : NSError? 
  6.         var errorReason = "keep things secret" 
  7.   
  8.         if laContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &authError){ 
  9.             laContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: errorReason, reply: { 
  10.                 (success, error) in 
  11.                 if success { 
  12.                     println("succeed"
  13.                 } 
  14.                 else
  15.                     println("failed"
  16.                 } 
  17.             }) 
  18.         } 
  19.         else
  20.             var alert = UIAlertView(title: "Can not do authenticatation", message: "", delegate: nil, cancelButtonTitle: "Cancel"
  21.         } 
  22.     } 

這里最重要的就是Touch ID驗(yàn)證的功能了。var laContext = LAContext()用到了類(lèi)型推斷。給變量初始化的實(shí)例是什么類(lèi)型的,這個(gè)變量就自動(dòng)推斷為是那個(gè)類(lèi)型。var authError : NSError? 類(lèi) 型推斷和optional value。optional value就是在類(lèi)型的后面加了一個(gè)問(wèn)號(hào)。表示這個(gè)值可以是某個(gè)實(shí)例也可以是nil。注意:swift的nil和ObjC的nil是兩回事。ObjC的 nil是引用類(lèi)型的一個(gè)空值。swift的nil就是說(shuō)此變量沒(méi)有值,是不是引用類(lèi)型都可以。var errorReason = "keep things secret"這個(gè)字符串是要在界面中現(xiàn)實(shí)的。所以絕對(duì)不可以為空!

laContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &authError)檢查設(shè)備是不是可以用biometrics的方法驗(yàn)證身份。就是看看能不能指紋解鎖。沒(méi)有硬件,或者有硬件沒(méi)設(shè)定好指紋的都是不可以驗(yàn)證的。好的,如果已經(jīng)設(shè)定好了指紋,那么就可以解鎖了。

  1. laContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: errorReason, reply: { 
  2.  
  3.                 (success, error) in 
  4.  
  5.                 if success { 
  6.  
  7.                     println("succeed"
  8.  
  9.                 } 
  10.  
  11.                 else
  12.  
  13.                     println("failed"
  14.  
  15.                 } 
  16.  
  17.             }) 

后面的replay參數(shù)是一個(gè)返回值為空的closure。這個(gè)closure的參數(shù)是bool和NSError!closure的一般形式是{(參數(shù)1, 參數(shù)2)->返回值類(lèi)型 in //代碼}success返 回驗(yàn)證結(jié)果,成功活失敗(true或false)。這時(shí),根據(jù)驗(yàn)證的成功或者失敗,替換掉println("succeed")或者 println("failed")語(yǔ)句,實(shí)現(xiàn)你需要實(shí)現(xiàn)的功能。比如,進(jìn)入app的功能詳細(xì)頁(yè)等用Touch ID保護(hù)的信息。如果無(wú)法驗(yàn)證,就跳轉(zhuǎn)到密碼驗(yàn)證部分。這樣用戶(hù)在指紋驗(yàn)證無(wú)法進(jìn)行的情況下還可以通過(guò)輸入密碼進(jìn)入到app的功能部分。

就到這里了。寫(xiě)個(gè)項(xiàng)目試試吧!

責(zé)任編輯:閆佳明 來(lái)源: cnblogs
相關(guān)推薦

2014-10-15 10:09:12

iOS 8Touch ID開(kāi)發(fā)

2021-07-27 07:15:11

蘋(píng)果Touch IDiOS

2011-07-22 13:22:10

Java.NETDataTable

2011-09-05 13:53:08

Sencha Touc列表

2011-09-05 12:49:59

Sencha Touc事件

2022-07-08 07:02:10

Python動(dòng)態(tài)碼OTP

2018-12-04 14:46:03

蘋(píng)果Face IDTouch ID

2011-03-15 09:10:47

iptablesNAT

2011-03-15 14:26:23

iptablesNAT

2011-09-05 13:48:36

Sencha Touc圖標(biāo)

2011-05-11 10:28:03

2011-08-30 17:33:10

OracleSAS宏

2015-04-10 19:59:31

iOS8.3Touch ID

2021-02-01 16:55:13

iPhoneTouch ID蘋(píng)果

2020-05-09 10:38:31

Python透視表數(shù)據(jù)

2011-07-22 13:23:56

IOS UI ScrollView

2010-08-12 13:34:13

Flex驗(yàn)證組件

2011-06-15 16:11:51

UIKitCocoa TouchiOS

2009-03-24 13:04:55

匯總組織結(jié)構(gòu)Oracle

2011-08-17 10:09:25

iPhone開(kāi)發(fā)UIWebViewTouch事件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产探花视频在线播放| 亚洲成人一区二区三区| 久久精品国产成人av| 日韩dvd碟片| 欧美mv日韩mv| 国产日产欧美视频| 成人黄视频在线观看| 99久久精品国产网站| 国产精品视频区| 日韩高清免费av| 久久精品国产大片免费观看| 欧美成人在线直播| 国产嫩草在线观看| 欧美aa免费在线| 亚洲天堂成人在线观看| 蜜桃av久久久亚洲精品| 国产成人精品一区二三区四区五区| 激情视频一区| 久久香蕉频线观| 永久免费看mv网站入口78| 精品一区二区三区视频在线播放| 色综合久久久久久久| 国产精品三级一区二区| 日日夜夜精品一区| xnxx国产精品| 高清国产在线一区| 一区二区 亚洲| 日韩一区精品字幕| 欧美在线视频一区| 日本学生初尝黑人巨免费视频| 国产精品videosex性欧美| 国产偷国产偷亚洲清高网站| 亚洲精品成人无码毛片| 日本一区二区中文字幕| 欧美综合久久久| 男人亚洲天堂网| 美女搞黄视频在线观看| 夜夜爽夜夜爽精品视频| 粉嫩av一区二区三区天美传媒| 男人天堂久久久| 国产亚洲欧美激情| 欧美另类网站| 欧美色图另类| 久久免费视频一区| 久久天堂国产精品| 日韩porn| 国产女同性恋一区二区| 天堂社区 天堂综合网 天堂资源最新版 | 五月开心六月丁香综合色啪| 亚洲日本成人网| 女人又爽又黄免费女仆| 亚洲性视频大全| 亚洲日本中文字幕| 老熟妇一区二区| 成人高清av| 综合国产在线视频| 亚洲区一区二区三| 欧美一区不卡| 久久久噜噜噜久久中文字免| 国产一级aa大片毛片| 国产真实久久| 欧洲日本亚洲国产区| 潘金莲一级淫片aaaaaa播放| 久久久精品性| 国产精品亚发布| 国产精品美女一区| 国产成人在线电影| 久久国产精品免费一区| 国产在线观看免费网站| 国产精品国产自产拍在线| 亚洲欧美日韩不卡| 国产99在线观看| 色老汉一区二区三区| 91小视频网站| 91麻豆精品激情在线观看最新 | 日韩欧美精品网址| 男女啪啪网站视频| 中文幕av一区二区三区佐山爱| 日韩一区二区三区三四区视频在线观看 | 高清一区二区三区av| 日韩欧美国产三级| 91精品人妻一区二区| 精品国产午夜| 欧美成年人视频| 国产精品第9页| 男男视频亚洲欧美| 国产传媒欧美日韩| 国产最新视频在线观看| 亚洲毛片av在线| 久久精品国产精品亚洲色婷婷| 成人国产精品| 精品国产乱子伦一区| 色综合99久久久无码国产精品| 五月天激情综合网| 欧亚精品中文字幕| 国产毛片毛片毛片毛片| 久久久久久久国产精品影院| 超碰成人在线免费观看| 天堂av中文在线观看| 91麻豆精品91久久久久同性| 亚洲精品中文字幕在线播放| 日韩欧美高清在线播放| 97香蕉久久超级碰碰高清版| 怡春院在线视频| 99精品视频一区二区三区| 亚洲一区尤物| 日本乱码一区二区三区不卡| 欧美一区二区三区免费视频| 国产中年熟女高潮大集合| 欧美精品午夜| 成人午夜激情网| yjizz视频网站在线播放| 亚洲最色的网站| www.se五月| 最新亚洲精品| 久久久久久久999| 国产精品久久久久久久一区二区| 成人福利视频在线看| 吴梦梦av在线| 粉嫩av一区二区三区四区五区| 亚洲国产精品大全| 久久久久久激情| 国产在线播放一区二区三区| 日韩电影免费观看在| 国产精品一二三产区| 日韩一区二区在线看| 国产又粗又猛又爽又黄的视频小说| 国产精品一区毛片| 国产一区二区精品在线| 久草在线视频福利| 欧美一区二区三区在线| 国产小视频你懂的| 免费看日韩精品| 日韩亚洲不卡在线| 户外露出一区二区三区| 亚洲美女av黄| 亚洲GV成人无码久久精品 | 欧美一区二区高清| 欧美老熟妇一区二区三区| 麻豆成人91精品二区三区| 日韩影片在线播放| 亚洲a∨精品一区二区三区导航| 日韩精品极品视频| 国产剧情在线视频| 国产欧美中文在线| 日日噜噜夜夜狠狠| 日韩欧美网站| 91久久久久久久| 国产美女在线观看| 日韩欧美亚洲一区二区| 免费网站观看www在线观| 丁香另类激情小说| 国产av天堂无码一区二区三区| 岛国精品一区| 78m国产成人精品视频| 亚洲欧美自偷自拍| 欧美性猛交xxxx黑人| 国产小视频自拍| 久久er精品视频| 国产91porn| 国产成人精品福利| 国产91精品最新在线播放| 成人性生交大片免费看午夜 | 蜜桃视频久久一区免费观看入口 | 日韩免费高清视频| 在线看一区二区| 精品手机在线视频| 国产综合成人久久大片91| www亚洲国产| 亚洲91网站| 丁香婷婷深情五月亚洲| 亚洲五月六月| 国产麻豆一区二区三区| 欧美激情视频一区二区三区不卡| 刘亦菲毛片一区二区三区| 疯狂蹂躏欧美一区二区精品| 无码 人妻 在线 视频| 久久精品国内一区二区三区| 亚洲国产一二三精品无码 | 欧美在线色视频| 国产黄色小视频网站| 国产91精品在线观看| 国产精品欧美激情在线观看| 欧美国产一级| 韩国成人一区| 黄色欧美视频| 性欧美亚洲xxxx乳在线观看| 岛国在线视频免费看| 欧美一区二区日韩| 亚洲视频 欧美视频| 亚洲欧美色一区| 亚洲一区二区乱码| 国内精品伊人久久久久av一坑| 国产3p露脸普通话对白| 欧美色图国产精品| 国产伦精品一区二区三区高清| 暖暖成人免费视频| 欧美精品在线免费观看| 国产三级在线免费观看| 精品国产一区二区三区不卡| 午夜一级黄色片| 亚洲高清免费观看高清完整版在线观看 | 欧美成人精品一区| 国产h在线观看| 亚洲国产精品99| 99久久久国产精品无码网爆| 一本到一区二区三区| 久久久国产成人| 日韩毛片一二三区| 人妻精品久久久久中文| 成人aa视频在线观看| www.51色.com| 蜜臀久久久99精品久久久久久| 日韩国产欧美亚洲| 国产在线不卡| 在线观看免费黄色片| 成人系列视频| 日韩电影天堂视频一区二区| 美女主播精品视频一二三四| 97超级碰碰| 国产在线视频欧美一区| 国产精品吴梦梦| 欧亚一区二区| 日本精品久久久久久久| av最新在线| 韩国一区二区电影| 丁香花在线电影| 欧美精品久久久久a| 午夜小视频福利在线观看| 精品国产视频在线| 日本在线视频观看| 色av中文字幕一区| 91精品国产综合久久久久久豆腐| 亚洲人成欧美中文字幕| 天堂av电影在线观看| 精品不卡在线视频| 蜜臀久久精品久久久久| 亚洲精品一区二区三区蜜桃下载 | 国产 国语对白 露脸| 欧美一区不卡| 日本一级黄视频| 国产综合自拍| 免费在线观看视频a| 亚洲经典视频在线观看| 久久久久久久久久网| 亚洲茄子视频| 国产91对白刺激露脸在线观看| 国产精品亚洲产品| 日韩av播放器| 麻豆中文一区二区| www.污网站| 国产成人在线电影| a天堂视频在线观看| 91麻豆国产福利精品| 91精品国自产在线| 亚洲欧洲av一区二区三区久久| 日本一级特级毛片视频| 一区二区三区资源| 黄色片视频网站| 欧美性xxxxx| 这里只有精品999| 在线综合+亚洲+欧美中文字幕| 精品国产无码一区二区| 亚洲国产精品va在线看黑人动漫 | 国语自产精品视频在线看一大j8| 国产福利电影在线播放| 日韩免费黄色av| а天堂中文最新一区二区三区| 亚洲最大成人网色| 麻豆国产欧美一区二区三区r| 欧美极品色图| 羞羞答答成人影院www| 日本一区午夜艳熟免费| 翔田千里一区二区| 黄色小视频免费网站| 东方欧美亚洲色图在线| 亚洲国产无码精品| 国产精品国产三级国产普通话蜜臀| 欧美性猛交xxxxx少妇| 岛国av午夜精品| 91激情在线观看| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 亚洲色图综合网| 99在线播放| 日本精品视频在线播放| 精品国产一区二区三区2021| 韩国成人av| 欧美oldwomenvideos| 久久综合久久网| 久久激情五月婷婷| 色婷婷免费视频| 亚洲欧美怡红院| 精品人妻一区二区三区免费看| 欧美一区二区三区四区在线观看 | 8848成人影院| 亚洲mv在线看| 在线一区欧美| 激情成人在线观看| 国产午夜亚洲精品理论片色戒| 久草免费在线观看视频| 欧美性猛交xxxxxxxx| 天天插天天干天天操| 不用播放器成人网| 福利一区二区| 欧美精品123| 亚洲作爱视频| 日本黄色www| 国产精品久久久久毛片软件| 91av在线免费视频| 日韩欧美www| 黄色免费在线看| 国产欧美精品在线播放| 日韩av资源网| 欧美另类videos| 精东粉嫩av免费一区二区三区| 久久久久久久久免费看无码| 亚洲精品免费播放| 国产精品久久久久久久久毛片 | 91丨精品丨国产| 色一情一区二区三区四区| 一区二区激情| 无码人妻精品一区二区三| 亚洲精品高清视频在线观看| 中文字幕你懂的| 自拍偷拍亚洲区| gogo亚洲高清大胆美女人体| 国产一区二区免费在线观看| 亚洲图片在线| 国产免费a级片| 一区二区三区欧美激情| 99视频在线观看免费| www.久久久久久.com| 伊人久久大香| 亚洲AV无码成人精品一区| 男女男精品网站| 国产中文字幕久久| 欧美绝品在线观看成人午夜影视| av在线免费一区| 国产精品久久久久久久久久三级| 香蕉久久夜色精品国产使用方法| 欧美精品久久久久久久久久久| 国产福利精品一区二区| www.av视频| 精品久久久久香蕉网| 美女精品视频| 国产欧美日韩综合一区在线观看 | 天堂av中文字幕| 午夜免费日韩视频| 亚洲第一论坛sis| 久久久久人妻精品一区三寸| 久久嫩草精品久久久久| 超碰在线观看91| 尤物yw午夜国产精品视频| 国产极品一区| 国产成人免费高清视频| 少妇愉情理伦片bd| 日本一区福利在线| 国产二区视频在线| 99久久婷婷国产综合精品电影| 精品亚洲永久免费| 亚洲精品xxxx| 日韩pacopacomama| 一本色道婷婷久久欧美| 激情综合一区二区三区| 一区二区成人免费视频| 亚洲国产精品成人av| 成人在线爆射| 中文字幕一区二区三区有限公司| 国产一区二区三区美女| 精品无码久久久久久久| 日韩高清人体午夜| 日韩精选视频| 成人在线观看毛片| 2024国产精品| 中文字幕精品一区二| 美女精品久久久| 小说区图片区色综合区| 不卡的av中文字幕| 夜夜嗨av一区二区三区四季av| 丝袜视频国产在线播放| 国产一区二区视频在线观看| 欧美日韩一视频区二区| 韩国无码一区二区三区精品| 欧美亚洲综合另类| 手机在线免费av| 日本精品一区二区| 国产一区二区三区四区五区美女| 久久艹免费视频| 久久亚洲精品小早川怜子66| 国产伦理久久久久久妇女 | 免费在线观看一区二区| 精品一区二区免费在线观看| 中文在线观看免费网站| 在线观看国产精品91| 99精品国产一区二区三区2021| 狠狠操精品视频| 亚洲国产精品久久艾草纯爱 | 日韩高清影视在线观看| 中文字幕视频三区| 色综合天天综合在线视频|