集成短信验证码--Mob.com

集成短信验证码–Mob.com

ONE Goal,ONE Passion !


现在大多数app 在注册时会使用手机号直接注册,这样到挺方便的.不过对开发者来说就要去集成一些短信验证的sdk了.用的比较多的当属mob.com网址的api.

第1步: 登录网站注册开发者

http://dashboard.mob.com/#/main/index 注册用户,注册了用户后才能创建应用.


第2步: 创建应用得到App key, App Secret

如图:
这里写图片描述
点击添加后会生成app key,以及app secret.
注意: 应用名一定要和工程应用名一致.


第3步: 在自己工程中做集成

新建一个项目,项目名要和申请key时的名一致.开始集成:
我们的项目一般不要求有gui;只需将SMSSDK下的libs底下的文件移到你要使用的项目的相应位置即可。下载官方sdk.
如图:
这里写图片描述
如果在编译时提示ndkassembleerror之类的错误,请尝试在local.property里添加你的ndk路径
这里写图片描述

第4步:java代码实例化

a.在使用的时候去实例化,并且注册事件.

public class MainActivity extends Activity implements View.OnClickListener {
    private Button sensmsButton, verificationButton, countryButton;
    private TextView countryTextView, textView2;
    private EditText phonEditText, verEditText;
    // 填写从短信SDK应用后台注册得到的APPKEY
    private static String APPKEY = "dfa83789889c";
    // 填写从短信SDK应用后台注册得到的APPSECRET
    private static String APPSECRET = "cccb7ff4168648e6bb9455d00bb8d54e";
    public String phString; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sensmsButton = (Button) findViewById(R.id.button1);
        verificationButton = (Button) findViewById(R.id.button2);
        countryButton = (Button) findViewById(R.id.button3);
        countryTextView = (TextView) findViewById(R.id.textView1);
        textView2 = (TextView) findViewById(R.id.textView2);
        phonEditText = (EditText) findViewById(R.id.editText1);
        verEditText = (EditText) findViewById(R.id.editText2);
        sensmsButton.setOnClickListener(this);
        verificationButton.setOnClickListener(this);
        countryButton.setOnClickListener(this);


        SMSSDK.initSDK(this, APPKEY, APPSECRET);
        EventHandler eh = new EventHandler() {

            @Override
            public void afterEvent(int event, int result, Object data) {

                Message msg = new Message();
                msg.arg1 = event;
                msg.arg2 = result;
                msg.obj = data;

                System.out.println("result-----" + result);
                System.out.println("data-----" + data);

                handler.sendMessage(msg);
            }

        };
        SMSSDK.registerEventHandler(eh);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.button1:// 获取验证码
                if (!TextUtils.isEmpty(phonEditText.getText().toString())) {
                    SMSSDK.getVerificationCode("86", phonEditText.getText()
                            .toString());
                    phString = phonEditText.getText().toString();
                } else {
                    Toast.makeText(this, "电话不能为空", Toast.LENGTH_SHORT).show();
                }

                break;
            case R.id.button2:// 校验验证码
                if (!TextUtils.isEmpty(verEditText.getText().toString())) {
                    SMSSDK.submitVerificationCode("86", phString, verEditText
                            .getText().toString());
                } else {
                    Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.button3:// 国家列表
                SMSSDK.getSupportedCountries();
                // SMSSDK.getCountry(arg0);
                SMSSDK.getGroupedCountryList();
                // SMSSDK.getCountryByMCC(arg0);
                break;
            default:
                break;
        }
    }

    Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            int event = msg.arg1;
            int result = msg.arg2;
            Object data = msg.obj;
            Log.e("event", "event=" + event);
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 短信注册成功后,返回MainActivity,然后提示新好友
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {// 提交验证码成功
                    Toast.makeText(getApplicationContext(), "提交验证码成功",
                            Toast.LENGTH_SHORT).show();
                    textView2.setText("提交验证码成功");
                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    Toast.makeText(getApplicationContext(), "验证码已经发送",
                            Toast.LENGTH_SHORT).show();
                    textView2.setText("验证码已经发送");
                } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {// 返回支持发送验证码的国家列表
                    Toast.makeText(getApplicationContext(), "获取国家列表成功",
                            Toast.LENGTH_SHORT).show();
                    countryTextView.setText(data.toString());

                }
            } else {
                ((Throwable) data).printStackTrace();
                int resId = getStringRes(MainActivity.this,
                        "smssdk_network_error");
                Toast.makeText(MainActivity.this, "验证码错误", Toast.LENGTH_SHORT)
                        .show();
                if (resId > 0) {
                    Toast.makeText(MainActivity.this, resId, Toast.LENGTH_SHORT)
                            .show();
                }
            }

        }

    };

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        SMSSDK.unregisterAllEventHandler();
    }

}

