我们经常在一个app注册的时候需要使用到短信验证码,输入一个手机号码,点击获取验证码,手机就能收到一条短信,输入短信中的验证码就能验证成功进而进行一些操作。

最近找了一个免费的短信验证官网 虽然免费但是也有一些限制,一个手机号码最多只能收到不到10次验证码,超过10次就不发送了,这时你就要换一个手机号码去接收验证码。 

好了接下来开始我们的操作吧!

短信验证:可以到Mob官网查看一下 :http://www.mob.com  里面有很多东西可以发掘一下

首先下载SMSSDK   (什么系统下载什么SDK)   我的是Android的  下载的SMS SDK For Android     

MobSMS短信验证

下载之后 找到里面的lib包MobSMS短信验证

里面有jar包 和arr包 全部导入到你项目的lib包里  这个是老版本的  可以参考官方的文档  http://wiki.mob.com/sdk-sms-android-3-0-0/

MobSMS短信验证


然后我们要在build.gradle中添加

repositories {
    flatDir {
        dirs 'libs'//就是你放aar的目录地址
    }
}


接下来我们还需要添加两个依赖


compile name: 'SMSSDK-2.1.2', ext: 'aar'
compile name: 'SMSSDKGUI-2.1.2', ext: 'aar'


基本上算是完成了  我们再写个Application    再去Manifests清单文件中配置一下  name=".MyApplication"


public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
//        初始化你的Appk 和App Secret  并且在Manifests中添加name=.....
        SMSSDK.initSDK(this,"2487a6986bdb1","1c7283837818bb6a0cf2f73d8175881c");
    }
}

还需要加一些权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

还可以引用自定义的 放在application里面

<activity
    android:name="com.mob.tools.MobUIShell"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="stateHidden|adjustResize"/>

这样就可以开始使用了!

    首先我们先设置几个Button按钮

MobSMS短信验证

    

我们看一看 自定义的

我们调用这个方法

private void opeRegisterPager() {
    RegisterPage registerPage = new RegisterPage();
    registerPage.setRegisterCallback(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            // 解析注册结果
            if (result == SMSSDK.RESULT_COMPLETE) {
                @SuppressWarnings("unchecked") HashMap<String, Object> phoneMap = (HashMap<String, Object>) data;
                String country = (String) phoneMap.get("country");
                String phone = (String) phoneMap.get("phone");
                Log.d("TAG", "opeRegisterPager()--country=" + country + "--phone" + phone);
            }
        }
    });
    registerPage.show(this);

}
点击就会跳到这个页面

MobSMS短信验证

输入我们的手机号就可以收到短信了


接着看我们自己设置的

点击获取验证码:

String phone = phone_Number.getText().toString().trim();
if (TextUtils.isEmpty(phone)) {
    Toast.makeText(this, "手机号码不能为空", Toast.LENGTH_SHORT).show();
} else {
    SMSSDK.getVerificationCode("86", phone);
    Toast.makeText(this, "手机号是:" + phone, Toast.LENGTH_SHORT).show();
}

手机就会收到验证码  然后输入到  输入框里  判断是否一致

String phone2 = phone_Number.getText().toString().trim();
String code = identifying_code_in.getText().toString().trim();
if (TextUtils.isEmpty(phone2) || TextUtils.isEmpty(code)) {
    Toast.makeText(this, "手机号和验证码均不能为空", Toast.LENGTH_SHORT).show();
    SMSSDK.submitVerificationCode("+86", phone2, code);
} else {
    Toast.makeText(this, "手机号是:" + phone2 + "验证码是:" + code, Toast.LENGTH_SHORT).show();
}


在最后我们重写这个方法

//防止内存泄漏
@Override
protected void onDestroy() {
    super.onDestroy();
    SMSSDK.unregisterEventHandler(eventHandler);
}

private EventHandler eventHandler = new EventHandler() {
    @Override
    public void afterEvent(int event, int result, Object data) {
        super.afterEvent(event, result, data);
        if (result == SMSSDK.RESULT_COMPLETE) {
            //回调完成
            if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                //提交验证码成功
                @SuppressWarnings("unchecked") HashMap<String, Object> phoneMap = (HashMap<String, Object>) data;
                String country = (String) phoneMap.get("country");
                String phone = (String) phoneMap.get("phone");
                Log.d("TAG", "提交验证码成功--country=" + country + "--phone" + phone);
            } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                //获取验证码成功
                Log.d("TAG", "获取验证码成功");
            } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                //返回支持发送验证码的国家列表
            }
        } else {
            ((Throwable) data).printStackTrace();
        }
    }
};

可以去Github上查看我的Demo:https://github.com/chenaihui/SMSDemo





相关文章:

  • 2021-07-13
  • 2021-11-15
  • 2022-01-16
  • 2021-11-17
  • 2022-02-22
猜你喜欢
  • 2021-12-22
  • 2021-12-03
相关资源
相似解决方案