每天安排不同的通知 Flutter

Posted

技术标签:

【中文标题】每天安排不同的通知 Flutter【英文标题】:Scheduling different notifications on each day Flutter 【发布时间】:2020-04-30 12:21:27 【问题描述】:

我是 Flutter 的新手。我正在开发一个带有通知的应用程序,通知将在一天的不同时间显示。

例如:(3:25 AM、12:24 PM、17:22 PM、19:52 PM、21:02 PM)。

这些时间会因日期而异。时间与相应的日期一起存储在数据库中。即使应用已终止且未使用,这些通知也应显示。

问题:

    在午夜左右获取新的一天的新数据。 (例如,在上午 00:00 左右,我的应用应重新安排所有昨天的通知,以新的时间通知用户正确的数据) 我正在使用flutter_local_notifications 来安排通知。有时它不会触发通知(如果计划的时间差超过 2 小时)。这就是为什么我要安排最快的通知(例如,如果通知应该在凌晨 3:25 出现,那么我想在 30 分钟前安排通知)。但我不确定是否可行。

我试过了。

    background_fetch 用于与 DB 同步时间,但我无法使其工作

    flutter_local_notifications 用于显示通知

请考虑我想显示通知的情况,即使我的应用程序没有运行或在后台,并且我想同时支持 androidios

欢迎任何帮助或建议。提前致谢

【问题讨论】:

【参考方案1】:

对于那些面临同样问题的人,我设法通过以下配置解决了我的问题

Future<void> initPlatformState() async 
    var config = BackgroundFetchConfig(
      minimumFetchInterval: 15,
      forceAlarmManager: true,
      stopOnTerminate: false,
      startOnBoot: true,
      enableHeadless: true,
      requiresBatteryNotLow: false,
      requiresCharging: false,
      requiresStorageNotLow: false,
      requiresDeviceIdle: false,
      requiredNetworkType: NetworkType.NONE,
    );
    BackgroundFetch.configure(config, _onBackgroundFetch);
  

Github repo 查看工作代码。 不要忘记支持,如果答案有帮助,请点赞答案并在github上给一个star

【讨论】:

我已经尝试过后台提取但无法这样做,但您的示例运行良好,谢谢。只是为了通知在 build.gradle 中添加这个用于后台 fetch maven // [required] background_fetch url "$project(':background_fetch').projectDir/libs" 如果您能亲自与我联系并详细解释一下,我也非常感激,衷心感谢! 您有什么不清楚的地方?您是否按照插件自述文件中的所有步骤操作? 糟糕的解决方案。这将以 MINIMUM 每 15 分钟获取一次。这对于实时聊天应用程序来说是不可接受的。什么,有人给我发了一条聊天消息,我应该等 15 分钟才能收到通知? @busuu 您需要查看服务器推送通知,它是本地推送通知,您需要了解它们之间的区别并相应地实施它们【参考方案2】:

如果你使用 php 连接到你的数据库,那么你实际上可以使用 PHP 来安排时间,然后发送通知到 Flutter,就像我在我的应用程序中所做的那样,我的应用程序是关于在交付订单时发送通知状态更改给用户,所以我在数据库中创建了一个表并将其转换为我使用工作管理器包和颤振本地通知包在我的颤振应用程序中调用的 API,将在本周末将视频上传到 youtube 并在此处发布链接你看看...或者你能告诉我你的数据库,你用什么来连接等等

这是 youtube 视频 https://youtu.be/b6CTeqJnmN0

【讨论】:

东西存储在我的本地数据库中。如果您的解决方案适合我的情况,那么我会选择 Firebase 推送通知。但即使手机没有互联网连接,我也想显示通知。此时您的解决方案将失败。但无论如何,感谢您分享解决问题的方法。还有其他想法吗? 是的,一直在考虑你所说的,这就是我想到的,我不知道本地存储或你想如何连接以获得时间,但我认为是第一尝试检查我添加到关于如何使用工作管理器的回复中的 youtube,我认为在工作管理器中调用你的飞镖代码应该可以工作,就像我在视频中给出的示例一样,但你的将连接到本地存储,甚至如果您没有连接数据库,并且您希望每隔 1 小时或 35 分钟或您喜欢的任何分钟通知一次,请使用相同的步骤,只需编写一个 dart 代码即可获取当前时间和 计算你想要的Minn然后调用通知函数显示。我希望你得到我,查看我上传的 youtube 视频。 我在 youtube 上看到了你的视频。我可以解决两个问题。首先,如果应用程序从最近的应用程序选项卡中清除,您在视频上编写的代码将无法在 Android 小米、OPPO 中运行。您应该有一个解决方法,当应用程序被杀死或终止时,它在 iOS 上将无法正常工作。但我希望它可以在两个平台上完美运行

以上是关于每天安排不同的通知 Flutter的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 使用不同的文本安排重复通知

安排本地通知从明天开始每天重复

每天在准确的时间安排通知

安排通知从下周开始每天执行

如何为以下场景安排本地通知?

安排通知每天在 X h:Y s 触发并重定向到特定视图