DevStore首页 > DEV资源 > 服务评测下载 > mob免费短信验证码Android版V1.1.4服务评测

mob免费短信验证码Android版V1.1.4服务评测

查看服务>>
DevStore编辑 陈西瑞 | 2015-01-31 11:00    浏览量(14122)    纠错    评论(3)    Mob免费短信验证码服务详情>>

服务评测作者

  • 58 能力值
  • 25 源码
  • 4 评测
  • 0 资料

评测目录

集成测试

评测环境

3G网络:

测试对象

mob.com免费短信验证码

SDK版本

Android SMS SDK v 1.1.4

开发环境

Eclipse

测试手机

三星 note2和Coolpad8720Q

系统版本

Android4.1和Android4.2

手机网络

3G

测试方法

编写集成mob短信验证的Demo,测试其功能。

测试时间

2014年11月20日

WIFI环境:

测试对象

mob.com免费短信验证码

SDK版本

Android SMS SDK v 1.1.4

开发环境

Eclipse

测试手机

三星 note2和Coolpad8720Q

系统版本

Android4.1和Android4.2

手机网络

WIFI

测试方法

每隔一分钟请求后台向客户端发送短信,测试其性能。

理论接收短信数

20条

实际接收短信数

20条

测试时间

2014年11月20日

【AVD无法装电话卡,所以只能进行真机测试】

基本参数:

收费情况

对用户免费,对开发者开源

发送短信内容

短信

支持平台

Android、iOS

集成难度

简单

统计

一般

及时性

及时

服务段API

提供

对应用运行的影响

集成过程

客户端集成

一、 得到用户Appkey 和App Secret 

1、 在Eclipse中创建新项目(Android Studio相同)记下包名,包名在mob后台创建应用的时候需要。这个一定要切记!

得到用户Appkey 和App Secret

2、 登陆mob.com短信验证平台 开发者服务平台注册成为开发者,并创建应用。

1)选择系统的版本,Android或者ios;

2)填写应用名称,下载地址,选择应用的详细分类;

3)在开发模式完成后,正式上线的时候还需要上传应用的签名,这里就用到了上面的包名,最好不要后期修改,否则很是麻烦,需要做大篇幅的修改。

创建应用

3、 得到用户Appkey 和App Secret ,在你创建了新的应用的时候他会给出你对应的应用的Appkey 和App Secret。如果后期需要再进入mob.com查看Appkey 和App Secret的时候就需要点击对应的应用名字---应用管理----应用信息,在这里可以看到应

用的所有信息,并且也可以对应用的部分信息进行修改。

得到用户Appkey 和App Secret

4、 下载SDK,地址:http://sms.mob.com/Download

 下载的压缩包,解压后就能得到两个文件,一个是官方提供的sample,另一个是需要在自己项目中引用的项目文件。

二、 客户端配置

1、 从官方下载的sdk中导入eclipse,把SMSSDK这个项目整体导入eclipse,并把它作为library在自己所创建的项目中引用。其中SMSSDK是官方提供的一个引用资源文件,这个是目前常见的一种方式,因为这样省去了在自己的项目中大量的添加jar包,造成本身项目的体积不断膨胀变大,使其加载速度变慢,同时还会因为有的jar包只是用到里面的很少一部分,但是却添加的是整个jar包,造成体积冗余,资源浪费。

导入:

导入文件

引用:

按照以下步骤一步步的把需要用到的资源文件引用到自己的项目

Window--------preferences---------android ---- 右侧library-------Add ------ 选择 SMSSDK----------Apply---------ok

资源引入项目

2、打开配置文件,添加相应的权限

其中有比较常见的网络权限,通讯录权限,短信权限等

这些直接复制,黏贴进自己的项目就可以,都是必须要的,没什么可说的

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

3、在application中添加mob.com的Activity,这个是在官方类库中提供的,但是因为在个人项目中需要调用,所以需要在配置文件中单独声明一下。

这个要特别提醒一下,千万不要忘了,不然会提示空指针异常或者是没有找到cn.smssdk.SMSSDKUIShell,这样你的项目就不能运行了,如果出现了这样的错误提示,可以直接到配置文件中看看有没有漏掉这一步。

 
<activity
   android:name="cn.smssdk.SMSSDKUIShell"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:windowSoftInputMode="stateHidden|adjustResize" />

下面的也是在配置文件中需要声明的,不过这个是他们官方用来进行统计数据用得到的

<!-- 统计用,service用于保证一定能够向服务器上传数据 -->
<service
android:name="cn.sharesdk.analysis.server.RemoteService"
    android:process=":remote" />

三、方法调用

初始化短信SDK

private void init() {
MyUtils.initInfor(this);
 
SMSSDK.initSDK(this, app_key, app_secret);
final Handler handler = new Handler(this);
EventHandler eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
handler.sendMessage(msg);
}
};
// 注册回调监听接口
SMSSDK.registerEventHandler(eventHandler);
flag = true;
 
// 获取新好友个数
showDialog();
SMSSDK.getNewFriendsCount();
 
}

