当前位置: 首页 > 科技观察

Android简单短信验证功能的实现

时间:2023-03-13 01:24:54 科技观察

相信很多朋友在做三向登录的时候都会加上短信验证功能。最近,他们被指派执行此要求。我是新手,上网查资料。目前大汉很多。云通讯和MOBsmssdk。相比之下,我最终还是选择了完全免费的MOB产品来尝试。以下是使用sdk过程中的一些心得。希望能看到高手的建议,喜欢的慎重就好。首先上网百度下载了Mob的官网(http://www.mob.com/)作为第一次习惯使用先打开文档介绍。这里介绍的是比较详细的使用方法,这里就不赘述了。重复一遍,我浏览了整个文档,介绍了两种方法,一种是as的maven集成,一种是eclipse的通用集成。公司项目as,后面的不考虑。maven集成的方式真的很适合新手,只需要在gradle下配置,省心省力,先贴代码:在你的根模块build.gradle中添加如下脚本:buildscript{//添加MobSDK的maven地址repositories{maven{url"http://mvn.mob.com/android"}}dependencies{//注册MobSDKclasspath"com.mob.sdk:MobSDK:+"}}在app下的build.gradle中,添加MobSDK插件-ins和扩展,如://添加插件applyplugin:"com.mob.sdk"//在MobSDK扩展中注册SMSSDK相关信息MobSDK{appKey"d580ad56****"appSecret"7fcae59a62342e7e2759e9e397**"SMSSDK{}}//这里的appkey和appsecret是在mob后台创建app时获取的,所以需要使用的时候,先去官网注册一个账号,进入后台创建并配置上面的gradle配置,基本上smssdk的集成就完成了,文档里有提供我把调用代码直接复制粘贴进去我的demo去测试了一下,出乎意料的顺利,唯一不满意的是短信验证界面太老土了,产品肯定很难通过,(收起懒惰的念头),又默默研究了一下文档,看到有没有gui的使用方法(http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/),他们提供了相关的接口,具体的我就不贴图了,大家可以去官网文档看看,需要注意的是,如果是自己的UI,需要添加SMSSDK{guifalse}wheregradleconfiguredsmssdkbeforeitisonlydemo测试,ui布局随便写,刚好满足正常测试,有点难看。下面是调用编写的接口代码。文档提供了初始化的接口。registerEventHandler用于在SMSSDK中注册事件接收器。SMSSDK允许开发者注册任意数量的receivers,当事件触发时所有receivers都会收到消息,以下是我的部分代码:EventHandlerhandler=newEventHandler(){@OverridepublicvoidafterEvent(intevent,intresult,Objectdata){if(result==SMSSDK.RESULT_COMPLETE){//回调完成if(event==SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){//提交验证码成功runOnUiThread(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(MainActivity.this,"验证成功",Toast.LENGTH_SHORT).show();}});}elseif(event==SMSSDK.EVENT_GET_VOICE_VERIFICATION_CODE){runOnUiThread(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(MainActivity.this,"语音验证发送",Toast.LENGTH_SHORT).show();}});}elseif(event==SMSSDK.EVENT_GET_VERIFICATION_CODE){//获取验证码成功runOnUiThread(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(MainActivity.this,"验证码已发送",Toast.LENGTH_SHORT).show();}});}elseif(event==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){Log.i("test","test");}}else{((Throwable)data).printStackTrace();Throwablethrowable=(Throwable)data;throwable.printStackTrace();Log.i("1234",throwable.toString());try{JSONObjectobj=newJSONObject(throwable.getMessage());finalStringdes=obj.optString("detail");if(!TextUtils.isEmpty(des)){runOnUiThread(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(MainActivity.this,des,Toast.LENGTH_SHORT).show();}});}}catch(JSONExceptione){e.printStackTrace();}}}};SMSSDK.registerEventHandler(handler);之后是发送验证等简单的接口调用:findViewById(R.id.tv_test1).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){phone=etVGetcode.getText().toString();//获取验证码if(TextUtils.isEmpty(phone))Toast.makeText(MainActivity.this,"号码不能为空",Toast.LENGTH_SHORT).show();Log.i("1234",phone.toString());SMSSDK.getVerificationCode("86",phone,null);}});findViewById(R.id.tv_test_vcode_valiable).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){//提交验证码验证if(TextUtils.isEmpty(phone))Toast.makeText(MainActivity.this,"号码不能为空",Toast.LENGTH_SHORT).show();number=etVCode.getText().toString();if(TextUtils.isEmpty(number))Toast.makeText(MainActivity.this,"数字不能为空",Toast.LENGTH_SHORT).show();Log.i("1234",phone+","+number);SMSSDK.submitVerificationCode("86",phone,number);}});代码其实比较简单,测试最重要的验证效率,个人感觉很快,基本上发送后两三秒就收到了,更重要的是免费,还是值得推荐的。说了这么多,我们来看一下效果图:添加一个坑:这是在mob后台添加短信产品设置的地方。是的,我一直收不到短信。问了技术客服半天才知道。兄弟们,请小心。写的比较粗糙,希望对需要的同学有所帮助=。=