Flutter - 从 FCM 收到通知时自动运行应用程序(无需单击它)

Posted

技术标签:

【中文标题】Flutter - 从 FCM 收到通知时自动运行应用程序(无需单击它)【英文标题】:Flutter - Automatically run the application when notification received from FCM (without clicking it) 【发布时间】:2020-08-24 11:03:57 【问题描述】:

我正在开发一个交付应用程序,当客户订购一些东西时,我希望供应商应用程序在屏幕上打开两个按钮来接受拒绝订单。

当供应商点击通知时很容易做到(onLaunchonResume 配置),但我希望它发生没有他们的互动。

比如有人在whatsappFB messanger上给你打电话。

这可以实现吗?在flutter中找不到这样的东西。

【问题讨论】:

为什么当应用程序处于后台时,您不能将这两个操作作为通知的一部分提供?前台你会触发来自 onMessageReceived 的警报。 这里建议,创建一个广播接收器来读取通知。如果从您的产品收到通知,您可以打开您的应用程序并在启动时显示警报。但是您的供应商应该允许您阅读通知。 我也在找这个,你有什么了解吗? 我认为这在 ios (***.com/questions/22930259/…) 上是不可能的,我怀疑这在 android 上是可能的。无论如何,这是一种糟糕的用户体验,我建议您继续要求用户交互,除非您在应用中实现直接调用者。 【参考方案1】:

https://pub.dev/packages/flutter_local_notifications

      AndroidNotificationDetails(
                      'full screen channel id',
                      'full screen channel name',
                      'full screen channel description',
                      priority: Priority.high,
                      importance: Importance.high,
                      fullScreenIntent: true),

这将打开安卓应用

【讨论】:

【参考方案2】:

注意:这是实现 FCM 通知的旧方法,

至于文档,通知来自您的应用程序,无论是在前台还是后台。 但是在这些背景的情况下:通知会发送到设备的系统托盘,数据负载会在启动器 Activity 的意图的附加内容中发送。

前景案例:您可以导航到任何屏幕。在

的帮助下
final FirebaseMessaging fcmMessaging = FirebaseMessaging();
 
fcmMessaging.configure(

onMessage: (Map<String, dynamic> message) async 
            print("onMessage: $message");
        ,

onLaunch: (Map<String, dynamic> message) async 
            print("onLaunch: $message");
            // your code 
        ,

onResume: (Map<String, dynamic> message) async 
            print("onResume: $message");
            
        ,
);

【讨论】:

【参考方案3】:

查看firebase_messaging 文档,其中解释了如何在Optionally handle background messages 上设置后台消息

【讨论】:

以上是关于Flutter - 从 FCM 收到通知时自动运行应用程序(无需单击它)的主要内容,如果未能解决你的问题,请参考以下文章

未收到 Flutter FCM IOS 静默(仅数据)通知

Flutter 按主题使用 FCM 推送通知

限制 Flutter 中特定用户的 FCM 通知

Flutter:如何使用 fcm 以编程方式发送推送通知

锁定屏幕上的 FCM 通知 Flutter

单击 FCM 通知时,Flutter Notification 挂起的意图被取消