资讯专栏INFORMATION COLUMN

聚合数据短信验证码接口实现 Android开发短信验证码

Codeing_ls / 2979人阅读

在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据

聚合数据介绍
聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务。免费提供从天气查询、空气质量、地图坐标到金融基金、电商比价、违章查询等各个领域的安全、稳定和高效的数据。开发者可以免费试用聚合数据API进行移动APP的快速开发,免除数据收集、维护等环节,大大降低开发周期及成本。因此我们可以采用聚合数据给我提供好的一套东西来进行短信验证码的功能的添加。

首先我们要做准备工作,使用聚合数据主要分为以下步骤:

第一步,注册聚合数据
进入聚合数据官网(https://www.juhe.cn/)注册一个账号,完成注册后进入,"个人中心"——>“我的数据”点击申请数据如下图所示:

第二步,申请Appkey
申请后你会得到一个Appkey,此Appkey非常重要。

第三步,下载SDK
下载地址:https://www.juhe.cn/juhesdk

第四步,创建工程,配置环境
1.创建一个工程把我们下载的SDK里libs下的“armeabi文件”和"smscaptcha_v_1_4.jar"复制到我们工程的libs目录下

2.在AndroidManifest中添加开发密钥、所需权限等信息

(1)在application中添加开发密钥

    

(2)添加所需权限

      
      
      
      
    
    
   

(3)在应用程序创建时初始化 SDK引用的Context全局变量

在这一步我们有两种方法

第一种在Activity中配置

public class MainActivity extends Activity {      
    @Override      
    protected void onCreate(Bundle savedInstanceState) {      
        super.onCreate(savedInstanceState);       
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext      
        //注意该方法要再setContentView方法之前实现      
    /**   
    * 初始化方法  
    * @param context  
    * @needFriends 是否需要好友功能  
    */     
        CommonFun.initialize(getApplicationContext(),true);      
        setContentView(R.layout.activity_main);      
    }      
}    

下面这个注意是聚合数据文档给我们的建议,它建议我们把这个初始化工作放在Application中,因为程序运行首先会运行Application中的方法

注意:在SDK各功能组件使用之前都需要调用CommonFun.initialize(getApplicationContext(),true);,因此我们建议该方法放在Application的初始化方法中

所以我们就按它建议的方法,而不采用第一种方法这样我们需要创建一个Applicaiton类MyApplication如下

package com.example.android.sms;    
    
import com.thinkland.sdk.util.CommonFun;    
    
import android.app.Application;    
    
public class MyApplication extends Application {    
    
    @Override    
    public void onCreate() {    
        super.onCreate();    
        CommonFun.initialize(getApplicationContext(), false);     
    }    
}    

声明好Application后不要忘了在清单文件中配置

好了环境已经配置好了,我们来验证一下看看我们是否能收到短信

MainActivity的代码如下

package com.example.android.sms;    
    
import com.thinkland.sdk.sms.SMSCaptcha;    
import com.thinkland.sdk.util.BaseData;    
import com.thinkland.sdk.util.CommonFun;    
    
import android.os.Bundle;    
import android.app.Activity;    
import android.util.Log;    
import android.view.Menu;    
import android.widget.Toast;    
    
public class MainActivity extends Activity {    
    
    protected static final String TAG ="MainActivity";    
    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        
        setContentView(R.layout.activity_main);    
        //初始化 SMSCaptcha对象在这个对象中有给我们发送短信验证码的方法    
        SMSCaptcha smsCaptcha=SMSCaptcha.getInstance();    
        //调用发送短信验证码的方法,在其中有一个回调    
            
        /**  
          phone 手机号码  
          callBack  返回结果回调方法.  
         */    
        smsCaptcha.sendCaptcha("此处输入你的手机号",new BaseData.ResultCallBack() {    
                
            @Override    
            public void onResult(int code, String reason, String result) {    
                    
                   /*  
                    code:返回码:  
                    服务器: 0 成功; 1 错误;  
                    本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常  
                    reason:返回信息 成功或错误原因.  
                    result:返回结果,JSON格式.错误或者无返回值时为空.*/    
                    
                if(code==0){    
                    Log.i(TAG,"code="+code);    
                    Log.i(TAG,"reason="+reason);    
                    Log.i(TAG,"result="+result);    
                }    
            }    
        });    
    }    
}   

