精品欧美一区二区三区在线观看 _久久久久国色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)

92看片淫黄大片欧美看国产片| 亚洲视频777| 成人免费在线网| 暖暖视频在线免费观看| 六月丁香综合在线视频| 久久久久女教师免费一区| 国产成人av一区二区三区不卡| 日日狠狠久久| 欧美日韩国产丝袜美女| 亚洲午夜在线观看| 手机看片福利永久| 国产在线视视频有精品| 欧美最猛黑人xxxx黑人猛叫黄| 萌白酱视频在线| 全球av集中精品导航福利| 欧美视频一区二区三区在线观看| 久久综合久久久久| avtt亚洲| 久久综合色天天久久综合图片| 成人国产精品一区| jizz国产在线观看| 一本一本久久| 欧美第一淫aaasss性| 中国女人特级毛片| 亚洲+变态+欧美+另类+精品| 欧美一区二区免费观在线| 久久久久免费精品| 黄色漫画在线免费看| 亚洲美女一区二区三区| 亚洲啪啪av| 嫩草精品影院| av在线一区二区| 97人人做人人人难人人做| 中文字幕你懂的| 久久亚洲风情| 97在线精品视频| 欧美精品入口蜜桃| 亚洲草久电影| 爱福利视频一区| 丁香六月激情综合| 黑丝美女一区二区| 亚洲全黄一级网站| 法国伦理少妇愉情| 欧美在线导航| 日韩二区三区在线| 青青草成人免费视频| 国产精品久久久网站| 欧美大片在线观看一区二区| 佐山爱在线视频| 国产电影一区二区| 91麻豆精品国产自产在线观看一区| 亚洲性生活网站| 你懂得影院夜精品a| 色欲综合视频天天天| 亚洲国产精品久久久久爰色欲| freexxx性亚洲精品| 亚洲成人资源网| 国精产品一区一区三区视频| 日本午夜大片a在线观看| 婷婷综合另类小说色区| 丰满爆乳一区二区三区| 涩涩视频在线播放| 一本一道久久a久久精品综合蜜臀| 色综合久久久久无码专区| 欧美在线极品| 欧美色区777第一页| 天天爽人人爽夜夜爽| 日本成人一区二区| 欧美一区二区三区的| 日本天堂在线播放| 日韩成人午夜| 国产一区二区三区在线| 色撸撸在线视频| 66视频精品| 欧美激情视频在线免费观看 欧美视频免费一 | 久久精品免费播放| 久久久久久国产精品免费播放| 亚洲性视频h| 91高清视频免费观看| 久久久久久在线观看| 国内成+人亚洲+欧美+综合在线 | 精品人妻少妇嫩草av无码专区| 国产91富婆露脸刺激对白| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 欧美精品vⅰdeose4hd| 波多野结衣网页| 美国一区二区| 日韩中文在线不卡| 欧美精品一区二区成人| 亚洲永久在线| 91久久精品视频| 天堂av电影在线观看| 国产欧美精品一区二区色综合| 欧美少妇一级片| 草草在线观看| 欧美日韩一二三| 亚洲色偷偷色噜噜狠狠99网| 欧美猛男男男激情videos| 欧美老少做受xxxx高潮| 国产性生活视频| 成人午夜av影视| 亚洲欧美日韩精品在线| a√中文在线观看| 欧美军同video69gay| 无码一区二区精品| 先锋资源久久| 国产精品va在线播放| www.黄色国产| 国产精品毛片久久久久久| 国产精品一区二区免费在线观看| 日韩久久一区| 亚洲欧洲日本专区| 免费一级特黄特色大片| 久久99精品久久久久婷婷| 久久一区二区三区av| 丝袜国产在线| 欧美日韩国产区一| 久久久亚洲av波多野结衣| 午夜国产欧美理论在线播放 | 久久精品国产视频| 久久精品久久久久久久| av资源网一区| www.av蜜桃| 美女日韩一区| 精品国产一区二区三区久久久狼| 日韩欧美在线观看免费| 成人禁用看黄a在线| 色哺乳xxxxhd奶水米仓惠香| 国产精品xxx| 亚洲图片在线综合| 手机看片久久久| 99久久久久久| 少妇高潮毛片色欲ava片| 日韩精品视频在线看| 日韩视频在线免费| 97超碰人人草| 国产精品久久久久7777按摩| 国产理论在线播放| 国产欧美日韩免费观看| 日本电影亚洲天堂| 日色在线视频| 精品久久香蕉国产线看观看gif| 亚洲av无一区二区三区久久| 自拍欧美日韩| 亚洲一区二区在线播放| 91最新在线视频| 日韩无一区二区| 杨钰莹一级淫片aaaaaa播放| 国产乱对白刺激视频不卡| 综合色婷婷一区二区亚洲欧美国产| 国产精品久久久久久久久免费高清 | 中文字幕一区二区三三| 亚洲www永久成人夜色| 国产黄色小视频在线| 欧美一区二区三区在线观看视频| 亚洲国产精品免费在线观看| 国产成人精品在线看| 福利视频免费在线观看| 国产精品中文字幕制服诱惑| 国产69精品久久久久9| 午夜成人鲁丝片午夜精品| 精品国产91久久久久久老师| 中文字幕一区二区三区人妻不卡| 日韩激情视频在线观看| 亚洲国产日韩欧美| а天堂中文最新一区二区三区| 欧美理论电影在线观看| 欧美 中文字幕| 欧美性高潮床叫视频| 日本激情小视频| 精品一区二区影视| 国产成a人亚洲精v品在线观看| 麻豆一区二区麻豆免费观看| 日韩av电影手机在线| av在线资源站| 日韩亚洲欧美高清| av大片在线免费观看| 中文字幕久久午夜不卡| 国产精品99久久久精品无码| 亚洲另类自拍| 亚洲图片都市激情| 97久久超碰| 国产精品女人久久久久久| av在线下载| 亚洲男子天堂网| 国产精品日韩无码| 欧美日韩亚洲精品一区二区三区| 蜜臀久久99精品久久久久久| 国产寡妇亲子伦一区二区| 久久久久久久激情| 911精品美国片911久久久| 国产欧美丝袜| 久久免费资源| 69av在线播放| 成人影欧美片| 亚洲视频视频在线| www久久久久久| 欧洲日韩一区二区三区| 免费无码毛片一区二区app| 久久久久久久综合日本| 制服.丝袜.亚洲.中文.综合懂| 麻豆精品网站| 17c丨国产丨精品视频| 成人羞羞网站入口| 国严精品久久久久久亚洲影视 | 国产精品白丝喷水在线观看| 91在线观看下载| 91精产国品一二三产区别沈先生| 香蕉久久国产| 久久99久久99精品| 国产精品久久久久久久久久10秀 | 成人www视频在线观看| 韩国成人动漫| 午夜精品在线观看| www久久日com| 色噜噜国产精品视频一区二区| 亚洲欧美综合在线观看| 日韩美一区二区三区| 91麻豆一区二区| 91电影在线观看| 国产日产精品一区二区三区| 亚洲一区二区欧美日韩| 婷婷激情四射网| 国产精品网友自拍| 久久美女免费视频| 久久久久久久久久久久久久久99| 国产精品久久久久久在线观看| 国产真实乱偷精品视频免| 一区二区三区韩国| 三级欧美韩日大片在线看| 91九色在线观看视频| 亚洲黄页一区| 欧美精品卡一卡二| 极品中文字幕一区| 日韩精品一区二区在线视频| 综合视频在线| www国产免费| 欧美伊人影院| 免费日韩在线观看| 午夜精品国产| 精品少妇人欧美激情在线观看| 亚洲字幕久久| 国产情侣第一页| 伊人精品成人久久综合软件| 老子影院午夜伦不卡大全| 精品69视频一区二区三区Q| 日韩一级特黄毛片| 黄色工厂这里只有精品| 成 年 人 黄 色 大 片大 全| 精品电影一区| 鲁一鲁一鲁一鲁一色| 久久久久久穴| 手机看片一级片| 国产在线看一区| 不卡的一区二区| 成人h精品动漫一区二区三区| 秘密基地免费观看完整版中文 | 2025国产精品自拍| 亚洲综合丝袜美腿| 欧美亚韩一区二区三区| 91国偷自产一区二区开放时间| 中国一区二区视频| 91精品啪在线观看国产60岁| 超碰福利在线观看| 亚洲精品国精品久久99热| 蜜桃视频在线观看视频| 在线视频欧美性高潮| а√资源新版在线天堂| 久久久久久久久电影| 在线成人av观看| 国产噜噜噜噜噜久久久久久久久| 国产精久久久| 久久99精品久久久久久秒播放器 | av在线亚洲天堂| 精品久久久久一区二区国产| 亚洲人视频在线观看| 在线成人激情黄色| av电影高清在线观看| 97超视频免费观看| 久久爱.com| 成人av资源网| 精品国产91久久久久久浪潮蜜月| 公共露出暴露狂另类av| 欧美一级一区| 成年人网站av| 久久综合给合久久狠狠狠97色69| av资源在线免费观看| 亚洲va韩国va欧美va| 中文在线免费观看| 亚洲成人激情在线观看| 中文日本在线观看| 国产91|九色| 日本免费一区二区三区视频| 女同一区二区| 欧美/亚洲一区| 成人亚洲视频在线观看| 成人免费视频播放| 免费91在线观看| 大伊人狠狠躁夜夜躁av一区| 国产精品日韩无码| 亚洲色图17p| 超碰激情在线| 91福利入口| 精品国产1区| 两根大肉大捧一进一出好爽视频| 极品美女销魂一区二区三区免费| 三级男人添奶爽爽爽视频| 亚洲欧美日韩国产综合在线| 麻豆精品久久久久久久99蜜桃| 欧美成人a视频| www黄在线观看| 2019中文字幕在线观看| 美国十次综合久久| 一区二区三区四区视频在线| 欧美亚洲视频| 中文字幕99页| 一区二区视频免费在线观看| 一本色道久久综合熟妇| 亚洲免费人成在线视频观看| 国产极品人妖在线观看| 91麻豆桃色免费看| 成人91在线| 亚洲人成色77777| 91亚洲资源网| 日产亚洲一区二区三区| 日韩天堂在线观看| 污污片在线免费视频| 7777精品久久久大香线蕉小说| 欧美aaaaaaaaaaaa| 日韩欧美国产片| 中文字幕av一区 二区| 日本久久综合网| 亚洲欧美日韩中文在线| 亚洲va中文在线播放免费| 免费在线观看91| 久久久久国产精品一区三寸| 亚洲国产无码精品| 欧美性猛交xxxxx水多| 免费看日韩av| 午夜美女久久久久爽久久| 高清欧美性猛交xxxx黑人猛| 青娱乐自拍偷拍| 99re8在线精品视频免费播放| 日韩免费不卡视频| 亚洲精品mp4| 欧美电影网址| 日韩av高清| 久久精品99久久久| 欧美做爰爽爽爽爽爽爽| 日韩亚洲欧美成人一区| 国产后进白嫩翘臀在线观看视频| 国模精品一区二区三区| 国产精品主播| 粉嫩精品久久99综合一区| 欧美日韩一区视频| 在线中文免费视频| 国产精品二区在线观看| 亚洲美女一区| 日本爱爱爱视频| 欧美一级二级三级蜜桃| 黄页网站在线观看免费| 久久婷婷开心| 六月婷婷色综合| 久久久综合久久久| 日韩久久精品电影| 国产精品原创视频| 成人在线视频一区二区三区| 91香蕉视频在线| 国语对白做受69按摩| 久久人人爽人人爽人人片亚洲| silk一区二区三区精品视频| 日韩av片在线看| 中文字幕不卡三区| 不卡视频免费在线观看| 日本不卡高字幕在线2019| 欧美电影免费| 99精品一区二区三区无码吞精| 日韩欧美一区二区三区| 黄网页免费在线观看| 精品无码久久久久国产| 日本va欧美va精品| 精品人妻在线播放| 亚洲人成电影在线| 日韩精品视频中文字幕| 日av中文字幕| 亚洲老妇xxxxxx| 精品久久av| 国产99在线播放| 免费在线视频一区| 精品无码免费视频| 最近中文字幕2019免费| 久久视频在线观看| 亚洲欧美aaa| 欧美性猛交xxxx黑人| 黄色成年人视频在线观看| 欧美日韩成人一区二区三区 | 丰腴饱满的极品熟妇| 91精品中文字幕一区二区三区| 亚洲黄色网址| 国产精品第157页|