发布网友 发布时间:2022-04-23 18:13
共2个回答
热心网友 时间:2023-07-02 09:35
1.之所以选择Mob短信验证码SDK,是因为它是完全免费的,所以很适合自己平时测试或者在个人的小项目中使用,但是有点小坑的是上线前每个手机号一天有次数*、短信内容不能自定义。2.首先打开Mob官网,下载SDK3.将下载好的.zip文件解压,其文件结构如图:4.打开官网,登录自己账号,选择进入后台5.选择SecurityCodeSDK6.申请应用的APPKey和AppSecret,7.创建一个我们自己要进行测试的工程mydemo,导入依赖库,即三步走:第一步打开3中下载的文件,复制SMSSDK文件夹到工程目录下8.第二步:右键工程选择import->再把自身项目里的SMSSDK导入一下工程(注意当eclipse中其他项目也包含有SMSSDK时,可能会导入不了,所以应该避免这种情况)9.第三步:再右键项目,选择properties->Android->add->SMSSDK->ok10.好了,准备工作都已做好,接下来编写代码(1)SMSSDK.initSDK(this,"11b137e3a5e00","632f0c9cf1cd683806146758ef8784e3");//sdk使用前的一个初始化,第二个参数即6中的key和Secret(2)/***写一个短信发送的监听,用于判断验证码是否发出,提交的验证码是否通过等信息,因为这个不是主线程中的,所以不能对UI线程进行操作,所以这里使用了消息机制*/EventHandlereh=newEventHandler(){publicvoidafterEvent(intarg0,intarg1,Objectarg2){//afterEvent为调用SDK之后回调的方法Messagem=Message.obtain();m.what=1;m.arg1=arg0;//eventm.arg2=arg1;//resulthandler.sendMessage(m);}};(3)SMSSDK.registerEventHandler(eh);//注册短信回调接口(4)/***添加一个按钮,当点击时发送短信,注意只有当前网络有网时才能访问服务器获取验证码,方法CommonUtils.getNetworkInfo是自己定义判断网络状态的工具方法,很简单*/publicvoidsmsPhoneRegisterVM(Contextcontext,Stringstr){this.context=context;if(CommonUtils.getNetworkInfo(context)!=2){SMSSDK.getVerificationCode("86",str);//请求获取短信验证码,在监听中EvenHandler接口返回,str:手机号}else{Toast.makeText(context,"请检查网络连接",Toast.LENGTH_SHORT).show();}}(5)/***添加一个提交按钮,进行验证码验证*/publicvoidsmsCommitCommitVM(Contextcontext,Stringstr,Stringstr1){SMSSDK.submitVerificationCode("86",str,str1);//提交短信验证码,在监听中返回,str:手机号str1:收到的验证码}(6)/***接收afterEvent方法里面的Message*/Handlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:if(msg.arg2==SMSSDK.RESULT_COMPLETE){//发送成功的情况if(msg.arg1==SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){//验证成功通过Intenti=newIntent(context2,ActivityRegisterSmsPage3.class);context2.startActivity(i);}elseif(msg.arg1==SMSSDK.EVENT_GET_VERIFICATION_CODE){//验证码已经从服务器发出Toast.makeText(context,"验证码已发出,请注意查收",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(context,"验证码错误",Toast.LENGTH_SHORT).show();}break;}};};(7)publicvoinRegisterEventHandler(){//最后注销监听,否则可能会造成内存泄露SMSSDK.unregisterEventHandler(eh);}(8)最后别忘了添加权限和一个activity,此activity位置和普通activity位置一样(9)/***MOB官方文档说明*getVerificationCode用于向服务器请求发送验证码的服务,需要传递国家代号和接收验证码的手机号码,支持此服务的国家代码在getSupportedCountries中获取。*请求getVerificationCode的时间间隔不应该小于60秒,否则服务端会返回“操作过于频繁”的错误*submitVerificationCode用于向服务器提交接收到的短信验证码,验证成功后会通过EventHandler返回国家代码和电话号码。*/热心网友 时间:2023-07-02 09:36
可以参考下我们的