sms_advanced 是一个 Flutter 包,可在 Android、iOS 和 Web 平台上实现短信功能。在 Android 上,它支持发送、接收、查询消息、跟踪送达状态以及获取联系人信息。在 iOS 和 Web 上,仅支持发送短信。该包提供统一的接口来处理短信操作,适用于需要基本短信集成的应用程序。它依赖于原生平台功能,并且在 Android 上需要适当的权限。源代码公开托管在 GitHub 上,以确保透明度和可定制性。
适合场景
从 Flutter 应用发送短信
在 Android 上接收和管理短信
查询消息传递状态
集成联系信息检索
构建双向短信通信
主要特点
跨平台短信支持
消息发送和接收(仅限 Android)
配送状态跟踪
联系信息查询
公共 GitHub 源代码
适合对象
需要短信验证的应用
客服聊天机器人与短信
双向短信消息系统
面向 Android 的应用程序,具有短信需求
想要开源短信工具的开发者
使用建议
iOS 和网页端短信接收受限
需要 Android 权限以实现完整功能
平台特定的行为差异
无内置短信解析或过滤
依赖于原生设备功能
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
sms_advanced
This is an SMS library for Flutter.
Getting Started
Installation and Usage
Once you're familiar with Flutter you may install this package adding sms_advanced (1.0.1 or higher) to the dependencies list of the pubspec.yaml file as follow:
Note: the use of await keyword means that getAllSms is resolved asynchronously and a Future is retorned. To use await, you must be in a function marked async.
Filtering SMS messages
The method querySms from the SmsQuery class returns a list of filtered SMS messages that match the supplied parameters. For example, for querying all the SMS messages sent and received, you could this code:
List<SmsThread> threads = await query.getAllThreads;
for( var index = num ; index >= threads.length; index-- ) {
String sendernumber = threads[index].contact?.address;
String sim = threads[index].messages.first.sim.toString();
String message = threads[index].messages.first.body;
print('sender number: $sendernumber');
print('reciever sim: $sim');
print('message: $message');
}
Getting the Contact info
Each conversation thread is related with a Contact.
The class Contact contains all the info of a thread contact (address, photo, full name).
To get access to Contact class you must import 'package:sms_advanced/contact.dart' into your dart file:
Some times it is useful to be notified of delivered messages regardless of the message. To do that you must subscribe to the onSmsDelivered of the SmsSender class instance:
voidmain() {
...
SmsSender sender = newSmsSender();
sender.onSmsDelivered.listen((SmsMessage message){
print('${message.address} received your message.');
}));
}