apicloud apicloud

注册
查看: 3255|回复: 6

[APP开发技巧] 分享sendsms模块开发

主题:
6
帖子:
12
云币:
23

[APP开发技巧] 分享sendsms模块开发

3255 6 | 发表于 2015-9-8 02:00:08 |阅读模式 | |
本帖最后由 漫步人生 于 2015-9-8 02:05 编辑

核心JS,给新人指路,少走弯路
function doRegister() {
        var mobile = $api.trim($api.val($api.byId('mobile')));
        var captch = $api.trim($api.val($api.byId('code')));
        var password = $api.trim($api.val($api.byId('password')));
        if (!isNum(mobile) || mobile.length != 11) {
                tips('请输入合法手机号'); //自己封装的提示函数,可忽略
                return false;
        }

        if (!isNum(captch) || captch.length < 4) {
                tips('请输入合法验证码');
                return false;
        }
        if (password.length < 5) {
                tips('至少输入6个字符密码');
                return false;
        }
        //注册短信网关
        var now = Math.round(new Date().getTime() / 1000);
        var mobSdkRegTime = $api.getStorage('mobSdkReg');
        var sendsms = api.require('sendSms');
        var time = now - mobSdkRegTime;
        if (!mobSdkRegTime || time > 120) {
                //120秒内只能注册一次,不然会失败,注意下;
                var mobAppConf = $api.getStorage('app_conf').MobConf;
                var appParam = {
                        appkey : mobAppConf.AppKey,
                        appsecret : mobAppConf.AppSecret
                };
                sendsms.regSms(appParam);
                //注册计时
                var regTime = Math.round(new Date().getTime() / 1000);
                $api.setStorage('mobSdkReg', regTime);
        }
        sendsms.enterCode({
                code : captch
        }, function(ret, err) {
                if (ret.result == "ok") {
                        var params = {
                                username : mobile,
                                password : password
                        };                                               var apiCallParams = initCallApi('userReg', params); //自己封装的初始化接口参数,大家可以忽略
                        api.ajax({
                                url : apiCallParams.url,
                                method : apiCallParams.method,
                                dataType : 'json',
                                headers : apiCallParams.headers,
                                data : {
                                        values : params
                                }
                        }, function(ret, err) {
                                if (ret) {
                                        if (ret.status == '0') {
                                                api.confirm({
                                                        title : "注册成功",
                                                        msg : "恭喜您注册成功!",
                                                        buttons : ['取消','立即登录']
                                                }, function(ret, err) {
                                                        if (ret.buttonIndex == 2) {
                                                                api.openWin({
                                                                        name : 'login_win',
                                                                        url : 'login_win.html',
                                                                        pageParam : {
                                                                                frm_name : 'login',
                                                                                title : '登陆'
                                                                        },
                                                                        vScrollBarEnabled : false,
                                                                        hScrollBarEnabled : false,
                                                                        slidBackEnabled : false,
                                                                        bgColor : "#F2F2F2",
                                                                        animation : {
                                                                                type : "cube", //动画类型(详见动画类型常量)
                                                                                subType : "from_right", //动画子类型(详见动画子类型常量)
                                                                                duration : 300 //动画过渡时间,默认300毫秒
                                                                        }
                                                                });
                                                        }
                                                });
                                        } else {
                                                alert('签名验证失败:' + ret.msg);
                                        }
                                } else {
                                        alert(JSON.stringify(err));
                                }
                        });
                } else {
                        api.toast({
                                msg : '短信验证码错误',
                                location : 'middle'
                        });
                }
        });

}

/**倒计时获取短信验证码**/
//参数说明:el  input按钮 s 倒计时秒数
function getCode(el, s) {
        var mobile = $api.trim($api.val($api.byId('mobile')));
        if (!isNum(mobile) || mobile.length != 11) {
                tips('请输入合法手机号');
                return false;
        }
        //注册短信网关
        var now = Math.round(new Date().getTime() / 1000);
        var mobSdkRegTime = $api.getStorage('mobSdkReg');
        var sendsms = api.require('sendSms');
        if (!mobSdkRegTime || (now - mobSdkRegTime) > 120) {
                //120秒内只能注册一次,不然会失败,注意下;
                var mobAppConf = $api.getStorage('app_conf').MobConf;
                var appParam = {
                        appkey : mobAppConf.AppKey,
                        appsecret : mobAppConf.AppSecret
                };
                sendsms.regSms(appParam);
                //注册计时
                var regTime = Math.round(new Date().getTime() / 1000);
                $api.setStorage('mobSdkReg', regTime);
        }
        //发送短信
        sendsms.sendMessage({
                phone : mobile
        }, function(ret, err) {
                if (ret.result == "ok") {
                        api.toast({
                                msg : '短信发送成功',
                                location : 'middle'
                        });
                } else {
                        api.toast({
                                msg : ret.result,
                                location : 'middle'
                        });

                }
        });
        //倒计时
        countdown(el, s);

}
//参数说明:el  input按钮 s 倒计时秒数
function countdown(el, s) {
        var txt = $api.val(el);
        $api.attr(el, 'disabled', 'disabled');
        $api.val(el, '倒计时:' + s + 's');
        intervalId = setInterval(function() {
                s--;
                $api.val(el, '倒计时:' + s + 's');
                if (s < 0) {
                        clearInterval(intervalId);
                        $api.val(el, txt);
                        $api.removeAttr(el, 'disabled');
                }
        }, 1000);
}






主题:
5
帖子:
13939
云币:
14443
发表于 2015-9-8 10:49:36 |
感谢分享,最好来个widget包能直接运行的

马路杀手

UID:15627

主题:
119
帖子:
446
云币:
804
发表于 2015-9-8 11:22:09 |
非常棒!不过 sendsms收费 500大元

马路杀手

UID:15627

主题:
119
帖子:
446
云币:
804
发表于 2015-9-8 11:24:05 |
来个源码吧。。。有界面更好看

主题:
6
帖子:
12
云币:
23
 楼主| 发表于 2015-9-9 00:32:32 |
安子 发表于 2015-9-8 11:24
来个源码吧。。。有界面更好看

这是给客户做的项目,没法上源码,抱歉

主题:
9
帖子:
36
云币:
103
发表于 2015-9-15 18:15:50 |
sendSms的参数需要手机号码,维护enterCode不需要手机号这个参数?

新手上路

UID:281280

主题:
6
帖子:
14
云币:
20
发表于 2016-3-16 22:46:31 |
自定义的模块云编译时出现
THIS TOOL IS DEPRECATED. See --help for more information.

java.io.FileNotFoundException: /uzmap/temp/x4Aqql3EaN650zg/android/bin/resources.ap_ does not exist
jarsigner: unable to open jar file: /uzmap/temp/x4Aqql3EaN650zg//uzmap.apk
这个问题怎么解决啊!调了好几天了,都过不去啊!新手求教啊
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表