本文为您介绍了Android客户端如何接入短信验证码功能。

前提条件

  • 确保您的终端设备已经开启了移动数据网络。
  • 确保您已开通了号码认证服务,并成功创建了对应的短信验证码方案且短信签名、模板均已与该方案绑定,详情请参见短信认证使用流程
  • 应用须在iOS 9.0版本及以上平台上运行。

搭建开发环境

  1. 下载并解压Android SDK。登录号码认证产品控制台,在标准版选项卡,下载并解压Android SDK(含Demo工程)。短信认证Android SDK
  2. 添加依赖。将已解压的SDK包中后缀为aar的文件复制至⼯程的libs⽬录下。
  3. 添加权限支持。在App AndroidManifest.xml文件中添加必要的权限支持:
    <uses-permission android:name="android.permission.INTERNET" />   <!-- 网络访问 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 检查网络状态 -->

SDK方法说明

  • 获取实例(SmsAuthHelper)
    SmsAuthHelper smsAuthHelper = new SmsAuthHelper(context, sceneCode);
  • 设置Token更新处理器(setTokenUpdater)
    /**
     * 设置Token更新器
     *
     * @param tokenUpdater
     */
    public void setTokenUpdater(TokenUpdater tokenUpdater);
  • 发送短信验证码(sendVerifyCode)
    /**
     * 发送短信验证码
     * @param countryCode国际电话区号,目前仅作为保留字段,当前版本只支持86(即中国大陆的电话号码)
     * @param phoneNumber手机号
     * @param callback
     * @param timeoutMills接口超时时间(单位:ms)
     */
    public void sendVerifyCode(int countryCode,
                                   String phoneNumber,
                                   SmsCallback callback, long timeoutMills) 
  • 销毁实例(destroy)
    /**
     * 销毁实例
     */
    public void destroy();

SDK回调说明

  • TokenUpdater。SDK发送短信验证码时需要用到BizToken、StsToken(包含AccessKey信息)这两个Token。调用方法详情请参见GetSmsAuthTokens
    public interface TokenUpdater{
        /**
         * 更新Token1
         * @return
         */
        Tokens updateToken();
    }
    注意 SDK在检测到本地缓存中无有效Token(Token不存在或者已过期)时,则调用TokenUpdater#updateToken方法,开发者需要实现该接口,并且获取到Token后,封装成Tokens返回给SDK。Tokens中具体字段可参见Demo和GetSmsAuthTokens
  • SmsCallback。调用发送验证码接口时,无论成功或失败都会通过该接口给开发者发送通知,开发者可以根据返回的Ret对象中Code字段做出判断。
    public interface SmsCallback {
        void onResult(Ret ret);
    }

SDK事件返回码

处理错误码时,建议您直接参见SmsReturnCode.h文件中的常量字符进行比对处理,不建议直接使用数值。
返回码 描述 原因/解决方法
600000 成功。 无。
600001 网络不可用。 无可用的网络,建议您切换网络。
600002 手机号非法。 手机号格式错误或无效的手机号。
600003 Token获取失败。 StsTokenBizToken获取失败、为空,建议您检查相应字段。
600004 接口状态异常。 检查接口状态是否正确,比如是否调用了destroy之后,又调用了业务接口。
600010 请求超时。 需要根据日志和环境信息具体排查,可联系阿里云客服。
600011 鉴权失败。 StsToken鉴权失败或者其信息与BizToken不对应(账号关系),可检查账号信息、方案信息、包名、签名等。
600012 BizToken错误。 BizToken错误,建议重新申请。
600013 StsToken错误。 StsToken错误,建议重新申请StsToken。
600014 StsToken过期。 StsToken过期,建议重新申请StsToken。
600015 BizToken过期。 BizToken已过期,建议重新申请。
600016 验证码发送频次超出限制。 同一个号码每分钟、每小时或每日发送频次超过限制。具体限制次数,请登录号码认证产品控制台,单击通用设置查看详情。
600050 未知异常 联系阿里云客服进行排查。