更新记录
1.1.9(2022-01-10)
- 优化SQL查询,一次性返回结果,大大降低手机资源占用
- 增加个性化的查询条件,方便用户更精准获取短信并降低手机压力
- 通过监听短信变化,而不是轮询数据库,大大降低数据库压力
- getLastSms可以承受万级并发,因为每次执行不是读取数据库,而是读取内存中的缓存
- 增加打开Miui通知类短信授权界面(**1备注),开发者调用方法可以直接打开miui通知类短信授权界面
平台兼容性
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原生插件配置”->”云端插件“列表中删除该插件重新选择
这是一款超高性能的短信查询和监听插件
- 优化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>