请求短信验证码

btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
str_phone = phone.getText().toString();
if(str_phone.equals(""))
{
Toast.makeText(getApplicationContext(), "请输入手机号",Toast.LENGTH_SHORT).show();
}
else if(!MyUtils.isMobileNO(str_phone))
{
Toast.makeText(getApplicationContext(), "请输入正确的手机号格式",Toast.LENGTH_SHORT).show();
}
else
{
// 下面的代码就是调用sdk的发送短信的方法,其中的“86”是官方中定义的,代表中国的意思
// 第二个参数表示的是需要发送短信的手机号
SMSSDK.getVerificationCode("86", str_phone);
str_str_phone = str_phone;

//发送短信之后验证码的按钮才能激活
btn_.setBackgroundColor(0xff000000);
btn_.setClickable(true);

//10秒钟内不可重点此按钮
time.start(); 

}

}
});

验证短信验证码是否正确

SMSSDK.submitVerificationCode("86", str_str_phone,str_captcha);
EventHandler eh=new EventHandler()
{
@Override
public void afterEvent(int event, int result, Object data) {
 
   if (result == SMSSDK.RESULT_COMPLETE) 
   {
   runOnUiThread(new Runnable()
{
public void run()
{
Toast.makeText(getApplicationContext(), "验证成功!你可以修改密码了",Toast.LENGTH_SHORT).show();
btn_.setBackgroundColor(0xffcccccc);
btn_.setClickable(false);
}
});
   }
   else
   {  
   runOnUiThread(new Runnable()
{
public void run()
{
Toast.makeText(getApplicationContext(), "验证码错误!",Toast.LENGTH_SHORT).show();
btn_.setBackgroundColor(0xffcccccc);
btn_.setClickable(false);
}
});
   ((Throwable)data).printStackTrace(); 
   }
} 
}; 
SMSSDK.registerEventHandler(eh); //注册短信回调

判断字符串是不是手机号码的正则表达式

public static boolean isMobileNO(String mobiles) {
/*
 * 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
 * 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通)
 * 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
 */
String telRegex = "[1][3578]\\d{9}";// "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
if (TextUtils.isEmpty(mobiles))
return false;
else
return mobiles.matches(telRegex);
}

打开通信录好友列表页面

//这个界面的sdk自带风格不难看,没有修改必要
private void openFriendsUI() {
ContactsPage contactsPage = new ContactsPage();
contactsPage.show(this);
}

防止多次请求验证码的计时器

private Button checking;
 
public TimeCount(long millisInFuture, long countDownInterval,Button checking) 
{
super(millisInFuture, countDownInterval);//参数依次为总时长,和计时的时间间隔
this.checking = checking; 
}

@Override
public void onFinish() 
{
//计时完毕时触发
checking.setText("重新验证");
checking.setClickable(true);
checking.setBackgroundColor(0xff000000);
}
 
@Override
public void onTick(long millisUntilFinished){
//计时过程显示
checking.setClickable(false);
checking.setBackgroundColor(0xffcccccc);
checking.setText(millisUntilFinished /1000+"秒后重新验证");
}

主要功能

本服务的主要功能是发送短信验证码和获取联系人列表

发送短信验证码和获取联系人列表

1、发送短信验证码

选择国家,输入手机号,就能得到短信验证码

无需与短信平台合作的繁琐手续,SDK快速集成,集成便捷。省去了自己去跟运营商谈合作,谈接口等各种繁琐的步骤

先试试发短信功能,会提示你要发送的某个手机的手机号,这里是提示你乙方发错了,就是一个最终的确定,如果不正确可以取消小,重新输入正确的手机号码。

如果点击 好  这时SDK就会向服务器提交请求,然后服务器根据你提交的信息发送短信到指定手机上,从而实现手机的定点短信发送。向服务器发送请求后,准备接收短信,这里有个缓冲界面,因为发送短信毕竟也需要一个时间间隔,同时也不能一直不间断的发送,那样就成了垃圾短信了,也不符合我们的初衷。

发送短信验证码

发送短信验证码

接收到了短信,最终的结果出现了,这个就是我们的终极结果,短信。得到了短信就有了验证码,我们就可以在我们的app中实现自己需求,完成相应的功能效果。

短信验证码

2、邀请通讯录好友使用app,这个是获取通讯录联系人列表后的结果,可以读取到手机上的所有联系人,极大的方便了app的推广,快速匹配通讯录好友,建立自己的朋友圈。

 

联系人


DEMO展示

部分DEMO展示:

package com.lxj.devstore_mob.com_demo.activity;
 
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
 
import com.lxj.devstore_mob.com_demo.utils.MyUtils;
import com.lxj.devstore_mob.com_demo.utils.TimeCount;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
//import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
//短信验证码界面
//不用默认难看的风格
public class CaptchaActivity extends Activity
{
EditText phone,captcha;
String str_phone,str_str_phone,str_captcha;
Button btn,btn_;
 
//计时器
private TimeCount time;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_captcha);
// 初始化view
initView();
}

