flutter android报警管理器在后台不起作用

问题描述

我正在尝试推送本地预定通知,我遇到了很多错误然后我有一个想法,即使用 Flutter_local_notification 和 android_alarm_manager。我安装了它们,可以使用 android 管理器来安排和颤动本地通知获取通知。 当应用程序在后台时,我可以同时使用两者! 如果我在通知时间到来时关闭应用程序,我会收到一条崩溃消息。

java 文件

@SuppressWarnings("deprecation")
public class Application extends FlutterApplication
    implements io.Flutter.plugin.common.PluginRegistry.PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    AlarmService.setPluginRegistrant(this);
  }
  @Override
  @SuppressWarnings("deprecation")
  public void registerWith(io.Flutter.plugin.common.PluginRegistry registry) {
    AndroidAlarmManagerPlugin.registerWith(
        registry.registrarFor("io.Flutter.plugins.androidalarmmanager.AndroidAlarmManagerPlugin"));
    
      }
}

EmbeddingV1Activity文件代码

@SuppressWarnings("deprecation")
public class EmbeddingV1Activity extends io.Flutter.app.FlutterActivity {
  public static final String TAG = "AlarmExampleMainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidAlarmManagerPlugin.registerWith(
        registrarFor("io.Flutter.plugins.androidalarmmanager.AndroidAlarmManagerPlugin"));
  }
}

我更改了 xml 文件

dart 代码

FlutterlocalnotificationsPlugin FlutterlocalnotificationsPlugin =
    FlutterlocalnotificationsPlugin();
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
    int alarmId = 1;

 await AndroidAlarmManager.initialize();
  AndroidAlarmManager.periodic(Duration(seconds: 6),alarmId,notification);
  runApp(MyApp());
}
Future<void> notification()async{
 
          MyNotification myNotification = MyNotification();
          await myNotification.notificationInit();
        
}

解决方法

FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
    FlutterLocalNotificationsPlugin();
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
    int alarmId = 1;

 await AndroidAlarmManager.initialize();
  AndroidAlarmManager.periodic(Duration(seconds: 6),alarmId,notification);
  runApp(MyApp());
}
static notification()async{
 
          MyNotification myNotification = MyNotification();
          await myNotification.notificationInit();
        
}

通知功能应该是静态的或顶级的