無論是在網頁上還是在客戶端,每當我們進行注冊的時候,往往會進行短信或者郵箱驗證,這是一種不錯的安全機制。對於用戶體驗來說,如果是在PC的網頁上,用郵箱或者短信驗證都比較方便;如果是在手機上,那麼使用短信驗證就比較方便。這篇博客我們將會在iOS應用中實現短信驗證碼的功能。
大家可以嘗試去開發。在我們進行調試過程中,需要注意的是:我們只能往同一個號碼發送5條驗證短信(12小時內)。超過這個額度就不能收到驗證短信了。這個是有電信運營商確定的,也是為了防止垃圾短信的一種安全方式。試想如果你不斷往一個號碼發送驗證碼,是不是就會成為垃圾短信呢?所以就會有這個數量限制。也就因為這個限制,讓我們調試程序增加了困難,也就意味著基本上一天之內我們只能運行5次程序。。。。每次調試程序還要斟酌一番,要不要發送呢?也就因為這個原因,這個簡單的功能我測試了2天。。。誰讓我只有一個號碼呢?
具體實現步驟如下:
(1)登錄mob移動開發者服務平台,注冊登錄,然後下載短信驗證碼SDK,SMS for iOS,然後直接拖入到項目中即可。裡面也有示例demo,做的挺不錯的,支持全球發送。
(2)進入後台,創建一個應用即可。獲得App Key和App Secret即可,在項目中會用到。這樣我們就有服務端了。
。
(3)發送驗證碼。只要向服務器發送國家碼+手機號碼 ,就可以了。一般在5秒之內就可以收到驗證碼。中國的國家碼就是86.如果你的App也需要在國外發布,就需要進行相應的配置。在自帶的demo中就進行了國家的選擇。
[SMSSDK getVerificationCodeByMethod:SMSGetCodeMethodSMS phoneNumber:@18888888888 zone:@86 customIdentifier:nil result:^(NSError *error){ if (!error){ //發送驗證碼成功的回調; } else{ //發送驗證碼失敗的回調;如果你輸入錯誤的手機號碼或者任意數字,就會回調; } }];
(4)驗證 驗證碼是否正確。只要向服務器發送手機號和剛才接收到的驗證碼,服務器端就會進行匹配驗證,然後進行相應的回調。
注意點:1).一個驗證碼只能進行一次驗證,一旦第一次驗證失敗後,就算第二次輸入正確的驗證碼,也不會驗證成功。
2).接收到驗證碼後,只在60s內有效,超過60s,就算驗證碼正確,也會驗證失敗。
實現代碼如下:
[SMSSDK commitVerificationCode:1234(驗證碼) phoneNumber:18888888888 zone:@86 result:^(NSError *error) { if (!error) { //驗證成功後的回調; }//if(); else{ //驗證失敗後的回調; } }];