因为我有个视频(别人的)里面也是用到了mob的smssdk,但是里面用到的方法是非gradle,及手动下载sdk并进行依赖的方法,一开始想着按照里面的来,可是后面发现视频里的smssdk版本太低了。就用回官方的快速集成,但是官方的也有一个小坑。下面开始介绍
-
在项目的根目录下的build.gradle中添加相应代码(这里有个小坑)
按照官方的描述,只添加了 classpath 'com.mob.sdk:MobSDK:+' ,但是这样会出错。正确的方法是,还是在此文件中添加maven地址:
maven {
url "http://mvn.mob.com/android"
}
上图:
2.在app-build.gradle(你的项目下的那个build文件,和第一步的不一样) 添加如下代码
apply plugin: 'com.mob.sdk'
// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
appKey "*******" //这里得填你自己申请的appKey
appSecret "********" //这里得填你自己申请的appSecret
SMSSDK {}
}
最后一步,syc就行了。集成的就到这,下面是短信界面的设计以及代码
布局这一块没啥好说的,先设计最丑的吧。
关于验证码短信的代码,首先发布这个短信有两个提交。
第一次提交:你点击 获取短信 按钮,提交“请求获取验证码 ”
SMSSDK.getVerificationCode("86", registerPhone);
点击之后,获取验证码的按钮应该显示倒计时,这时用到一个类 CountDownTimer,直接贴上代码
private CountDownTimer timer = new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
btn_check.setText((millisUntilFinished / 1000) + "秒后可重发");
}
@Override
public void onFinish() {
btn_check.setEnabled(true); //btn_check就是 获取验证码 按钮
btn_check.setText("获取验证码");
codeResult = false;
}
};
这只是一个方法,还得调用它:timer.start(); //放在按钮的监听事件里,还不知道的话等下我会贴出源码,自己找
第二次提交:检验验证码。
SMSSDK.submitVerificationCode("86", registerPhone,registerCode);//提交验证码 在eventHandler里面查看验证结果 registerCode为验证码
发送之后去到eventHandler看这两次提交的结果
private void initSMSSDK() {
EventHandler eh=new EventHandler(){
@Override
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {
//回调完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//提交验证码成功
if (result == SMSSDK.RESULT_COMPLETE ){
codeResult = true; //提交的验证码是正确的
submitInfo();
} else {
Toast.makeText(registerActivity.this, "验证码错误,请重新输入", Toast.LENGTH_SHORT).show();
register_code.setText("");
}
}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
//获取验证码成功
if (result == SMSSDK.RESULT_COMPLETE ){
} else {
}
}
}else{
((Throwable)data).printStackTrace();
}
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调
}
codeResult是验证码是否成功的标志。
下面贴出完整的代码
package com.handsomexi.homework.Activity;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.handsomexi.homework.R;
import com.mob.MobSDK;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
public class registerActivity extends AppCompatActivity {
private boolean codeResult = false;
private static String registerPhone;
private static String registerCode;
@BindView(R.id.register_account)
EditText register_account;
@BindView(R.id.register_password)
EditText register_password;
@BindView(R.id.register_phoneNumber)
EditText register_phoneNumber;
@BindView(R.id.check)
Button btn_check;
@BindView(R.id.register_code)
EditText register_code;
@BindView(R.id.register)
Button register;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
ButterKnife.bind(this);
MobSDK.init(this);
initSMSSDK();
//sendCode(this);
}
@OnClick({R.id.check,R.id.register})
public void onViewClike(View view){
switch (view.getId()){
case R.id.check:
if (validatePhone()){
setEditText();
SMSSDK.getVerificationCode("86", registerPhone);//发送短信验证码到手机号 86表示的是中国
timer.start(); //使用计时器,设置验证码的时间限制
}
break;
//点击注册按钮
case R.id.register:
setEditText(); //获取手机号码和验证码
SMSSDK.submitVerificationCode("86", registerPhone,registerCode);//提交验证码 在eventHandler里面查看验证结果 code为验证码
break;
}
}
/**
* 验证用户的其他信息
* 这里验证两次密码是否一致 以及验证码判断
*/
private void submitInfo() {
//如果验证码正确,保存用户信息,并把用户名和密码发到登录界面
if (codeResult){
codeResult = false;
}
}
/**
* 使用计时器来限定验证码
* 在发送验证码的过程 不可以再次申请获取验证码 在指定时间之后没有获取到验证码才能重新进行发送
* 这里限定的时间是60s
*/
private CountDownTimer timer = new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
btn_check.setText((millisUntilFinished / 1000) + "秒后可重发");
}
@Override
public void onFinish() {
btn_check.setEnabled(true);
btn_check.setText("获取验证码");
codeResult = false;
}
};
/**
* 验证手机号码是否符合要求,11位 并且没有注册过(以后再写)
*
* @return 是否符合要求
*/
private boolean validatePhone() {
String phone = register_phoneNumber.getText().toString().trim();
return true;
}
private void setEditText() {
registerPhone = register_phoneNumber.getText().toString();
registerCode = register_code.getText().toString(); //获取输入的验证码
}
private void initSMSSDK() {
EventHandler eh=new EventHandler(){
@Override
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {
//回调完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//提交验证码成功
if (result == SMSSDK.RESULT_COMPLETE ){
codeResult = true; //提交的验证码是正确的
submitInfo();
} else {
Toast.makeText(registerActivity.this, "验证码错误,请重新输入", Toast.LENGTH_SHORT).show();
register_code.setText("");
}
}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
//获取验证码成功
if (result == SMSSDK.RESULT_COMPLETE ){
} else {
}
}
}else{
((Throwable)data).printStackTrace();
}
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调
}
@Override
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterAllEventHandler(); //销毁
}
}
用户信息存储还没有写