因为我有个视频(别人的)里面也是用到了mob的smssdk,但是里面用到的方法是非gradle,及手动下载sdk并进行依赖的方法,一开始想着按照里面的来,可是后面发现视频里的smssdk版本太低了。就用回官方的快速集成,但是官方的也有一个小坑。下面开始介绍
在项目的根目录下的build.gradle中添加相应代码(这里有个小坑)
按照官方的描述,只添加了 classpath 'com.mob.sdk:MobSDK:+' ,但是这样会出错。正确的方法是,还是在此文件中添加maven地址:
maven {url "/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) {@Overridepublic void onTick(long millisUntilFinished) {btn_check.setText((millisUntilFinished / 1000) + "秒后可重发");}@Overridepublic 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(){@Overridepublic 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;@Overrideprotected 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) {@Overridepublic void onTick(long millisUntilFinished) {btn_check.setText((millisUntilFinished / 1000) + "秒后可重发");}@Overridepublic 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(){@Overridepublic 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); //注册短信回调}@Overrideprotected void onDestroy() {super.onDestroy();SMSSDK.unregisterAllEventHandler(); //销毁}}
用户信息存储还没有写