android Flutter计划本地通知

ryhaxcpt  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(159)

我已经使用flutterLocalNotificationsPlugin.zonedSchedule()来安排本地通知和它的工作很好。
在我想检查应用程序是否在前台或应用程序是否在后台之前发送此计划的本地通知时。
如果Flutter应用程序正在运行意味着应用程序是前台,所以我希望该计划通知为在应用程序通知,如果关闭意味着应用程序是在后台比发送计划通知为实际通知

我已经在iOS中使用Flutter中的本机Swift代码完成了此功能,但我如何才能为Android侧代码做到这一点?

h9a6wy2h

h9a6wy2h1#

这可以在没有本机代码的帮助下关闭,并适用于ios和android(可能需要对代码进行少量修改)。
首先,我们创建一个生命周期处理程序类,它将扩展WidgetsBindingObserver类。简而言之,这个类在flutter中用于通知对象环境中的变化。要了解更多信息,请访问:https://api.flutter.dev/flutter/widgets/WidgetsBindingObserver-class.html

  1. import 'package:flutter/material.dart';
  2. final lifecycleEventHandler = LifecycleEventHandler._();
  3. class LifecycleEventHandler extends WidgetsBindingObserver {
  4. bool inBackground = true;
  5. LifecycleEventHandler._();
  6. initialise() {
  7. WidgetsBinding.instance.addObserver(lifecycleEventHandler);
  8. }
  9. @override
  10. Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
  11. switch (state) {
  12. case AppLifecycleState.resumed:
  13. inBackground = false;
  14. print('App is in foreground');
  15. break;
  16. case AppLifecycleState.inactive:
  17. case AppLifecycleState.paused:
  18. case AppLifecycleState.detached:
  19. inBackground = true;
  20. print('App is in background');
  21. break;
  22. }
  23. }
  24. }

字符串
现在,我们将在任何时候使用这个类来监听我们的应用程序的更改。我们可以将它添加到我们的main.dart文件中的void main()中。如果你想从应用程序的开始监听更改。

  1. lifecycleEventHandler.initialise();


调用上面的函数将观察者添加到您的应用程序。
现在,在通知函数中执行以下操作:

  1. Future showNotification() async {
  2. if (!lifecycleEventHandler.inBackground){
  3. //Show in app notification
  4. }
  5. //otherwise notification in notification tray
  6. ...
  7. }

展开查看全部

相关问题