Bmob後端雲簡訊驗證最新版Android studio整合登入演示
阿新 • • 發佈:2019-02-19
關於簡訊驗證的方法有很多,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;
}
}
}