Mob短信验证的具体使用

原文著作权地址:http://www.jb51.net/article/84946.htm

一.前言

现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错。那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题。
PS:太喜欢mob的logo了。

二.实现过程

本篇只涉及Android,如果是IOS系统,还望自己斟酌,希望本篇文章也能给您提供帮助,同时IDE是Android Studio。

1.key申请

申请地址:http://www.mob.com,在产品中心选择短信验证码SDK,然后完成相应的注册和申请工作;
进入自己的后台中心,就可以看见自己的App Key和App Secret:

整体趋势栏给我们展示了一些短信服务使用情况。未上线登记时,我们可以免费使用20条/天,如果需求量比较大,我们可以在自己的工程里集成了mob短信,然后上线登记,应该可以获得更多的免费短信条数,暂未尝试。

2.下载SDK

在SDK下载栏目选择SMS for Android,然后选择相应IDE对应的SDK即可(本篇IDE是as)

下载后大概是这样:

3.集成过程

申请到了key和secret后就是集成到自己的工程中了。mob主要提供两种接口方式:1)使用官方自带的UI;2)使用无GUI接口。

3.1.配置SDK

这已经是使用第三方接口的老规矩了。官网文档我就不贴了,着实看着不舒服,在这里只贴自己的。

首先是在工程的libs下添加jar包和.aar文件。

然后在build.gradle中添加依赖项

在AndroidManifest中添加相应权限和注册相应的activity

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<!-- mob短信 需要的权限 -->

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

<!--在application中注册activity -->

 <!-- Mob短信(如果使用无GUI的,这个activity应该可以不需要了,自己没试过,就先在这注册着吧) -->

 <activity

  android:name="com.mob.tools.MobUIShell"

  android:configChanges="keyboardHidden|orientation|screenSize"

  android:theme="@android:style/Theme.Translucent.NoTitleBar"

  android:windowSoftInputMode="stateHidden|adjustResize" >

 </activity>

3.2.调用接口发送短信

前面提到了,mob短息提供有GUI和无GUI的两种方式,无论哪种方式,都需要对SMSSDK先初始化,再调用接口。

初始化:SMSSDK.initSDK(LoginActivity.this, "App Key", "App Secret");

1)有GUI,即使用mob提供的界面

方法如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

registerText.setOnClickListener(new View.OnClickListener() {

 @Override

 public void onClick(View v) {

 //首先初始化SMSSDK

 SMSSDK.initSDK(LoginActivity.this, "App Key", "App Secret");

 RegisterPage registerPage = new RegisterPage();

 //回调函数

 registerPage.setRegisterCallback(new EventHandler()

 {

  public void afterEvent(int event, int result, Object data)

  {

  // 解析结果

  if (result == SMSSDK.RESULT_COMPLETE)

  {

  //提交验证码成功

  if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)

  {

  }

  //提交验证码成功,此时已经验证成功了

  else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)

  {

  }

  }

  }

 });

 registerPage.show(LoginActivity.this);

 }

});

2)无GUI

这种情况一般是使用自己的activity界面,然后集成短信功能,比如一个简单的注册。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

//我只提供一些关键代码,其他部分就不提供了,太多,看起来太杂

public class ActivityMessageRegister extends Activity

{

 private static final int CODE_ING = 1;   //已发送,倒计时

 private static final int CODE_REPEAT = 2//重新发送

 private static final int SMSDDK_HANDLER = 3//短信回调

 private int TIME = 60;//倒计时60s

 @Override

