0

我是在日本使用 Flutter 的软件工程师。
开发一个可以在早上叫醒我的闹钟应用程序,但在执行以下操作时遇到了麻烦。
如果您能帮助我,我将不胜感激。

问题。
我想知道是否有办法在预定时间执行特定进程,即使应用程序被杀死或后台。

详情
我目前正在开发一个在指定时间发送本地通知和自定义音乐的警报应用程序。
我能够安排本地通知在指定时间发送。
但是,我找不到同时在后台运行特定进程的方法。
(这是播放用户选择的特定音乐的过程的图像)

我发现了什么确认可以使用flutter_local_notifications
在每周的指定日期和指定时间发送通知。 (执行)
flutterLocalNotificationsPlugin#zonedSchedule()

然而,在flutter_local_notifications中,并没有监听器本身来接收通知。
(有一个 onSelectNotification,但在用户点击通知栏之前它不起作用。)

库作者说没有监听器来触发这样的通知时间,
所以我决定在这个库中只使用本地通知并寻找另一个库来代替后台处理。
https://github.com/MaikuB/flutter_local_notifications/issues/1201

我发现background_fetchWorkManager特别有用,但我也放弃了使用这些库。
原因是上面两个库只能在15分钟的意义上执行,如下图,由于iOS的限制,我怀疑该过程无法在预期的时间执行。

workManagaer
https://pub.dev/packages/workmanager#customisation-android-only

// Periodic task registration
Workmanager().registerPeriodicTask(
    "2", 
    "simplePeriodicTask", 
    // When no frequency is provided the default 15 minutes is set.
    // Minimum frequency is 15 min. Android will automatically change your frequency to 15 min if you have configured a lower frequency.
    If you have configured a lower frequency. frequency: Duration(hours: 1),
)

background_fetch

Background Fetch is a very simple plugin which will awaken an app in the background about every 15 minutes, providing a short period of background running-time. This plugin will execute your provided callbackFn whenever a background-fetch event occurs.

我认为做到这一点的唯一方法是使用 MethodChannel 为 Flutter 中的每个操作系统编写和执行本机代码。
我想知道是否有一种方法可以在指定的时间执行预定的进程,即使应用程序在 Flutter 中处于 kill 或 background 状态,即使它使用 MethodChannel。

对不起它这么久。请告诉我。
非常感谢

4

1 回答 1

0

为后台进程提供的唯一文档(警报是引用的示例之一)指出了媒体上的一篇文章: https ://docs.flutter.dev/development/packages-and-plugins/background-processes

于 2021-12-21T14:08:03.167 回答