Android使用mob实现手机号验证注册

现在很多的app都采用首次进入使用手机号码快速注册成功,然后登入设置各种用户信息。这里使用mob第三方sdk实现手机号码的快速注册,实现起来也很简单,集成文档也有说明,这里把实现的过程和结果都记录下来,方便以后查用!

  1. 注册一个有效的mob账号
  2. 进入mob后台,使用短信验证SDK,然后添加一个应用(可以是空的应用,后面可以继续登记),后台截图如下

    Android使用mob实现手机号验证注册_第1张图片

  3. 下载sdk,短信验证SDK ,解压缩以后的文件夹如下(最新的2.1.1版本)

    Android使用mob实现手机号验证注册_第2张图片

  4. 创建一个短信验证的Demo,把解压缩后的短信验证的文件夹放到和你自己创建的应用同目录下。把ShortMessageSDKGUI和SMSSDK导入到Eclipse中去,前面一个是带GUI验证的sdk,后面是短信验证的sdk。也可以不用mob官方的GUI,实现你自己的GUI,参考无GUI接口说明。导入这两个SDK后,右键自己创建的应用,打开properties,引用前面导入到Eclipse中去的sdk,如下所示

Android使用mob实现手机号验证注册_第3张图片
5. 配置AndroidManifest.xml,添加如下权限

<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.READ_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

添加如下Activity

android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"/>

6.在onCreate()中启动sdk,如下

SMSSDK.initSDK(this, "您的appkey", "您的appsecret");

7.发送短信验证码

短信SDK内置了开源的GUI功能,您可以通过调用下面的代码打开短信验证页面:

//打开注册页面
RegisterPage registerPage = new RegisterPage();
registerPage.setRegisterCallback(new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// 解析注册结果
if (result == SMSSDK.RESULT_COMPLETE) {
@SuppressWarnings("unchecked")
HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
String country = (String) phoneMap.get("country");
String phone = (String) phoneMap.get("phone"); 

// 提交用户信息(此方法可以不调用)
registerUser(country, phone);
}
}
});
registerPage.show(context);

其中EventHandler是短信SDK的操作回调。

8.显示通信录好友列表
同时,短信SDK也内置了通过本设备通信录换取本应用内用户列表的功能,可以通过下面的代码打开“通信录好友”页面:

//打开通信录好友列表页面
ContactsPage contactsPage = new ContactsPage();
contactsPage.show(context);

以上是SDK官方继承文档大致的步骤,按照步骤来就可以很简单的实现注册验证码功能,完整代码如下所示:

package com.example.androidsmsdemo;

import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import cn.smssdk.gui.ContactsPage;
import cn.smssdk.gui.RegisterPage;

public class MainActivity extends Activity {
    private String phoneNumber = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SMSSDK.initSDK(this, "175ba9bb5cc60",
                "cb8709bc9ed832031dc11cfc84f1468a");

    }

    public void register(View view) {
        // 打开注册页面
        RegisterPage registerPage = new RegisterPage();
        registerPage.setRegisterCallback(new EventHandler() {
            public void afterEvent(int event, int result, Object data) {
                // 解析注册结果
                if (result == SMSSDK.RESULT_COMPLETE) {
                    @SuppressWarnings("unchecked")
                    HashMap phoneMap = (HashMap) data;
                    String country = (String) phoneMap.get("country");
                    String phone = (String) phoneMap.get("phone");

                    phoneNumber = phone;

                    Log.e("PhoneNumber", phone);
                    // 提交用户信息(此方法可以不调用)
                    // registerUser(country, phone);

                }
            }
        });
        registerPage.show(this);

        Intent intent = new Intent(this, MyActivity.class);
        //注册成功以后跳转到我的页面MyActivity,并且在MyActivity显示注册的手机号码
        intent.putExtra("phone", phoneNumber);
        startActivity(intent);
    }

    public void friends(View view) {
        // 打开通信录好友列表页面
        ContactsPage contactsPage = new ContactsPage();
        contactsPage.show(this);
    }

}

资源文件很简单,就是两个Button,如下:

<LinearLayout 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:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:background="#00f0ff"
        android:gravity="center"
        android:text="注册页面" />

    <Button
        android:id="@+id/btn_register"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:onClick="register"
        android:text="注册" />

    <Button
        android:id="@+id/btn_friends"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:onClick="friends"
        android:text="打开好友列表" />

LinearLayout>

最后实现的结果截图如下:
主页面
Android使用mob实现手机号验证注册_第4张图片

点击注册,跳转到SDK提供的注册UI界面
Android使用mob实现手机号验证注册_第5张图片

然后点击下一步,会弹出对话框进行确认手机号码正确与否,发送验证码
Android使用mob实现手机号验证注册_第6张图片

1分钟的倒计时,填写验证码
Android使用mob实现手机号验证注册_第7张图片

由于我的手机号码前面已经验证通过了,如果你是在同一台手机设备上进行验证同一个手机号码的话,mob会智能的显示已经验证通过了,不会重复发送验证码给你,这样比较方便!
Android使用mob实现手机号验证注册_第8张图片

不过这个功能是在后台进行设置的,你也可以将它关闭,让它重复进行发送验证码
Android使用mob实现手机号验证注册_第9张图片

ok,以上就是根据mob官网提供的文档实现的手机号码注册app的流程和实现!

你可能感兴趣的:(android应用,android开发之路)