更新记录

1.0.7(2019-11-08)

修复发送短信后闪退问题

1.0.6(2019-11-05)

新增可以从js传递appkey、appsecret。

查看更多

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://ask.dcloud.net.cn/article/35763
iOS 离线打包原生插件另见文档 https://ask.dcloud.net.cn/article/35764


这个插件是我根据MOBSMS官方最新的SDK打包而来。MOBSMSSDK的版权归MOB所有。如有侵权,请联系我删除。

这只是安卓端哦。IOS端我还没打包,有时间弄了更新上来。

使用必读

  1. 打开你项目的manifest.json
  2. 点击APP原生插件配置
  3. 选择云端插件,选择已经购买或者正在试用的WB-MobSms插件。注意,需要在Uni-app插件市场为此项目购买或试用时候才能看到。
  4. mob.com注册一个账号一个应用,在APP原生插件配置>WB-MobSms填写你的appKey ,appSecret。
  5. 制作自定义基座。操作为打开Hbuilder>打开你的项目>运行>运行到手机或模拟器>制作自定义基座>只勾选安卓>选中自定义基座>点击打包>等待打包完成。再按照引入发送短信操作。
  6. 调试,运行>运行到手机或模拟器>运行基座选择>自定义基座,之后再点击运行到手机,查看效果。

试用说明

试用也要按照使用必读操作1-6步骤,试用与购买的不同只在于不能使用发行>云打包功能,其他都一样,都需要自定义基座才能运行,评论中有人提到显示[JS Framework] using unregistered weex module "WB-MobSms"就是因为没有使用自定义基座,原生插件都需要自定义基座的。

引入

const mobsms = uni.requireNativePlugin('WB-MobSms');

发送短信

直接使用:
mobsms.sendSms(
    {
        zone: '86',
        phone_number: "18900000000"
    },
    result => {
        console.log(result.status);//此处返回是否发送成功,string类型success,fail
        if (result.status == 'success') {
                //播放加载中动画0.8s
                uni.showToast({
                        title: '验证码获取中',
                        icon: 'loading',
                        duration: 800
                });
        }
    }
);

也可以传入短信模板编号,例如:

mobsms.sendSms(
    {
        zone: '86',
        phone_number: "18900000000",
        temp_code: "0"
    },
    result => {
        console.log(result.status);//此处返回是否发送成功,string类型success,fail
        if (result.status == 'success') {
                //播放加载中动画0.8s
                uni.showToast({
                        title: '验证码获取中',
                        icon: 'loading',
                        duration: 800
                });
        }
    }
);

如果打包之后不能正确发送短信提示appsecret为空,可以手动传入appkey和appsecret。

mobsms.sendSms(
    {
        zone: '86',
        phone_number: "18900000000",
        appKey: "",
        appSecret: ""
    },
    result => {
        console.log(result.status);//此处返回是否发送成功,string类型success,fail
        if (result.status == 'success') {
                //播放加载中动画0.8s
                uni.showToast({
                        title: '验证码获取中',
                        icon: 'loading',
                        duration: 800
                });
        }
    }
);

验证

为了安全,建议使用服务端验证。 这里贴一段Go语言后端验证代码

type mobSmsData struct {
    Status int
    Error  string
}

type responseData struct {
    Status  string `json:"status"`
    Message string `json:"message"`
}

func CheckSms(zone string, phoneNumber string, smsCode string) responseData {
    var response responseData
    var mob mobSmsData
    url := "https://webapi.sms.mob.com/sms/verify"
    appkey := "your appkey"
    payloadString := "appkey=" + appkey + "&phone=" + phoneNumber + "&zone=" + zone + "&code=" + smsCode
    payload := strings.NewReader(payloadString)
    req, _ := http.NewRequest("POST", url, payload)
    req.Header.Add("content-type", "application/x-www-form-urlencoded")
    req.Header.Add("cache-control", "no-cache")
    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)
    jsonStr := []byte(string(body))
    err := json.Unmarshal(jsonStr, &mob)
    if err != nil {
        fmt.Println(err)
    }
    switch mob.Status {
    case 200:
        response.Status = "success"
        response.Message = "验证成功"
    default:
        response.Status = "fail"
        if len(mob.Error) != 0 {
            response.Message = mob.Error
        } else {
            response.Message = "与短信服务器通信失败"
        }
    }
    return response
}

附赠

Uniapp是一个纯前端框架,前端总是要和服务器通信才能运作的。当用户有了恶意输入后对后端程序员的要求就比较高了,而且各种绕过方法层出不穷,红蓝对抗是一个长期的过程。 为了安全,我根据开源的WAF自己改了一个WEB应用防火墙(WAF),并且开源给大家看。 有需要的可以Github自取:wubonetcn/luawaf 有问题可以与我联系wubo@wubo.net.cn

隐私、权限及商业化声明

1. 本插件需要申请的手机端权限列表:

2. 本插件采集的手机端数据、发送的服务器地址、以及数据用途说明:

请参考MOBSMS官方插件说明。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无广告。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问