b. 官方demo提供的xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:hint="手机号"
        android:inputType="number">

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/editText1"
        android:layout_toRightOf="@+id/editText1"
        android:text="获取验证码" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/button1"
        android:ems="10"
        android:hint="验证码"
        android:inputType="number" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText2"
        android:layout_below="@+id/editText2"
        android:text="验证" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_centerVertical="true"
        android:text="获取支持的国家列表" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button3"
        android:layout_below="@+id/button3" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button2"
        android:layout_below="@+id/button2"
        android:layout_marginTop="25dp"
        android:text="TextView" />

</RelativeLayout>

第5步: 添加权限

<uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

这样就完成了集成如图点击输入手机号即可收到验证码:

这里写图片描述
输入验证码就可以进行验证了.

完整demo地址:
http://download.csdn.net/my

错误码参考

SMSSDK for Android API回调中,当result=SMSSDK.RESULT_ERROR,则data的类型为Throwable;如果这个Throwable的message就存放有json数据,你可以从中读取status的错误码信息。一部分是服务器返回的。还有一部分是SDK本地生成的。
服务器错误码:

错误码描述说明
400无效请求客户端请求不能被识别。
405AppKey为空请求的AppKey为空。
406AppKey错误请求的AppKey不存在。
407缺少数据请求提交的数据缺少必要的数据。
408无效的参数无效的请求参数。
418内部接口调用失败内部接口调用失败。
450权限不足无权执行该操作。
454数据格式错误请求传递的数据格式错误,服务器无法转换为JSON格式的数据。
455签名无效签名检验。
456手机号码为空提交的手机号码或者区号为空。
457手机号码格式错误提交的手机号格式不正确(包括手机的区号)。
458手机号码在黑名单中手机号码在发送黑名单中。
459无appKey的控制数据获取appKey控制发送短信的数据失败。
460无权限发送短信没有打开客户端发送短信的开关。
461不支持该地区发送短信没有开通给当前地区发送短信的功能。
462每分钟发送次数超限每分钟发送短信的数量超过限制。
463手机号码每天发送次数超限手机号码在当前APP内每天发送短信的次数超出限制。
464每台手机每天发送次数超限每台手机每天发送短信的次数超限。
465号码在App中每天发送短信的次数超限手机号码在APP中每天发送短信的数量超限。
466校验的验证码为空提交的校验验证码为空。
467校验验证码请求频繁5分钟内校验错误超过3次,验证码失效。
468需要校验的验证码错误用户提交校验的验证码错误。
469未开启web发送短信没有打开通过网页端发送短信的开关。
470账户余额不足账户的短信余额不足。
471请求IP错误通过服务端发送或验证短信的IP错误
472客户端请求发送短信验证过于频繁客户端请求发送短信验证过于频繁
473服务端根据duid获取平台错误服务端根据duid获取平台错误
474没有打开服务端验证开关没有打开服务端验证开关
475appKey的应用信息不存在appKey的应用信息不存在
476当前appkey发送短信的数量超过限额如果当前appkey对应的包名没有通过审核,每天次appkey+包名最多可以发送20条短信
477当前手机号发送短信的数量超过限额当前手机号码在SMSSDK平台内每天最多可发送短信10条,包括客户端发送和WebApi发送
478当前手机号在当前应用内发送超过限额 当前手机号码在当前应用下12小时内最多可发送文本验证码5条
500服务器内部错误服务端程序报错。

本地错误码:

错误码描述说明
600API使用受限制API使用受限制
601短信发送受限短信发送受限
602无法发送此地区短信 无法发送此地区短信
603请填写正确的手机号码请填写正确的手机号码
604当前服务暂不支持此国家当前服务暂不支持此国家,请选择其它国家
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值