更新记录

1.1.9(2022-01-10)

  • 优化SQL查询,一次性返回结果,大大降低手机资源占用
  • 增加个性化的查询条件,方便用户更精准获取短信并降低手机压力
  • 通过监听短信变化,而不是轮询数据库,大大降低数据库压力
  • getLastSms可以承受万级并发,因为每次执行不是读取数据库,而是读取内存中的缓存
  • 增加打开Miui通知类短信授权界面(**1备注),开发者调用方法可以直接打开miui通知类短信授权界面

平台兼容性

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原生插件配置”->”云端插件“列表中删除该插件重新选择


这是一款超高性能的短信查询和监听插件

  • 优化SQL查询,一次性返回结果,大大降低手机资源占用
  • 增加个性化的查询条件,方便用户更精准获取短信并降低手机压力
  • 通过监听短信变化,而不是轮询数据库,大大降低数据库压力
  • getLastSms可以承受万级并发,因为每次执行不是读取数据库,而是读取内存中的缓存
  • 增加打开Miui通知类短信授权界面(**1备注),开发者调用方法可以直接打开miui通知类短信授权界面
方法名 返回值 说明
getPermission void 此方法没有返回值,调用后会向用户申请权限,建议开发者在界面初始化时调用此方法
checkAuth 请查看 #checkAuth# 备注 检查用户是否授予了权限,如果没有权限,将无法调用其他任何方法
miuiJump void 跳转miui权限配置界面
getAll 请查看 #getAll# 备注 一次性获取所有短信
startOB 请查看 #startOB# 备注 开始监听新短信,监听到新短信后,会放入缓存中,开发者通过getLastSms获取即可
getLastSms 请查看 #getLastSms# 备注 持续获取新短信,新短信在用户获取以后,会被系统从缓存中清除,请开发者自行保存已获得的短信数据

checkAuth返回值

{
    "code": 1,  //成功返回 -1 失败返回 1
     "msg": "success",
    "result": {
        "count": 0
    }
}

getAll返回值

{
    "code": 1,
    "msg": "success",
    "result": {
        "count":3315, //短信总数量
        "data": [{
            "type": "1",  //短信类型,1为接收,2为发送
            "body": "短信内容",  //短信内容
            "seen": "0",  //是否已读
            "address": "137****2544", 
            "id": "3788",  //短信唯一id
            "date": "1641476932166"  //日期,时间戳,毫秒
        }]
    }
 }

startOB返回值

 {
    "code": 1, //1即为监听成功,可以开始获取新信息。 -1为失败,不能获取新信息
    "result": {
        "count": 0
    },
    "msg": "success"
 }

(**1备注)MIUI的应用有一个权限是允许获取通知类短信,没有给应用开启这项权限的话,是无法获取到通知类的短信的。 可以通过调用openMiuiSMS打开通知类短信授权界面,让用户打开权限

完整的使用DEMO

<template>
    <div>
        <button type="primary" @click="permission">request permission</button>
        <button type="primary" @click="checkAuth">checkAuth</button>
        <button style="margin-top: 10rpx;" type="primary" @click="getAll">getAll</button>
        <button style="margin-top: 10rpx;" type="primary" @click="listen">start listen</button>
    </div>
</template>

<script>
    var smsHandle = uni.requireNativePlugin("features-sms");
    //建议加载后立即获取权限
    smsHandle.getPermission();

    export default {
        data() {
            return {
                timer: null
            }
        },
        onLoad() {
            // console.log("页面onload");
        },
        methods: {
            permission(){
                smsHandle.getPermission();
            },
            checkAuth() {
                // 获取 module
                smsHandle.checkAuth((ret) => {
                    console.log("检查权限结果:", ret);
                    /**
                     {
                        "code": 1,  //成功返回 -1 失败返回 1
                         "msg": "success",
                        "result": {
                            "count": 0
                        }
                     }
                     */
                });

            },
            getAll() {
                let obj = {
                    // sender:"+8618922962650", //发送方号码,要带 +86这样的国际区号
                    // type:"1", //短信类型,1为接收的短信,2为我方发送的短信
                    // is_seen:"1" //0为未读,1为已读,

                };
                smsHandle.getAll(obj, (ret) => {
                    console.log("批量获取信息结果集:", ret);
                    /**
                     {
                        "code": 1,
                        "msg": "success",
                        "result": {
                            "count":3315, //短信总数量
                            "data": [{
                                "type": "1",  //短信类型,1为接收,2为发送
                                "body": "短信内容",  //短信内容
                                "seen": "0",  //是否已读
                                "address": "137****2544", 
                                "id": "3788",  //短信唯一id
                                "date": "1641476932166"  //日期,时间戳,毫秒
                            }]
                        }
                     }
                     */
                    if (ret.code !== 1) {
                        return;
                    }
                });
            },
            listen() {
                smsHandle.startOB((ret) => {
                    console.log("监听结果:", ret);
                    /**
                     {
                        "code": 1, //1即为监听成功,可以开始获取新信息。 -1为失败,不能获取新信息
                        "result": {
                            "count": 0
                        },
                        "msg": "success"
                     }
                     */

                    //持续监听新短信
                    clearInterval(this.timer);
                    this.timer = setInterval(() => {
                        smsHandle.getLastSms((ret) => {
                            //监听成功并返回后,会清除该短信,请客户端自行保存短信
                            console.log("最新的一条短信:", ret);
                            /**
                             {
                                "code": 1,  //1有信息  -1无信息
                                 "msg": "success",
                                "result": {
                                    "data": {
                                        "type": "1",  //短信类型,1为接收,2为发送
                                        "body": "短信内容",  //短信内容
                                        "seen": "0",  //是否已读
                                        "address": "137****2544", 
                                        "id": "3788",  //短信唯一id
                                        "date": "1641476932166"  //日期,时间戳,毫秒
                                    },
                                    "count": 1
                                }
                             }
                             */
                        });
                    }, 300);
                });
            }
        }
    }
</script>

隐私、权限声明

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

android.permission.READ_SMS android.permission.RECEIVE_SMS

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

本插件采集的数据: 用户的短信 发送的服务器地址: 无 以及数据用途说明: 让开发者可以获取用户的短信

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

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