 protected void onCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);

 setContentView(R.layout.activity_message_register);

 initView();//界面初始化

 initSDK();//短信初始化

 }

 //初始化界面

 void initView()

 {

 userPhoneText = (EditText)findViewById(R.id.user_phone_input);

 userPasswordText = (EditText)findViewById(R.id.user_password_input);

 userNameText = (EditText)findViewById(R.id.user_name_input);

 registerButton = (Button)findViewById(R.id.register_button);

 registerButton.setOnClickListener(new OnClickListener());

 loginView = (TextView)findViewById(R.id.login_view);

 getCodeButton = (Button)findViewById(R.id.get_code_button);

 getCodeButton.setOnClickListener(new OnClickListener());

 codeText = (EditText)findViewById(R.id.code_view);

 //

 ...

 //

 }

 //初始化SMSSDK

 private void initSDK()

 {

 SMSSDK.initSDK(this, "App Key", "App Secret");

 eventHandler = 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;

  msg.what = SMSDDK_HANDLER;

  handler.sendMessage(msg);

  }

 };

 // 注册回调监听接口

 SMSSDK.registerEventHandler(eventHandler);

 }

 //监听函数

 private class OnClickListener implements View.OnClickListener

 {

 @Override

 public void onClick(View v) {

  userPhone = userPhoneText.getText().toString();

  switch (v.getId()) {

  case R.id.get_code_button://获取验证码

   new AlertDialog.Builder(ActivityMessageRegister.this)

    .setTitle("发送短信")

    .setMessage("我们将把验证码发送到以下号码:\n"+"+86:"+userPhone)

    .setPositiveButton("确定", new DialogInterface.OnClickListener()

    {

    @Override

    public void onClick(DialogInterface dialog, int which)

    {

     SMSSDK.getVerificationCode("86", userPhone);

     getCodeButton.setClickable(false);

     new Thread(new Runnable()

     {

     @Override

     public void run()

     {

      for (int i = 60; i > 0; i--)

      {

      handler.sendEmptyMessage(CODE_ING);

      if (i <= 0)

      {

       break;

      }

      try

      {

       Thread.sleep(1000);

      } catch (InterruptedException e)

      {

       e.printStackTrace();

      }

      }

      handler.sendEmptyMessage(CODE_REPEAT);

     }

     }).start();

    }

    })

    .create()

    .show();

   break;

  case R.id.register_button://注册

   SMSSDK.submitVerificationCode("86", userPhone, codeText.getText().toString());//对验证码进行验证->回调函数

   break;

  default:

   break;

  }

 }

 }

 Handler handler = new Handler()

 {

 public void handleMessage(Message msg)

 {

  switch (msg.what)

  {

  case CODE_ING://已发送,倒计时

   getCodeButton.setText("重新发送("+--TIME+"s)");

   break;

  case CODE_REPEAT://重新发送

   getCodeButton.setText("获取验证码");

   getCodeButton.setClickable(true);

   break;

  case SMSDDK_HANDLER:

   int event = msg.arg1;

   int result = msg.arg2;

   Object data = msg.obj;

   //回调完成

   if (result == SMSSDK.RESULT_COMPLETE)

   {

   //验证码验证成功

   if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)

   {

    Toast.makeText(ActivityMessageRegister.this, "验证成功", Toast.LENGTH_LONG).show();

    if (check())//其他合法性的检测

    {

    UserModel user = new UserModel();

    user.setUserId(MyUUID.getUUID());  //id

    user.setUserPhone(userPhone);

    user.setUserPassword(MD5.md5(userPassword)); //md5加密

    user.setUserGender(gender);   //性别

    user.setUserName(userName);

    user.setUserBirthday("19920401");   //暂时为空

    //user.setUserIdCard(userIdCard);

    //user.setUserImage("");    //暂时为空

    //注册->服务器

    UserController.userRegister(user, handler);

    }

   }

   //已发送验证码

   else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)

   {

    Toast.makeText(getApplicationContext(), "验证码已经发送",

     Toast.LENGTH_SHORT).show();

   } else

   {

    ((Throwable) data).printStackTrace();

   }

   }

   if(result==SMSSDK.RESULT_ERROR)

   {

   try {

    Throwable throwable = (Throwable) data;

    throwable.printStackTrace();

    JSONObject object = new JSONObject(throwable.getMessage());

    String des = object.optString("detail");//错误描述

    int status = object.optInt("status");//错误代码

    if (status > 0 && !TextUtils.isEmpty(des)) {

    Toast.makeText(getApplicationContext(), des, Toast.LENGTH_SHORT).show();

    return;

    }

   } catch (Exception e) {

    //do something

   }

   }

   break;

  case R.id.register_status:

   String result_code = msg.getData().getString("result").toString();

   if("1".equals(result_code))

   {

   Toast.makeText(ActivityMessageRegister.this, "注册成功", Toast.LENGTH_LONG).show();

   Intent intent = new Intent(ActivityMessageRegister.this,LoginActivity.class);

   intent.putExtra("userPhone", userPhone);

   ActivityMessageRegister.this.setResult(RESULE_CODE, intent);

   //startActivity(intent);

   finish();

   }else

   {

   Toast.makeText(ActivityMessageRegister.this, "注册失败", Toast.LENGTH_LONG).show();

   }

   break;

  case R.id.check_phone_exist://手机号是否已存在

   String result_code_2 = msg.getData().getString("result").toString();

   if("1".equals(result_code_2))

   {

   errPhoneText.setText("手机号码已经注册,请换用其他号码");

   resultMap.put("phone", false);

   }

   else

   {

   errPhoneText.setText("");

   resultMap.put("phone", true);

   }

   break;

  }

 }

 };

}

