更新记录

2.4.0(2023-05-12)

1、修复页面销毁后无法再次监听的问题

2、添加通过短信ID获取短信的方法

2.3.0(2023-02-27)

1、方法返回_id参数,唯一id

2、方法返回count字段,短信总条数

3、方法添加uriString参数,获取指定类型的短信

2.2.0(2023-01-18)

离线包更新:2023年01月12日发布——HBuilderX(3.6.17.20230112)

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

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

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


读取手机短信2.3

代码示例

<template>
</template>

<script>
    ....(这里省略了一些代码,开发者别直接复制粘贴用哦)

    const readSmsModule = uni.requireNativePlugin('lu-readSmsModule');

    ...
            //这个方法2.0版本废弃,请使用
            //https://ext.dcloud.net.cn/plugin?id=594
            //uniapp官方封装的权限判断插件进行业务逻辑
            readSms() {
            },

            //获取最新的单条短信
            // {
            //      "code": 200,            //200成功  400失败
            //      "msg": "获取成功",      //提示语
            //      "data": {...}           //这里面就是短信数据了
            //}
            getOnePhoneMessage() {
                readSmsModule.getOnePhoneMessage(item => {
                    console.log(item);
                    uni.showToast({
                        title: JSON.stringify(item),
                        icon: 'none'
                    });
                });
            },

            obtainPhoneMessage() {
                //分页参数 必填
                let params = {
                    page: 1,
                    limit: 20,
                    //uriString可选参数,默认是content://sms/
                    uriString: ""
                }
                //
                // 2.0版本返回格式
                //{
                //  "code": 200,  200 成功  400失败
                //  "msg": "描述",
                //  "data": [] 数据
                //}
                // data 是所有的数据  如果短信内容过多会导致卡顿
                //data => {"code": 200, "msg": "请求成功", "count": 100, "data": [{"body":"短信内容","name":0,"phone":"电话","time":"时间","type":1},{"body":"短信内容","name":0,"phone":"电话","time":"时间","type":1]}
                //type  1是接收到的,2是已发出    person => 发件人,返回一个数字就是联系在通讯录里,null为陌生人
                readSmsModule.obtainPhoneMessage(params, data => {
                    console.log(data);
                    uni.showToast({
                        title: JSON.stringify(data),
                        icon: 'none'
                    });
                });

                // item 是单条数据           !!!该方法已废弃
                //item => {"body":"短信内容","name":0,"phone":"电话","time":"时间","type":1}
                //type  1是接收到的,2是已发出    person => 发件人,返回一个数字就是联系在通讯录里,null为陌生人
                // readSmsModule.obtainPhoneMessageOnce(item => {
                //  console.log(item);
                //  uni.showToast({
                //      title: JSON.stringify(item),
                //      icon: 'none'
                //  });
                // });
            },

            //监听短信数据库
            monitorSmsOb() {
                readSmsModule.monitorSmsOb((e) => {
                    //2.0新版本会调参数e会带上短信内容数据
                    //可以在这里调用插件的getOnePhoneMessage方法获取最新的一条短信。  !!!2.0版本开始不需要了
                    console.log(e);
                    uni.showToast({
                        title: JSON.stringify(e),
                        icon: 'none'
                    });
                });
            },

            //通过短信id读取短信
            getOnePhoneMessageById() {
                let id = 1234; //int类型
                readSmsModule.getOnePhoneMessageById(id, (e) => {
                    console.log(e);
                    uni.showToast({
                        title: JSON.stringify(e),
                        icon: 'none'
                    });
                });
            },
        }
    }
</script>

<style>
</style>

返回参数说明

方法名 返回值 说明
readSms 如果权限开启返回true,如果权限未打开会申请授权并返回false 无 2.0版本废弃!!! 推荐使用:https://ext.dcloud.net.cn/plugin?id=594
obtainPhoneMessage Object 返回所有的短信内容。数据格式:{"code": 200, "msg": "请求成功", count: 100, "data": [{"body":"短信内容","name":0,"phone":"电话","time":"时间","type":1},{"body":"短信内容","name":0,"phone":"电话","time":"时间","type":1]}
obtainPhoneMessageOnce Object 2.0版本废弃!!!
monitorSmsOb 监听短信数据库变化 监听短信数据库变化
getOnePhoneMessage 返回最新的一条短信 {"code": 200, "msg": "请求成功", "data": {body":"短信内容","name":0,"phone":"电话","time":"时间","type":1}}
getOnePhoneMessageById 通过短信id读取短信 {"code": 200, "msg": "请求成功", "data": {body":"短信内容","name":0,"phone":"电话","time":"时间","type":1}}

其他说明

obtainPhoneMessage方法返回所有的短信集合,page limit 分页参数必传!  
count字段是本机短信数量

uriString可选值:
content://sms/               所有短信
content://sms/inbox        收件箱
content://sms/sent          已发送
content://sms/draft         草稿
content://sms/outbox     发件箱
content://sms/failed       发送失败
content://sms/queued    待发送列表

部分手机无法获取全部的短信,这里尤其说明MIUI系统。
MIUI的应用有一个权限是允许获取通知类短信,没有给应用开启这项权限的话,是无法获取到通知类的短信的。
由于是第三方权限,暂时找不到通过代码申请权限的方法,因此只能由用户手动开启。

code 200 成功
code 400 错误  没有短信内容!部分手机无法获取全部的短信,部分厂商单独添加了通知类短信权限,请检查是否给予该权限

如有问题或建议可以下面评论

QQ交流群:263173204备注uni插件😉

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.READ_SMS"/>

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

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

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