短信SDK平台
開發應用中,注冊登錄流程中需要用到短信驗證SDK,所以對第三方短信驗證碼服務平台做了一下調研。
短信驗證碼的作用:
- 確定手機號的真實性
- 防止大規模惡意注冊
短信驗證碼的工作流程
該流程中,SDK與MOB的服務器有兩次交互過程
- 手機app請求MOB服務器發送驗證碼,參數為phoneNumber
- 接收到驗證碼短信之后,手機app向MOB服務器回傳(phoneNumber,varifyCode)以驗證其正確性。
所找到的兩個提供短信驗證碼服務的SDK分別是:
- MOB :http://mob.com/#/index
- 聚合數據:https://www.juhe.cn/
兩者都下載下來demo和SDK進行測試過.
聚合數據的SDK包含了很多服務,短信驗證碼只是其中一種。短信API接口,接口數據一大堆,從一個角度看,可定制性強,但從實際使用看,極其簡單的一個短信驗證碼功能,作為用戶,我希望我所提供的輸入就是一個String phoneNumber,其他的東西那都是你的實現細節。我不需要關心。Mob做到了這樣簡單,所以好用些。
MOB
MOB短信SDK集成文檔
這個sdk使用起來相當簡單,
//短信回調事件,處理獲取驗證碼和驗證反饋事件
EventHandler eventHandler = new EventHandler() {
@Override
public void afterEvent(int event, int result, Object data) {
if (result != SMSSDK.RESULT_COMPLETE) {
Log.v("cc", "連接短信驗證碼服務器失敗");
((Throwable) data).printStackTrace();
return;
}
//回調完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//驗證碼驗證成功,服務器的反饋事件
Log.v("cc", "驗證成功");
register();
} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
//手機請求驗證碼,服務器在發送驗證碼之后,給與的網絡反饋
Log.v("cc", "已經發送驗證碼");
}
}
};
這個EventHandler是SDK注冊過程的回調接口,其中分別有對各個驗證狀態和過程的響應狀態。需要稍微吐槽一下的是,僅僅去看狀態名是很難直接認識到這個狀態所對應的是哪個功能的,官方的文檔也沒有說清楚,還是要通過下載demo去看代碼測試,才能明白其中的細節。好在SDK本身做的極其簡單。
初始化SMSSDK:兩個參數分別是自己的app所對應的兩個參數,需要去網站申請。
SMSSDK.initSDK(RegisterActivity.this, "a01257a383f0", "*********************");
注冊SDK回調
SMSSDK.registerEventHandler(eventHandler); //注冊短信回調
請求驗證碼
SMSSDK.getVerificationCode("86", mUserName);
回傳驗證碼以確定輸入的驗證碼是否正確
SMSSDK.submitVerificationCode("86", mUserName, varifyCode);
在使用過程中,程序一開始先初始化SMSSDK,然后初始化EventHandler(),egisterEventHandler(), 請求驗證碼和回傳驗證碼方法根據業務邏輯放到合適的地方去就可以了,發送后的事件都在EventHandler里相應的狀態中處理。總的來看,MOB SDK在使用的過程中沒有遇到什么困惑。開發者友好型SDK。
(另一個槽點是,官網沒有對Android Studio的使用教程,一個下載包里面有一個教程,但是官網上是看不到的,對於用AS的用戶有一定的干擾)
資費問題
測試期間,每天200條免費
上線之后,每天10000條免費
多的需要充值。