1. 程式人生 > >Bmob後端雲簡訊驗證最新版Android studio整合登入演示

Bmob後端雲簡訊驗證最新版Android studio整合登入演示

關於簡訊驗證的方法有很多,ShareSDK,友盟等等,但是作為開發人員我們只需要能夠簡單使用就行,特別是對於我們學習新技術需要用到簡訊登入時,當然不能使用公司的後臺簡訊驗證啦!在公司開發的專案的話得看公司具體的安排 就行

第一步:毫無疑問當然是建立Bmob的簡訊驗證應用,具體詳情看截圖

1:這裡建立應用

這裡寫圖片描述

2:這裡可以設定簡訊模板

這裡寫圖片描述

3:這裡建立好後會出現applicationID初始化bmob時需要它

這裡寫圖片描述

4:這裡下載Android的SDK,分別需要jnilibs 和libs兩個資料夾下的內容,對自己英文不太敏感的就複製覆蓋,以免出錯

這裡寫圖片描述

5:這裡就是對應得整合文件所在資料夾

這裡寫圖片描述

二:下面就是在studio中操作了,詳情看圖片

1:選中libs包下的檔案右鍵add to library 他就會在build.gradle下生成jar,如果沒成功就手動添加了點選上方的同步

這裡寫圖片描述

2:這是libs下的,只需要同步過就可以了

這裡寫圖片描述

3:在清單檔案下添加里面這些許可權

這裡寫圖片描述

4:這是他目前最新的jar

這裡寫圖片描述

5:初始化bmob

這裡寫圖片描述

6:獲取驗證碼的方法,一般集成了不會出錯,如果在fragment中操作的話,注意jnilibs文件下的.so檔案,操作不當會遇到很麻煩的錯誤不好解決

這裡寫圖片描述

7:驗證簡訊驗證碼輸入是否超過他的位數,多了少了都會登入不成功

這裡寫圖片描述

MainActivity部分

package com.lt.bmobsmsv101;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import
cn.bmob.newsmssdk.BmobSMS; import cn.bmob.newsmssdk.exception.BmobException; import cn.bmob.newsmssdk.listener.RequestSMSCodeListener; import cn.bmob.newsmssdk.listener.VerifySMSCodeListener; /** * Created by kris on 2016. * */ public class MainActivity extends Activity implements View.OnClickListener { private EditText userName_et, passWord_et; private Button Message_btn, login_btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化bomb initBomb(); //初始化控制元件 initView(); //設定監聽 initEvent(); } //初始化控制元件 private void initView() { userName_et = (EditText) findViewById(R.id.userName_et); passWord_et = (EditText) findViewById(R.id.passWord_et); Message_btn = (Button) findViewById(R.id.Message_btn); login_btn = (Button) findViewById(R.id.login_btn); } private void initEvent() { //監聽初始化 login_btn.setOnClickListener(this); Message_btn.setOnClickListener(this); } /** * 目標要求:輸入手機號,點選獲取驗證碼,使用者把驗證碼填寫完畢,點選登入 * 具體內容: * 1、輸入手機號時,判斷是不是11位手機號,不是11位,當點選獲取 * 驗證碼按鈕時則提示-->請輸入11位有效手機號碼,是11位,則進行點選獲取驗 * 證碼操作,並提示驗證碼已傳送,請儘快使用 * 2、當進行獲取驗證碼操作後,獲取驗證碼按鈕變成灰色,且不可點選,並進行 * 倒計時操作,倒計時1分鐘後可以重新點選,再次傳送驗證碼 * 3、點選登入按鈕時,若手機號和驗證碼有一個為空,則提示手機號與驗證碼 * 不能為空,若驗證碼已填寫,則判斷使用者填寫所驗證碼與系統傳送驗證碼是否一致, * 一致則提示登入成功,錯誤則提示驗證碼輸入錯誤 */ private void initBomb() { BmobSMS.initialize(MainActivity.this, "d6179a5e8d4ad231c5389b460b4f9f7b"); //這裡是我的bmob的applicationID,使用時換成自己的就可了 } @Override public void onClick(View v) { Log.e("MESSAGE:", "1"); String userName = userName_et.getText().toString(); String passWord = passWord_et.getText().toString(); switch (v.getId()) { case R.id.Message_btn: Log.e("MESSAGE:", "2"); if (userName.length() != 11) { Toast.makeText(this, "請輸入11位有效手機號碼", Toast.LENGTH_SHORT).show(); } else { Log.e("MESSAGE:", "3"); //進行獲取驗證碼操作和倒計時1分鐘操作 BmobSMS.requestSMSCode(this, userName, "簡訊模板", new RequestSMSCodeListener() { @Override public void done(Integer integer, BmobException e) { if (e == null) { //傳送成功時,讓獲取驗證碼按鈕不可點選,且為灰色 Message_btn.setClickable(false); Message_btn.setBackgroundColor(Color.GRAY); Toast.makeText(MainActivity.this, "驗證碼傳送成功,請儘快使用", Toast.LENGTH_SHORT).show(); /** * 倒計時1分鐘操作 * 說明: * new CountDownTimer(60000, 1000),第一個引數為倒計時總時間,第二個引數為倒計時的間隔時間 * 單位都為ms,其中必須要實現onTick()和onFinish()兩個方法,onTick()方法為當倒計時在進行中時, * 所做的操作,它的引數millisUntilFinished為距離倒計時結束時的時間,以此題為例,總倒計時長 * 為60000ms,倒計時的間隔時間為1000ms,然後59000ms、58000ms、57000ms...該方法的引數 * millisUntilFinished就等於這些每秒變化的數,然後除以1000,把單位變成秒,顯示在textView * 或Button上,則實現倒計時的效果,onFinish()方法為倒計時結束時要做的操作,此題可以很好的 * 說明該方法的用法,最後要注意的是當new CountDownTimer(60000, 1000)之後,一定要呼叫start() * 方法把該倒計時操作啟動起來,不呼叫start()方法的話,是不會進行倒計時操作的 */ new CountDownTimer(60000, 1000) { @Override public void onTick(long millisUntilFinished) { Message_btn.setBackgroundResource(R.drawable.button_shape02); Message_btn.setText(millisUntilFinished / 1000 + "秒"); } @Override public void onFinish() { Message_btn.setClickable(true); Message_btn.setBackgroundResource(R.drawable.button_shape03); Message_btn.setText("重新發送"); } }.start(); Log.e("MESSAGE:", "4"); } else { Toast.makeText(MainActivity.this, "驗證碼傳送失敗,請檢查網路連線", Toast.LENGTH_SHORT).show(); } } }); } break; case R.id.login_btn: Log.e("MESSAGE:", "5"); if (userName.length() == 0 || passWord.length() == 0 || userName.length() != 11) { Log.e("MESSAGE:", "6"); Toast.makeText(this, "手機號或驗證碼輸入不合法", Toast.LENGTH_SHORT).show(); } else { BmobSMS.verifySmsCode(this, userName, passWord, new VerifySMSCodeListener() { @Override public void done(BmobException e) { if (e == null) { Log.e("MESSAGE:", "7"); Toast.makeText(MainActivity.this, "登入成功", Toast.LENGTH_SHORT).show(); } else { Log.e("MESSAGE:", "8"); Toast.makeText(MainActivity.this, "驗證碼錯誤", Toast.LENGTH_SHORT).show(); } } }); } break; } } }

效果圖展示點選獲取驗證碼後按鈕自動計時60 s

這裡寫圖片描述

更多細節請參考原始碼使用