时间: 2024-11-05 12:29:10

Mob短信验证的具体使用的相关文章

Mob短信验证的配置的解释

原文地址:http://www.jb51.net/article/84946.htm 关于mob短信验证的解释: mob官方是这样写的: repositories{ flatDir{ dirs 'libs' //就是你放aar的目录地址 } } dependencies { ....//你的其他依赖 compile name:'SMSSDK-<version>',ext:'aar' compile name:'SMSSDKGUI-<version>',ext:'aar' } 自己实

MOB 短信验证

工具/原料 Android Studio mob SDK中的jar 和.so文件 方法/步骤 1 把3个jar 放入libs   并添加依赖 在项目的build.gradle里面   在你的项目的main 目录下新建jniLibs 文件夹 注意:!!!! 一定是main 目录下 不是 java 文件夹   写代码!一步一步复制吧  SMSSDK.initSDK(this, " ", " ");   EventHandler eh = new EventHandler

Android实战简易教程-第三十九枪(第三方短信验证平台Mob和验证码自动填入功能结合实例)

用户注册或者找回密码时一般会用到短信验证功能,这里我们使用第三方的短信平台进行验证实例. 我们用到第三方短信验证平台是Mob,地址为:http://mob.com/ 一.注册用户.获取SDK 大家可以自行注册,得到APPKEY和APPSECRET,然后下载SDK,包的导入方式如截图: 二.主要代码 SMSSendForRegisterActivity.java:(获取验证码页) package com.qiandaobao.activity; import java.util.regex.Mat

Mob.com 短信验证的简单使用

1.环境配置 http://wiki.sharesdk.cn/android-短信sdk集成文档/ a.sdk下载 http://www.mob.com/#/downloadDetail/SMS/android   SMS For Android集成sdk下载 b.导入sdk SMSSDK 2.0.1 2.0.1开始使用aar文件集成.更方便快捷2.1 首先这是一个Android项目 2.2 外面这个AARTest 是一个Project.app是这个Project的一个module.如要在这个m

[android]ShareSDK——内容分享和短信验证

前言 新版本号ShareSDK的分享和短信验证,按官网的文档,都须要加入一个<Activity></Activity>标签,而分享和短息验证的这个标签内容都一样.会冲突. 解决的方法:分享用旧版本号,短信验证用新版本号. 后面会有解决的方法. 分享 导入project见初识ShareSDK--嵌入和登陆 <span style="font-size:24px;">OnekeyShare oks = new OnekeyShare(); //全部SSO

安卓 短信验证MobSMS集成

概念及原理 了解MobSMS 主要API 初始化接口 短信验证接口 短信验证回调 代码部分 MobSMS添加到项目中: S1.下载官方SDK文件link: S2.添加并配置SDK库文件: 添加aar/jar文件到\app\libs项目目录 配置build.gradle repositories{ flatDir{ dirs 'libs' // SMSSDK-2.1.4.aar/SMSSDKGUI-2.1.4.aar文件目录 } } dependencies { compile fileTree(

关于手机短信验证服务

浏览了一下找到三家不错的: 1)云通讯(yuntongxun.com) 感觉比较正规,文档也很全面,功能全,支持语音.短信6分每条套餐可便宜点.不过模板短信验证门槛较高,个人不能用,必须要验证为公司,速度感觉不是很理想但听说用的人多,应该会比较稳定. 2)云片网(yunpian.com) 相对于云通讯感觉略有点底气不足,不过门槛较低,可以个人使用,最低可以55的包(1000条),文档较全不过较云通讯略逊色,速度还可以,可以做条件不足时(无需企业认证)的第一选择. 3)Mob官网(mob.com)

Android studio 2.1 集成第三方短信验证类库

新手弄第三方类库也许会很纳闷,有时弄几天都不行.那就让我带大家10分钟做一个简单的短信验证吧! 1.首先上Mob官网注册账号:http://www.mob.com/#/ 2.下载SMSSDK类库包:http://www.mob.com/#/downloadDetail/SMS/android 3.进入Mob账号后台 4.添加一个android应用 5.我们在android studio创建一个项目,在app项目下添加下面的4个包到libs下: 6.配置build文件 7.在AndroidMani

ios开发之短信验证

这里使用的SMS_SDK.framework(Mob官网去下载) 来做的短信验证, 操作非常简单, 自己去注册账号拿到appkey 然后就是需要导入一些库文件 需要导入的库有Security.framework Foundation.framework, UIKit.framework, CoreGraphics.framework, libicucore.dylib, libz.lib, AddressBook.framework, AddressBookUI.framework, Messa