Flutter短信发送插件sms的使用
Flutter短信发送插件sms的使用
概述
这是为Flutter设计的一个短信库。目前仅支持Android平台(因为我不拥有Mac设备,所以无法支持iOS)。
开始使用
如果你已经熟悉了Flutter的基本操作,可以通过在pubspec.yaml
文件的依赖项中添加sms
插件来开始使用。确保版本号为0.2.0
或更高。
添加依赖
在pubspec.yaml
文件中添加以下内容:
dependencies:
flutter:
sdk: flutter
sms: ^0.2.0
然后运行以下命令以获取依赖:
flutter packages get
查询短信消息
首先,导入sms
包并创建一个SmsQuery
实例。
import 'package:sms/sms.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: getContactAddress()
});
获取所有线程对话
通过SmsQuery
还可以获取所有对话线程:
List<SmsThread> threads = await query.getAllThreads;
获取联系人信息
每个对话线程都与一个联系人相关联。Contact
类包含联系人的详细信息(如地址、头像、全名)。要访问Contact
类,需要导入contact.dart
。
import 'package:sms/contact.dart';
void main() {
...
Contact contact = threads.first.contact;
print(contact.address);
}
查询联系人
可以通过联系人地址查询联系人信息:
import 'package:sms/contact.dart';
void main() {
ContactQuery contacts = new ContactQuery();
Contact contact = await contacts.queryContact(someAddress());
print(contact.fullName);
}
获取联系人头像
可以获取联系人的完整大小或缩略图头像:
Uint8List fullSize = contact.photo.bytes;
Uint8List thumbnail = contact.thumbnail.bytes;
获取用户基本信息
有时需要获取手机主人的基本信息,比如头像、地址等:
import 'package:sms/contact.dart';
UserProfileProvider provider = new UserProfileProvider();
UserProfile profile = await provider.getUserProfile();
print(profile.fullName);
发送短信
基本发送短信
创建一个SmsSender
实例并发送短信:
import 'package:sms/sms.dart';
void main() {
SmsSender sender = new SmsSender();
String address = someAddress();
...
sender.sendSms(new SmsMessage(address, 'Hello flutter!'));
}
监听短信状态
可以通过监听消息的状态来获取发送和投递的反馈:
import 'package:sms/sms.dart';
void main() {
SmsSender sender = new SmsSender();
String address = someAddress();
...
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卡发送短信:
void main() {
SimCardsProvider provider = new SimCardsProvider();
SimCard card = await provider.getSimCards()[0];
SmsSender sender = new SmsSender();
SmsMessage message = new SmsMessage("address", "message");
sender.sendSMS(message, simCard: card);
}
注意:使用onSmsDelivered
事件只会通知通过SmsSender.send()
发送的消息。
接收短信
如果想接收新短信通知,可以订阅SmsReceiver
实例:
import 'package:sms/sms.dart';
void main() {
SmsReceiver receiver = new SmsReceiver();
receiver.onSmsReceived.listen((SmsMessage msg) => print(msg.body));
}
路线图
- ✅ 支持短信接收
- ✅ 支持短信发送
- ✅ 支持短信投递状态
- ✅ 支持短信查询
- ✅ 支持线程对话
- ❌ 不支持MMS接收
- ❌ 不支持MMS发送
- ❌ 不支持MMS投递
- ❌ 不支持MMS查询
- ❌ 不支持多SIM卡
- ✅ 支持联系人查询
- ✅ 支持联系人头像(完整大小、缩略图)
- ✅ 支持用户基本信息
贡献者
- babariviere
- joanpablo
- saifulfrank
示例代码
以下是一个完整的示例代码,展示了如何使用插件的基本功能:
import 'package:flutter/material.dart';
import 'package:sms/sms.dart';
import 'package:sms/contact.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Flutter SMS Example')),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 初始化短信查询器
SmsQuery query = new SmsQuery();
// 获取所有短信
List<SmsMessage> messages = await query.getAllSms;
// 打印所有短信内容
messages.forEach((message) {
print('From: ${message.address}, Body: ${message.body}');
});
// 初始化短信发送器
SmsSender sender = new SmsSender();
String address = "1234567890"; // 替换为目标电话号码
SmsMessage smsMessage = new SmsMessage(address, 'Hello Flutter!');
// 发送短信并监听状态
smsMessage.onStateChanged.listen((state) {
if (state == SmsMessageState.Sent) {
print("SMS is sent!");
} else if (state == SmsMessageState.Delivered) {
print("SMS is delivered!");
}
});
// 发送短信
sender.sendSms(smsMessage);
},
child: Text('Send SMS'),
),
),
),
);
}
}
更多关于Flutter短信发送插件sms的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter短信发送插件sms的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,你可以使用 sms
插件来发送短信。sms
插件提供了一个简单的接口来发送短信,并且支持在Android和iOS平台上使用。以下是如何使用 sms
插件发送短信的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 sms
插件的依赖:
dependencies:
flutter:
sdk: flutter
sms: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的Dart文件中导入 sms
插件:
import 'package:sms/sms.dart';
3. 发送短信
你可以使用 SmsSender
类来发送短信。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:sms/sms.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('SMS Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
sendSms();
},
child: Text('Send SMS'),
),
),
),
);
}
void sendSms() {
SmsSender sender = SmsSender();
String address = '1234567890'; // 接收者的电话号码
String message = 'Hello, this is a test message!'; // 短信内容
sender.sendSms(SmsMessage(address, message)).then((result) {
print('SMS sent: $result');
}).catchError((error) {
print('Failed to send SMS: $error');
});
}
}
4. 处理权限
在Android平台上,发送短信需要 SEND_SMS
权限。你需要在 AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.SEND_SMS" />
在iOS平台上,发送短信不需要额外的权限,但你需要确保你的应用已经正确配置了相关的功能。
5. 运行应用
现在你可以运行你的Flutter应用,并点击按钮来发送短信。
注意事项
- 在Android上,发送短信可能会产生费用,具体取决于用户的运营商和套餐。
- 在iOS上,发送短信会使用系统默认的短信应用,用户需要手动确认发送。
其他功能
sms
插件还提供了其他功能,例如接收短信、查询短信等。你可以查看插件的官方文档来了解更多信息。
示例代码
以下是一个完整的示例代码,展示了如何使用 sms
插件发送短信:
import 'package:flutter/material.dart';
import 'package:sms/sms.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('SMS Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
sendSms();
},
child: Text('Send SMS'),
),
),
),
);
}
void sendSms() {
SmsSender sender = SmsSender();
String address = '1234567890'; // 接收者的电话号码
String message = 'Hello, this is a test message!'; // 短信内容
sender.sendSms(SmsMessage(address, message)).then((result) {
print('SMS sent: $result');
}).catchError((error) {
print('Failed to send SMS: $error');
});
}
}