返回结果如下:

第五步:完整的功能的实现,以及界面UI的实现
首先我们来看下界面第一个界面

我们在这个界面输入手机号,及短信的目的地,点击下一步后会弹出一个Dialog

点击确定后会调用会调用聚合数据给我们提供的sendCaptcha方法

    /*点击确定后调用sendCaptcha方法向服务器提交手机号码  
                  code(返回码):   
                  服务器:0 成功,1 错误;   
                  本  地:-2 本地网络异常,-3 服务器网络异常,-4 解析错误,-5 初始化异常。   
                  reason(返回信息):成功或错误的原因。   
                  result(返回结果):JSON格式,错误或者无返回值时为空。   
                */     
smsCaptcha.sendCaptcha(phone,new ResultCallBack() {    
                        
@Override    
public void onResult(int code, String reason, String result) {    
closeDialog();    
if(code==0){    
afterCapterRequested();    
}                           
  }    
    
);    

当返回的code==0时说明短信验证码发送成功,我们需要进行界面的跳转,代码如下

//当code=0成功时,跳转到输入验证码的Activity    
    private void afterCapterRequested() {    
        String phone=etPhoneNumber.getText().toString().trim().replaceAll("ss*",     
                "");    
        String code=tvCountryNumber.getText().toString().trim();    
        String fomatedPhone=code+" "+splitPhoneNum(phone);    
            
        Toast.makeText(this,"成功",Toast.LENGTH_SHORT).show();    
        Intent intent=new Intent();    
        intent.setClass(RegistActivity.this,CaptchaActivity.class);    
        //把手机号码和格式化的手机号码传过去    
        intent.putExtra("formatedPhone",fomatedPhone);    
        intent.putExtra("phone",phone);    
        startActivity(intent);    
    }    
        
    //格式化手机号码的方法,格式化后的形式:+86 131 4118 2951    
    private String splitPhoneNum(String phone) {    
            
        StringBuilder builder=new StringBuilder(phone);    
        builder.reverse();    
        for(int i=4,len=builder.length();i

跳转的界面的布局如下

在这个界面我们需要输入短信验证码,输入短信验证码后点击下一步时会调用聚合数据的commitCaptcha这个方法,比对数据的方法,

smsCaptcha.commitCaptcha(phoneNumbber,verfiyCode,new ResultCallBack() {    
        /*   
                    code:返回码:   
                    服务器: 0 成功; 1 错误;   
                    本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常   
                    reason:返回信息 成功或错误原因.   
                    result:返回结果,JSON格式.错误或者无返回值时为空.*/     
        @Override    
        public void onResult(int code,String reason,String result) {    
        if(code==0){    
        Log.i(TAG,code+"");    
        Log.i(TAG,reason);    
        Log.i(TAG,result);    
        Toast.makeText(CaptchaActivity.this,"您输入的验证码正确",Toast.LENGTH_SHORT).show();    
        CaptchaActivity.this.finish();    
        }else{    
        Toast.makeText(CaptchaActivity.this,"您输入的验证码不正确",Toast.LENGTH_SHORT).show();    
                }    
            }    
        });    

我们可以看到这个方法所需的参数是①手机号码②手机验证码,我们调用此方法后聚合数据的服务器会进行判断,此验证码是否是刚才发送给这个手机号的验证码,验证后给我返回结果,我们根据返回的结果就可以进行相应的操作。
在上面的界面中我们发现有一个倒计时的功能,我在这里说一下思路,当然这个倒计时方法有很多。在这个Demo中倒计时是放在一个tvCountDown的一个textView中,首先

//R.string.receiveMessgeCountDown的内容为:接收短信大约需要%s    
//这句话就是用time把 html里的%号替换掉    
String unReceive=getResources().getString(R.string. receiveMessgeCountDown,time );    
//把用html格式化的字符串设置给倒计时的文本框    
tvCountDown.setText(Html.fromHtml(unReceive));    

这样我们可以把html格式化的文本填充到tvCountDown中。接下来就是倒计时的方法了

private final int RETRY_INTERVAL =60;    
private int time=RETRY_INTERVAL;    
     //倒计时方法    
     private void countDown() {    
            new Thread( new Runnable() {    
                    
                 @Override    
                 public void run() {    
                 while( time-->0){    
               //减一后的time把接收短信大约需要%s中的%号替换掉    
                String countDownTime=CaptchaActivity.this .getResources().getString(R.string. receiveMessgeCountDown,time );    
              //在主线程上更新tvCountDown    
              upDateTvCountDown(countDownTime);    
              try {    
                 Thread. sleep(1000);    
                  } catch (InterruptedException e) {    
                      e.printStackTrace();    
                     }    
                 }       
                String countDownTime=CaptchaActivity.this .getResources().getString(R.string. unreceiveMessage, time);    
               upDateTvCountDown(countDownTime);    
               time = RETRY_INTERVAL;    
           }    
     }).start();    
}    
//在主线程上更新tvCountDown    
private void upDateTvCountDown(final String countDownTime) {    
           runOnUiThread( new Runnable() {    
                 @Override    
                 public void run() {    
                  tvCountDown.setText(Html. fromHtml(countDownTime));    
                  tvCountDown.setEnabled( false);    
                }    
           });    
     }    

总结:其实使用聚合数据的短信验证码功能,主要就两个方法,一个是获取验证码的方法sendCaptcha,一个是提交验证码进行验证的方法commitCaptcha。我们在此基础上,可以根据需求对界面进行更改。以上就是对短信验证码的主要逻辑进行的介绍。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13240.html

相关文章

  • Android开发短信验证示例

    在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务。免费提供从天气查询、空气质量、地图坐标到金融基金、电商比价、违章查询等各个领域的安全、稳定和高效的数据。开发者可以免费试用聚合数据API进行移动APP的快速开发,免除数据收集、维护等环节,大大降低开发周期及成本。因此我们可以采用聚合数据给我提供...

    jeyhan 评论0 收藏0
  • 聚合数据Android SDK 短信api接口验证演示示例

    摘要:到聚合是聚合数据平台为移动开发者提供的免费数据接口使用前请先到聚合平台注册申请相关数据下载聚合数据将开发包里的拷贝到根目录下,将拷贝到目录下如图根据接口说明文档找到以下方法程序中调用方法首先在中添加权限在标签内部加入你申请的申 1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2....

    banana_pi 评论0 收藏0
  • java实现手机短信验证全过程

    摘要:下面以某个短信接口为例讲解。例如,上面的短信模板的信息应为欧阳科技登录验证码,如非本人操作,请忽略此短信。,为占位符,是你的短信验证码。验证码通知短信提交请求创建验证码验证码上面这些是主要的类,还有其他的类在文章末尾给出源代码。 手机短信验证现在在各种系统可以说都是用的非常普遍的,这个可能是方便和安全性的考虑,所以才广泛的使用,这篇文章就以一个短信接口的实例,来讲解一下怎么使用短信接口...

    whjin 评论0 收藏0
  • 如何不花钱实现简单的短信验证功能

    摘要:相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉云通讯还有的。 相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉、云通讯还有MobTech的SMSSDK。对比之下,最终选择了完全免费的SMSSDK打算小试...

    tangr206 评论0 收藏0
  • 本机号认证黑科技:极光(JG)开发者服务推出“极光认证”新产品

    摘要:近日,中国领先的大数据服务商极光推出全新产品极光认证。极光认证的诸多优势以及试用企业的好评反馈,充分证明了极光认证这一全新认证方式的市场前景。在注册登陆及二次验证等场景,极光认证或将成为新一代主流认证方式。 近日,中国领先的大数据服务商极光(JG)推出全新产品——极光认证JVerification。极光认证是极光针对APP用户注册登陆,二次安全验证等身份验证场景打造的一款本机号码认证S...

    HtmlCssJs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<