极光推送(短信验证)

极光推送短信服务有两个功能:正常(普通)的短信验证+语音验证

这里我只测试普通短信验证的流程,我的手机有时候可以Toast通知,有时候不行,所以我们直接用AS的日志输出进行调试

(1)首先在极光推送官网注册账号--创建应用--获取AppKey--(最主要的是你有官网的短信服务(我是免费申请的,官网很给力,给我送了20条用于免费测试使用))

(2)然后解压SDK将libs下的xxxx.jar包复制到你项目的libs下,并进行依赖

compile files('libs/jsms_android-1.1.0.jar')

(3)在AndroidManifest文件中

添加权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
注册页面:

<!-- 普通短信验证页面 -->
<activity
    android:name=".CommonSMSActivity"
    android:label="@string/app_name">
</activity>

<!-- 语音短信验证页面 -->
<activity
    android:name=".VoiceSMSActivity"
    android:label="@string/app_name">
</activity>
设置AppKey:

<!-- 设置您的应用AppKey -->
<meta-data android:name="JPUSH_APPKEY" android:value="您的AppKey"/>
(4)新创建一个BaseApplication,初始化短信服务的配置

public class BaseApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        SMSSDK.getInstance().initSdk(this);
        SMSSDK.getInstance().setIntervalTime(30*1000);
    }
}
(5)主代码:

package com.gm.smsdemo;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;

import cn.jpush.sms.SMSSDK;
import cn.jpush.sms.listener.SmscheckListener;
import cn.jpush.sms.listener.SmscodeListener;

/**
 * 正常(普通)短信验证
 * 需要注意的是要在规定的时间内获取到短信验证码并且完成验证才算成功!
 * */

public class CommonSMSActivity extends Activity {

    private EditText editText;
    private Button btn;

    private EditText codeText;
    private Button signBtn;

    private TimerTask timerTask;
    private Timer timer;
    private int timess;
    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        progressDialog = new ProgressDialog(this);
        editText = (EditText) findViewById(R.id.edt_code);
        codeText = (EditText) findViewById(R.id.edt_write_code);
        btn = (Button) findViewById(R.id.btn);
        signBtn = (Button) findViewById(R.id.btn_sign);

        // 获取验证码
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String phoneNum = editText.getText().toString();
                if(TextUtils.isEmpty(phoneNum)){
                    Toast.makeText(CommonSMSActivity.this, "请输入手机号码", Toast.LENGTH_SHORT).show();
                    Log.e("执行", "请输入手机号码!");
                    return;
                }
                btn.setClickable(false);
                // 开始倒计时
                startTimer();
                SMSSDK.getInstance().getSmsCodeAsyn(phoneNum, 1+"", new SmscodeListener() {
                    @Override
                    public void getCodeSuccess(final String uuid) {
                        Toast.makeText(CommonSMSActivity.this,uuid,Toast.LENGTH_SHORT).show();
                        Log.e("执行", "获取验证码成功!");
                    }

                    @Override
                    public void getCodeFail(int errCode, final String errmsg) {
                        //失败后停止计时
                        stopTimer();
                        Toast.makeText(CommonSMSActivity.this,errmsg,Toast.LENGTH_SHORT).show();
                        Log.e("执行", "获取验证码失败,请重新获取!");
                    }
                });

            }
        });
        //开始验证
        signBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String code = codeText.getText().toString();
                String phoneNum = editText.getText().toString();

                if(TextUtils.isEmpty(code)){
                    Toast.makeText(CommonSMSActivity.this,"请输入验证码",Toast.LENGTH_SHORT).show();
                    Log.e("执行", "验证前请确保您已经输入验证码了!");
                    return;
                }
                if(TextUtils.isEmpty(phoneNum)){
                    Toast.makeText(CommonSMSActivity.this,"请输入手机号码",Toast.LENGTH_SHORT).show();
                    Log.e("执行", "验证前请确保您有输入手机号");
                    return;
                }
                progressDialog.setTitle("正在验证...");
                progressDialog.show();
                SMSSDK.getInstance().checkSmsCodeAsyn(phoneNum, code, new SmscheckListener() {
                    @Override
                    public void checkCodeSuccess(final String code) {
                        if(progressDialog!=null&&progressDialog.isShowing()){
                            progressDialog.dismiss();
                        }
                        Toast.makeText(CommonSMSActivity.this,code,Toast.LENGTH_SHORT).show();
                        Log.e("执行", "验证成功!");
                    }

                    @Override
                    public void checkCodeFail(int errCode, final String errmsg) {
                        if(progressDialog!=null&&progressDialog.isShowing()){
                            progressDialog.dismiss();
                        }
                        Toast.makeText(CommonSMSActivity.this,errmsg,Toast.LENGTH_SHORT).show();
                        Log.e("执行", "验证失败!");
                    }
                });
            }
        });
    }

    private void startTimer(){
        timess = (int) (SMSSDK.getInstance().getIntervalTime()/1000);
        btn.setText(timess+"s");
        if(timerTask==null){
            timerTask = new TimerTask() {
                @Override
                public void run() {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            timess--;
                            if(timess<=0){
                                stopTimer();
                                return;
                            }
                            btn.setText(timess+"s");
                        }
                    });
                }
            };
        }
        if(timer==null){
            timer = new Timer();
        }
        timer.schedule(timerTask, 1000, 1000);
    }
    private void stopTimer(){
        if(timer!=null){
            timer.cancel();
            timer=null;
        }
        if(timerTask!=null){
            timerTask.cancel();
            timerTask=null;
        }
        btn.setText("重新获取");
        btn.setClickable(true);
    }
}

(6)运行你的程序进行测试吧!官网文档也都有,很简单的!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值