【问题标题】:Flutter Background ServiceFlutter 后台服务
【发布时间】:2021-09-16 01:16:03
【问题描述】:

您好,我正在 Flutter 中构建一个 VoIP 应用程序。即使应用程序关闭,我也使用 background_fetch 运行无头任务以便工作。侦听器正在工作,并发送通知。但是,当应用程序关闭时,带有唤醒应用程序的推送通知(例如 home.dart),我想要推送我的呼叫屏幕小部件。我看到了两个解决方案,但我不知道该怎么做:

  • 来自 background_fetch 的无头任务是独立的,因此当用户打开它时,我无法将我的服务调用数据传输到我的应用(主),所以调用丢失了...
  • 我尝试推送正确的小部件 (Router.go(/callscreen)),但它不起作用。

我能做些什么来解决这个问题?谢谢!

【问题讨论】:

    标签: flutter background-fetch flutter-local-notification


    【解决方案1】:

    您在后台使用 2 个服务,flutter-local-notification 和 background-fetch。太多了。您只能在后台使用 flutter-local-notification。看看 here.

        final newRouteName = "callScreen";//Future onSelectNotification(String payload) async 
        bool isNewRouteSameAsCurrent = false;
    
        Navigator.popUntil(context, (route) {
          if (route.settings.name == newRouteName) {
            isNewRouteSameAsCurrent = true;
          }
          return true;
        });
    
        if (!isNewRouteSameAsCurrent) {
          Navigator.of(context).push(CallScreen())
          
        }
    

    【讨论】:

    • 感谢您的回复。我明白了,但我没有使用 FCM 令牌,我需要在后台在我的 VoIP 服务器上注册。问题仅在于用户关闭应用程序时。然后我只添加一个无头任务(后台获取),即使应用程序关闭或终止也会运行。当我接到电话时,我试图推送一个特定的小部件,但是来自 local_notification 的通知启动了应用程序,并且我从无头任务中丢失了数据......
    猜你喜欢
    • 2022-12-12
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2019-01-03
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多