软件包: flutter_local_notifications 在瞬息万变的移动应用世界中,用户参与度(user engagement) 就是一切。
您可以构建最漂亮的界面、最精简的后端,甚至是功能最具创新性的特性------但如果您的用户忘记打开您的应用,这一切都会渐渐淡去。
这就是通知(notifications) 如此重要的原因。
欢迎关注微信公众号:OpenFlutter,感谢
它们提醒、警示并重新吸引用户------将偶尔的访客转变为忠实的应用用户。
而在 Flutter 中,获得这种能力的最简单方法 就是通过最广泛采用的软件包之一:flutter_local_notifications
。
📦 什么是 flutter_local_notifications
?
flutter_local_notifications
软件包是一个强大的插件 ,用于在本地 显示通知,支持 Android, iOS, macOS, 和 Linux --- 即使您的应用没有运行。
与推送通知(需要后端和 Firebase 设置)不同,本地通知是直接在您的应用内部 触发的------这使得它们更快、更简单,并且支持离线使用。
您可以使用它来实现:
- 🕒 为即将到来的事件安排提醒
- 🏋️ 通知用户每日目标的完成情况
- 💊 提醒用户服药
- 🛒 提醒他们有关已保存的购物车或优惠
- 📅 创建闹钟、计时器和每日任务
它轻量级、可定制,并且可以与几乎任何 Flutter 应用平滑集成。
⚙️ 安装软件包
在您的 pubspec.yaml
文件中添加依赖项:
yml
dependencies:
flutter_local_notifications: ^17.2.0
然后运行
bash
flutter pub get
直接运行这个命令也行:
csharp
flutter pub add flutter_local_notifications
这将安装此插件,并为 Android 和 iOS 平台做好准备。
🚀 初始设置
在显示通知之前,您需要初始化(initialize) 该插件------这通常在您的 main.dart
文件中完成。
dart
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
void main() async {
WidgetsFlutterBinding.ensureInitialized();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const InitializationSettings initializationSettings =
InitializationSettings(android: initializationSettingsAndroid);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
runApp(MyApp());
}
这项设置确保了您的应用一经启动,就准备好发送通知了。
🛎️ 显示一个简单的通知
这是最简单的示例------显示一个即时通知:
csharp
Future<void> showNotification() async {
const AndroidNotificationDetails androidDetails =
AndroidNotificationDetails('channelId', 'channelName',
importance: Importance.high, priority: Priority.high);
const NotificationDetails generalNotificationDetails =
NotificationDetails(android: androidDetails);
await flutterLocalNotificationsPlugin.show(
0,
'Hey there!',
'Welcome back to our app 🎉',
generalNotificationDetails,
);
}
这就是全部了------您的第一个通知已上线!
您可以在任何地方(按钮按下、应用启动等)运行此方法,以即时触发通知。
🕓 安排通知(Scheduling Notifications)
想要在特定时间发送通知吗?
例如,每天早上 9 点的提醒------这很简单:
dart
import 'package:timezone/timezone.dart' as tz;
Future<void> scheduleDailyNotification() async {
await flutterLocalNotificationsPlugin.zonedSchedule(
0,
'Daily Reminder',
'Don't forget to check today's updates!',
tz.TZDateTime.now(tz.local).add(const Duration(seconds: 10)),
const NotificationDetails(
android: AndroidNotificationDetails('daily', 'Daily Notifications'),
),
androidAllowWhileIdle: true,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
matchDateTimeComponents: DateTimeComponents.time,
);
}
您可以为任何自定义日期 或重复的时间模式安排通知。
它非常适用于像习惯追踪器 、日程规划器 和效率工具这类应用。
🧠 为什么要使用本地通知?
-
💡 离线就绪
与推送通知不同,本地通知不需要互联网连接。您可以随时随地触发它们------即使您的应用在后台运行。
-
⚙️ 完全可定制
您可以自定义所有内容------图标、震动模式、声音、重要性级别、颜色等等。这意味着您的通知不仅仅是提醒用户,它们更代表了您的品牌形象。
-
🔐 隐私优先
所有通知都在用户的设备上生成和管理,不涉及服务器数据交换。这对注重隐私的应用来说是一个巨大的优势。
-
🧭 高参与度
事实证明,定时通知能通过在正确的时间提醒用户来提高用户留存率------这是许多顶级应用久经考验的增长策略。
🧩 您会喜欢的进阶功能
flutter_local_notifications
软件包的功能远不止基本的警报。
以下是一些让它脱颖而出的功能:
🔁 重复通知
dart
await flutterLocalNotificationsPlugin.periodicallyShow(
0,
'Hydration Reminder 💧',
'Drink a glass of water!',
RepeatInterval.hourly,
const NotificationDetails(
android: AndroidNotificationDetails('repeating', 'Repeating Notifications'),
),
);
🖼️ 大图样式通知 (Big Picture Style Notifications)
显示带有图像 或扩展文本的富通知:
dart
const BigPictureStyleInformation bigPictureStyleInformation =
BigPictureStyleInformation(
DrawableResourceAndroidBitmap('promo_image'),
contentTitle: 'Special Offer 🎁',
summaryText: 'Tap to claim your discount!',
);
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails('promo', 'Promotions',
styleInformation: bigPictureStyleInformation);
📲 动作按钮 (Action Buttons)
让用户直接从通知中进行互动------打开应用界面、标记任务完成或即时回复。
⏰ 定时闹钟 (Scheduled Alarms)
非常适用于冥想计时器、服药提醒和日常规划应用等。
⚠️ 需要避免的常见错误
-
❌ 忘记在使用插件前对其进行初始化。
-
❌ 使用错误的通道 ID------Android 通知要求通道名称保持一致。
-
❌ 未能在 iOS/macOS 上正确处理权限。
- → 在安排通知之前,务必请求通知权限。
-
❌ 仅在模拟器上进行测试------通知可能需要物理设备测试才能正确显示。
🧭 真实世界用例
- 💪 健身应用: ⏰ 锻炼提醒
- 📅 效率应用: ⏰ 待办事项和任务提醒
- 🛍️ 电子商务: ⏰ 促销活动通知
- 🧘 冥想应用: ⏰ 每日正念提醒
- 💬 消息应用: ⏰ 消息接收提醒
本地通知可以极大地改变用户与您应用的互动方式------巧妙地提高每日留存率,并改善用户习惯的养成行为。
🧾 最终总结
通知不仅仅是警报------它们关乎连接。
它们帮助您的应用在正确的时刻与用户对话,建立信任和使用习惯。
flutter_local_notifications
软件包 是任何 Flutter 开发人员工具包中的必备工具。它轻量级、跨平台,并经过了数千款应用的实战检验。
如果您希望您的应用即使在关闭状态下也感觉充满活力和吸引力------这个软件包是您的不二之选。
✨ 总结要点
- 🔔 离线显示本地通知
- ⏰ 安排、重复和自定义警报
- 🧱 与任何应用类型无缝集成
- 🧠 提高用户参与度和留存率
只需几行代码,您就可以永久改变应用的参与度策略。
💡 专业提示: 将 flutter_local_notifications
与 timezone
和 shared_preferences
结合使用,可以创建一个完全离线、个性化的提醒系统------这对于健康、金融和效率应用来说非常完美。