Flutter短信功能插件flutter_sms_plus的使用
Flutter短信功能插件flutter_sms_plus的使用
介绍
这个项目是从由babariviere创建的Flutter SMS插件(Flutter SMS)衍生而来的。
这是一个用于Flutter的短信库。
目前它仅支持Android平台(因为我不拥有Mac设备,所以无法实现iOS支持)。
开始使用
安装
首先,确保你已经熟悉Flutter开发。然后在pubspec.yaml
文件的依赖项列表中添加sms
插件:
dependencies:
flutter:
sdk: flutter
sms: ^1.0.0
运行以下命令以安装依赖:
flutter pub get
查询短信消息
导入插件并初始化查询对象
首先导入flutter_sms_plus
包,并创建一个SmsQuery
实例:
import 'package:flutter_sms_plus/flutter_sms_plus.dart';
void main() {
SmsQuery query = new SmsQuery();
}
获取所有短信消息
通过调用getAllSms
方法获取所有短信记录:
List<SmsMessage> messages = await query.getAllSms;
注意:await
关键字表示getAllSms
是一个异步操作,返回的是一个Future
。
筛选短信消息
通过querySms
方法可以根据参数筛选短信记录。例如,查询所有已发送和接收的短信:
await query.querySms({
kinds: [SmsQueryKind.Inbox, SmsQueryKind.Sent] // 查询收件箱和已发送的短信
});
你也可以根据特定联系人查询短信:
await query.querySms({
address: "1234567890" // 替换为实际的电话号码
});
获取所有会话线程
通过SmsQuery
可以获取所有会话线程:
List<SmsThread> threads = await query.getAllThreads;
每个线程都与一个联系人相关联,可以通过contact
属性访问联系人信息。
获取联系人信息
每个会话线程都有一个对应的联系人。Contact
类包含联系人的详细信息(如地址、头像、全名)。要访问这些信息,需要导入contact.dart
:
import 'package:sms/contact.dart';
void main() {
SmsQuery query = new SmsQuery();
List<SmsThread> threads = await query.getAllThreads;
Contact contact = threads.first.contact;
print(contact.address); // 打印联系人的电话号码
}
查询联系人
你可以通过联系人的电话号码查询联系人信息:
import 'package:sms/contact.dart';
void main() {
ContactQuery contacts = new ContactQuery();
Contact contact = await contacts.queryContact("1234567890"); // 替换为实际的电话号码
print(contact.fullName); // 打印联系人的全名
}
获取联系人头像
你可以获取联系人的大图或缩略图:
Uint8List fullSize = contact.photo.bytes; // 获取联系人大图
Uint8List thumbnail = contact.thumbnail.bytes; // 获取联系人缩略图
发送短信
创建发送者并发送短信
使用SmsSender
类发送短信:
import 'package:flutter_sms_plus/flutter_sms_plus.dart';
void main() {
SmsSender sender = new SmsSender();
String address = "1234567890"; // 替换为实际的电话号码
sender.sendSms(new SmsMessage(address, 'Hello flutter!'));
}
监听短信状态
你可以监听短信的状态(如已发送或已送达):
import 'package:flutter_sms_plus/flutter_sms_plus.dart';
void main() {
SmsSender sender = new SmsSender();
String address = "1234567890"; // 替换为实际的电话号码
SmsMessage message = new SmsMessage(address, 'Hello flutter!');
message.onStateChanged.listen((state) {
if (state == SmsMessageState.Sent) {
print("SMS is sent!"); // 短信已发送
} else if (state == SmsMessageState.Delivered) {
print("SMS is delivered!"); // 短信已送达
}
});
sender.sendSms(message);
}
监听所有已送达的短信
如果你想监听所有已送达的短信,可以订阅onSmsDelivered
事件:
void main() {
SmsSender sender = new SmsSender();
sender.onSmsDelivered.listen((SmsMessage message) {
print('${message.address} received your message.'); // 打印收到短信的电话号码
});
}
使用其他SIM卡发送短信
你还可以指定使用哪个SIM卡发送短信:
import 'package:flutter_sms_plus/flutter_sms_plus.dart';
void main() {
SimCardsProvider provider = new SimCardsProvider();
SimCard card = await provider.getSimCards()[0]; // 获取第一个SIM卡
SmsSender sender = new SmsSender();
SmsMessage message = new SmsMessage("1234567890", "message");
sender.sendSms(message, simCard: card); // 使用指定的SIM卡发送短信
}
注意:使用onSmsDelivered
监听器只会通知通过send()
方法发送的消息。
接收短信
如果想监听新接收到的短信,可以订阅SmsReceiver
实例:
import 'package:flutter_sms_plus/flutter_sms_plus.dart';
void main() {
SmsReceiver receiver = new SmsReceiver();
receiver.onSmsReceived.listen((SmsMessage msg) => print(msg.body)); // 打印接收到的短信内容
}
路线图
- ✅ 支持短信接收
- ✅ 支持短信发送
- ✅ 支持短信送达通知
- ✅ 支持短信查询
- ✅ 支持会话线程
- ❌ 不支持MMS接收
- ❌ 不支持MMS发送
- ❌ 不支持MMS送达通知
- ❌ 不支持MMS查询
- ❌ 不支持多SIM卡
- ✅ 支持联系人信息
- ✅ 支持联系人头像(大图、缩略图)
- ✅ 支持用户基本信息
贡献者
示例代码
完整的示例代码可以在以下链接查看: example/lib/main.dart
import 'package:flutter/widgets.dart';
import './app.dart';
void main() => runApp(new App());
更多关于Flutter短信功能插件flutter_sms_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter短信功能插件flutter_sms_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_sms_plus
是一个用于在 Flutter 应用中发送短信的插件。它提供了一个简单的接口,允许开发者直接调用设备的短信发送功能。以下是使用 flutter_sms_plus
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_sms_plus
依赖:
dependencies:
flutter:
sdk: flutter
flutter_sms_plus: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 flutter_sms_plus
包:
import 'package:flutter_sms_plus/flutter_sms_plus.dart';
3. 发送短信
使用 flutter_sms_plus
发送短信非常简单。你可以通过调用 sendSMS
方法来发送短信。
void sendSms() async {
String message = "Hello, this is a test message!";
List<String> recipients = ["+1234567890", "+0987654321"];
try {
await FlutterSmsPlus.sendSMS(
message: message,
recipients: recipients,
);
print("SMS sent successfully!");
} catch (e) {
print("Failed to send SMS: $e");
}
}
4. 处理权限
在某些设备上,发送短信可能需要用户授予权限。你可以在发送短信之前请求必要的权限。
import 'package:permission_handler/permission_handler.dart';
void requestSmsPermission() async {
var status = await Permission.sms.status;
if (!status.isGranted) {
await Permission.sms.request();
}
}
在发送短信之前调用 requestSmsPermission
方法:
void sendSmsWithPermission() async {
await requestSmsPermission();
sendSms();
}
5. 处理回调
flutter_sms_plus
插件还提供了一些回调来处理短信发送的结果。
void sendSmsWithCallback() async {
String message = "Hello, this is a test message!";
List<String> recipients = ["+1234567890", "+0987654321"];
try {
await FlutterSmsPlus.sendSMS(
message: message,
recipients: recipients,
onSMSFailed: (error) {
print("SMS failed to send: $error");
},
onSMSSent: () {
print("SMS sent successfully!");
},
);
} catch (e) {
print("Failed to send SMS: $e");
}
}
6. 处理多个收件人
你可以一次性发送短信给多个收件人,只需将多个电话号码添加到 recipients
列表中。
List<String> recipients = ["+1234567890", "+0987654321", "+1122334455"];
7. 处理异常
在发送短信时,可能会遇到各种异常情况,如权限被拒绝、设备不支持短信功能等。确保你处理了这些异常情况。
void sendSmsWithExceptionHandling() async {
String message = "Hello, this is a test message!";
List<String> recipients = ["+1234567890", "+0987654321"];
try {
await FlutterSmsPlus.sendSMS(
message: message,
recipients: recipients,
);
print("SMS sent successfully!");
} on PlatformException catch (e) {
print("PlatformException: ${e.message}");
} catch (e) {
print("Failed to send SMS: $e");
}
}