如何使用MOB的無UI短信SDK
1.之所以選擇Mob短信驗證碼SDK,是因為它是完全免費的,所以很適合自己平時測試或者在個人的小項目中使用,但是有點小坑的是上線前每個手機號壹天有次數限制、短信內容不能自定義。2.首先打開Mob官網,下載SDK3.將下載好的.zip文件解壓,其文件結構如圖:4.打開官網,登錄自己賬號,選擇進入後臺5.選擇SecurityCodeSDK6.申請應用的APPKey和AppSecret,7.創建壹個我們自己要進行測試的工程mydemo,導入依賴庫,即三步走:第壹步打開3中下載的文件,復制SMSSDK文件夾到工程目錄下8.第二步:右鍵工程選擇import->再把自身項目裏的SMSSDK導入壹下工程(註意當eclipse中其他項目也包含有SMSSDK時,可能會導入不了,所以應該避免這種情況)9.第三步:再右鍵項目,選擇properties->Android->add->SMSSDK->ok10.好了,準備工作都已做好,接下來編寫代碼(1)SMSSDK.initSDK(this,"11b137e3a5e00","632f0c9cf1cd683806146758ef8784e3");//sdk使用前的壹個初始化,第二個參數即6中的key和Secret(2)/***寫壹個短信發送的監聽,用於判斷驗證碼是否發出,提交的驗證碼是否通過等信息,因為這個不是主線程中的,所以不能對UI線程進行操作,所以這裏使用了消息機制*/EventHandlereh=newEventHandler(){publicvoidafterEvent(intarg0,intarg1,Objectarg2){//afterEvent為調用SDK之後回調的方法Messagem=Message.obtain();m.what=1;m.arg1=arg0;//eventm.arg2=arg1;//resulthandler.sendMessage(m);}};(3)SMSSDK.registerEventHandler(eh);//註冊短信回調接口(4)/***添加壹個按鈕,當點擊時發送短信,註意只有當前網絡有網時才能訪問服務器獲取驗證碼,方法CommonUtils.getNetworkInfo是自己定義判斷網絡狀態的工具方法,很簡單*/publicvoidsmsPhoneRegisterVM(Contextcontext,Stringstr){this.context=context;if(CommonUtils.getNetworkInfo(context)!=2){SMSSDK.getVerificationCode("86",str);//請求獲取短信驗證碼,在監聽中EvenHandler接口返回,str:手機號}else{Toast.makeText(context,"請檢查網絡連接",Toast.LENGTH_SHORT).show();}}(5)/***添加壹個提交按鈕,進行驗證碼驗證*/publicvoidsmsCommitCommitVM(Contextcontext,Stringstr,Stringstr1){SMSSDK.submitVerificationCode("86",str,str1);//提交短信驗證碼,在監聽中返回,str:手機號str1:收到的驗證碼}(6)/***接收afterEvent方法裏面的Message*/Handlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:if(msg.arg2==SMSSDK.RESULT_COMPLETE){//發送成功的情況if(msg.arg1==SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){//驗證成功通過Intenti=newIntent(context2,ActivityRegisterSmsPage3.class);context2.startActivity(i);}elseif(msg.arg1==SMSSDK.EVENT_GET_VERIFICATION_CODE){//驗證碼已經從服務器發出Toast.makeText(context,"驗證碼已發出,請註意查收",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(context,"驗證碼錯誤",Toast.LENGTH_SHORT).show();}break;}};};(7)publicvoidunRegisterEventHandler(){//最後註銷監聽,否則可能會造成內存泄露SMSSDK.unregisterEventHandler(eh);}(8)最後別忘了添加權限和壹個activity,此activity位置和普通activity位置壹樣(9)/***MOB官方文檔說明*getVerificationCode用於向服務器請求發送驗證碼的服務,需要傳遞國家代號和接收驗證碼的手機號碼,支持此服務的國家代碼在getSupportedCountries中獲取。*請求getVerificationCode的時間間隔不應該小於60秒,否則服務端會返回“操作過於頻繁”的錯誤*submitVerificationCode用於向服務器提交接收到的短信驗證碼,驗證成功後會通過EventHandler返回國家代碼和電話號碼。*/