@bitstart/react-native-sms-sender
v0.2.2
Published
React Native SMS Sender - Android Native Module with TurboModules
Downloads
19
Maintainers
Readme
@bitstart/react-native-sms-sender
React Native SMS/MMS 管理插件,支持 Android TurboModules 新架构。提供生产级的短信、彩信管理能力,内置多重监听保障与后台保活机制。
✨ 功能特性
📱 短信/彩信核心
- 高性能聚合:采用手动 Union (SMS + MMS) 方案聚合会话列表,稳定超越系统默认视图。
- 彩信富文本:支持解析彩信附件(图片、文本部分),提供智能内容摘要。
- 深度操作:支持标记已读(同步更新 SMS/MMS 表)、删除单条消息或整个会话。
- 发送能力:支持单发短信、批量群发短信、通过 Intent 发送彩信。
📲 全方位监听
- 四重保障:集成
BroadcastReceiver、ContentObserver与NotificationListener,确保不同系统环境下消息接收 100% 到达。 - 智能提取:内置验证码自动提取引擎,支持自动复制到剪切板。
🔋 生产级保活
- 常驻服务:可配置的前台服务(Foreground Service)。
- 策略组合:支持一像素保活 Activity、开机自启、忽略电池优化。
- 全量诊断:内置
getDiagnostics接口,一键排查权限、服务与设备状态。
📶 SIM 卡与兼容性
- 多卡支持:精准获取双卡信息(运营商、卡槽、手机号),支持指定 SIM 卡发送。
- RoleManager 适配:兼容 Android 10+ 的
RoleManager默认短信应用申请流程。
📦 安装
npm install @bitstart/react-native-sms-sender
# 或
yarn add @bitstart/react-native-sms-sender🔧 权限配置
在 android/app/src/main/AndroidManifest.xml 中添加:
<manifest>
<!-- 基础通信 -->
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.WRITE_SMS" /> <!-- 仅默认应用有效 -->
<!-- 增强功能 -->
<uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 联系人匹配 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- SIM卡信息 -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- Android 13+ 通知 -->
<!-- 保活机制 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
</manifest>📖 核心使用
1. 系统诊断与权限请求
import SmsSender from "@bitstart/react-native-sms-sender";
// 获取完整诊断报告
const diag = await SmsSender.getDiagnostics();
console.log(diag.permissions.isDefaultSmsApp); // 是否为默认应用
// 请求必要权限
await SmsSender.requestReadPermission(); // 申请短信与联系人
await SmsSender.requestDefaultSmsApp(); // 申请成为默认应用 (Android 10+ 自动使用 RoleManager)2. 会话与消息管理
// 获取聚合会话列表 (按时间降序)
const { conversations } = await SmsSender.getConversations({ limit: 50 });
// 获取会话内的详细消息 (支持 MMS 附件)
const { messages } = await SmsSender.getConversationMessages(threadId, { limit: 100 });
// 标记整个会话已读 (需要默认应用身份)
await SmsSender.markConversationAsRead(threadId);
// 删除消息
await SmsSender.deleteMessage(messageId, 'sms');3. 发送短信
// 单发
await SmsSender.sendSms({
phoneNumber: "10086",
body: "查询余额",
skipConfirmation: true, // true 为后台直接发送,false 为跳到系统界面
simSlotIndex: 0 // 指定卡槽
});
// 批量群发 (直接发送)
await SmsSender.sendBatchSms({
phoneNumbers: ["10086", "10010"],
body: "统一通知内容"
});4. 短信监听与日志桥接
// 监听新短信/彩信
const sub = SmsSender.addSmsListener((event) => {
console.log("收到新消息:", event.body);
});
// 订阅原生层运行日志 (调试利器)
const logSub = SmsSender.addLogListener((log) => {
console.log(`[Native ${log.level}] ${log.message}`);
});5. 后台保活服务
// 修改保活配置
await SmsSender.setConfig({
keepAliveEnabled: true,
onePixelEnabled: true,
notificationEnabled: true
});
// 启动前台服务
await SmsSender.startKeepAlive();
// 一键停止所有保活 (包含服务关闭与配置重置)
await SmsSender.stopKeepAlive();⚠️ 重要说明
- 修改权限制约:Android 4.4+ 系统规定,**只有“默认短信应用”**才能修改短信状态(如删除、标记已读)。若非默认应用,相关操作会静默失败。
- NotificationListener:监听通知服务需要用户在系统设置中手动授权,点击
SmsSender.requestNotificationListenerSettings()可直接跳转。 - 彩信附件:彩信图片通过
content://mms/part/协议提供 URI,JS 端可直接使用<Image source={{uri: ...}} />渲染。
📝 最近更新 (v0.3.0)
- ✨ 完美适配 Android TurboModule 新架构。
- 🛠️ 重构会话聚合算法,大幅提升列表加载稳定性。
- 🖼️ 补全彩信附件解析与富文本摘要逻辑。
- 📊 新增原生日志桥接系统,方便前端排查插件状态。
- 🔋 增强保活策略,支持一键彻底停用所有后台组件。
📄 License
MIT
