更新记录
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:支持 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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插件😉