private void initView()
{
SMSSDK.initSDK(this,MyUtils.APPKEY, MyUtils.APPSECRET);
final Handler handler = new Handler();
EventHandler eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
handler.sendMessage(msg);
}
};
// 注册回调监听接口
SMSSDK.registerEventHandler(eventHandler);

phone = (EditText)findViewById(R.id.phone);
captcha = (EditText)findViewById(R.id.captcha);

btn = (Button)findViewById(R.id.btn);
time = new TimeCount(30000,1000,btn);//构造CountDownTimer对象
btn.setBackgroundColor(0xff000000);
btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
str_phone = phone.getText().toString();
if(str_phone.equals(""))
{
Toast.makeText(getApplicationContext(), "请输入手机号",Toast.LENGTH_SHORT).show();
}
else if(!MyUtils.isMobileNO(str_phone))
{
Toast.makeText(getApplicationContext(), "请输入正确的手机号格式",Toast.LENGTH_SHORT).show();
}
else
{
// 下面的代码就是调用sdk的发送短信的方法,其中的“86”是官方中定义的,代表中国的意思
// 第二个参数表示的是需要发送短信的手机号
SMSSDK.getVerificationCode("86", str_phone);
str_str_phone = str_phone;

//发送短信之后验证码的按钮才能激活
btn_.setBackgroundColor(0xff000000);
btn_.setClickable(true);

//10秒钟内不可重点此按钮
time.start(); 

}

}
});
//btn.setClickable(true);

btn_ = (Button)findViewById(R.id.btn_);
btn_.setBackgroundColor(0xffcccccc);
btn_.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

str_captcha = captcha.getText().toString();

if(str_captcha.equals(""))
{
Toast.makeText(getApplicationContext(), "请输入手机验证码",Toast.LENGTH_SHORT).show();
}
else
{

SMSSDK.submitVerificationCode("86", str_str_phone,str_captcha);
EventHandler eh=new EventHandler()
{
@Override
public void afterEvent(int event, int result, Object data) {
 
   if (result == SMSSDK.RESULT_COMPLETE) 
   {
   runOnUiThread(new Runnable()
{
public void run()
{
Toast.makeText(getApplicationContext(), "验证成功!你可以修改密码了",Toast.LENGTH_SHORT).show();
btn_.setBackgroundColor(0xffcccccc);
btn_.setClickable(false);
}
});
   }
   else
   {  
   runOnUiThread(new Runnable()
{
public void run()
{
Toast.makeText(getApplicationContext(), "验证码错误!",Toast.LENGTH_SHORT).show();
btn_.setBackgroundColor(0xffcccccc);
btn_.setClickable(false);
}
});
   ((Throwable)data).printStackTrace(); 
   }
} 
}; 
SMSSDK.registerEventHandler(eh); //注册短信回调

}


}
});
btn_.setClickable(false);

}

protected void onDestroy() {
// 销毁回调监听接口
SMSSDK.unregisterAllEventHandler();
super.onDestroy();
}

}

测试日志

测试日志

遇到问题

在AVD测试时发现没有电话卡没法发送和接收短信。

上手难易

上手难以:容易。

SDK集成简单,参考集成指南和API文档即可快速集成;

官方给的demo中可以更好了解和集成到自己的项目中,初始化只需一行代码

SMSSDK.initSDK(this, app_key, app_secret);

调用发短信就是实现SMSSDK的一个方法即可,上手快易、操作;

总共就是引用项目,配置文件,初始化,调用这四步就完成了所有的工作。

开发文档

官方给出了详细的开发文档和官方Demo。开发者课结合官方文档和官方Demo进行开发。

官方详细开发文档地址为  http://wiki.mob.com/Android_%E7%9F%AD%E4%BF%A1SDK%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3#.E5.8F.82.E9.98.85

此服务评测版权归DevStore所有,禁止转载,申请升级为 特约评测员 才可进行测评立即申请

声明:DevStore评测内容都是基于专业评测人员/开发者通过真实的测试之后得出的数据,服务版本实时都在更新,所以评测并不一定是此服务的最新版本,但我们会秉承公正专业精准的态度,对开发者负责,同时欢迎大家监督和建议,如对评测内容有异议,请提交纠错,由专业的评测团队再次评测,我们会尽最大努力为大家提供更贴心的服务。

DevStore_全球首家第三方开发者服务商店,最精准的服务对比、最专业的服务评测、最及时的行业动态,为开发者挑选服务提供最全面的参考和专业分析,加入DevStore,从此告别熬夜加班,你也可以这么帅!搜索微信号:DevStore

此评测的相关源码

评论(3)
乌客堂主

乌客堂主 2016-08-30 16:29:29

很不错 都说没有免费的午餐 但是就有免费的验证码套餐 太感谢了!
回复(0) 赞(0) 赞(1)
eastterry

eastterry 2015-02-07 16:15:52

不错我正在找这方面的东西
回复(0) 赞(0) 赞(1)
瓦哦

瓦哦 2015-02-06 10:15:02

回复(0) 赞(1) 赞(2)