有些时候自己做个人项目需要使用短信验证,但是又不想花钱,就得用我接下来要说的这个良心的第三方了
官网地址:http://www.mob.com/
短信接入的文档:http://wiki.mob.com/api-android/
sdk下载的地址:http://www.mob.com/downloadDetail/SMS/android
接下来说说步骤,其实步骤在官方文档里面已经有了,但是会有很多的坑,我来说说具体的步骤,避免遇坑
1,注册用户,注册应用,拿到appkey和appSecret
拿到后是这样的
3,选中jar包右键 ,add as library
4,把下面这些代码复制到你的app下面的build.gradle,记住是app下面的,别搞错了
repositories{
flatDir{
dirs 'libs' //就是你放aar的目录地址
}
}
5,坑要来了,把下面的代码复制到build.gradle依赖里面
compile name:'SMSSDK-2.1.3',ext:'aar'
compile name:'SMSSDKGUI-2.1.3',ext:'aar'
注意SMSSDK-2.1.3,这个2.1.3是你复制到libs下面的aar文件的版本号,别下的是一个版本,复制进build.gradle又是另外一个,那就日狗了
6,打开您项目的“AndroidManifest.xml”,在其中添加如下的权限:
<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" />
7,在“application”下添加如下activity:
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"/>
接下来就可以用了,用的时候有2种用法,
1,一个是用SDK自带的ui界面,几行代码完事,具体代码:
在项目启动的时候初始化SDK
SMSSDK.initSDK(this, "您的appkey", "您的appsecret");
然后在去验证手机号的地方调用下面的代码
//打开注册页面
RegisterPage registerPage = new RegisterPage();
registerPage.setRegisterCallback(new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// 解析注册结果
if (result == SMSSDK.RESULT_COMPLETE) {
//成功后回调到这个方法
}
registerPage.show(context);
这样就把SDK里面的界面呼起来了,然后你输入手机号,然后收到验证码,然后就输入验证码,然后就验证,
成功就在回调方法:result == SMSSDK.RESULT_COMPLETE,其他就是失败result ==RESULT_ERROR
然后就没有然后了
下面来说说自己定义ui界面怎么操作,毕竟SDK提供的ui太丑了
你可以看看这里:http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/
1.肯定是
SMSSDK.initSDK(this,APPKEY,APPSECRET);
2,获取到手机号后调用这个方法,传入国家,和手机号
getVerificationCode(String country, String phone)
中国传入86,
SMSSDK.getVerificationCode("86", "1338*******");
SMSSDK.registerEventHandler(new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// 解析注册结果
if (result == SMSSDK.RESULT_COMPLETE) {//成功
} else {
showToast("发送失败,请重试!");
}
}
});
3,成功之后会受到验证码,然后调用
submitVerificationCode(String country, String phone, String code)
提交短信验证码,在监听中返回
传入,国家,手机号,和验证码,具体实现:
SMSSDK.submitVerificationCode("86", telephoneNum, verificationCode);
SMSSDK.registerEventHandler(new EventHandler() {
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {//成功
Log.e("duanyimeng", "testVerificationCode:result== " + result);
} else {
showToast("验证失败,请重试!");
}
}
});
最后为了防止内存泄漏,在销毁的时候调用
@Override
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterAllEventHandler();
}
这就搞定了