集成短信验证码--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路径
集成短信验证码--Mob.com_第1张图片

第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" />

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

集成短信验证码--Mob.com_第2张图片
输入验证码就可以进行验证了.

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

错误码参考

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

错误码 描述 说明
400 无效请求 客户端请求不能被识别。
405 AppKey为空 请求的AppKey为空。
406 AppKey错误 请求的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 没有打开服务端验证开关 没有打开服务端验证开关
475 appKey的应用信息不存在 appKey的应用信息不存在
476 当前appkey发送短信的数量超过限额 如果当前appkey对应的包名没有通过审核,每天次appkey+包名最多可以发送20条短信
477 当前手机号发送短信的数量超过限额 当前手机号码在SMSSDK平台内每天最多可发送短信10条,包括客户端发送和WebApi发送
478 当前手机号在当前应用内发送超过限额 当前手机号码在当前应用下 12小时内最多可发送文本验证码5条
500 服务器内部错误 服务端程序报错。

本地错误码:

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

你可能感兴趣的:(sdk,验证码,MOB)