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

时间:2020-05-08 19:36:36

标签: flutter push-notification

我正在开发一个交付应用程序,当客户下订单时,我希望供应商应用程序在屏幕上打开,并带有2个按钮来接受拒绝

当供应商单击通知(onLaunchonResume配置)时,它很容易做到,但是我希望它在没有任何交互的情况下发生。

类似于某人在whatsapp上打电话给您 FB Messenger 的情况。

这是可以实现的吗?扑朔迷离中找不到这样的东西。

4 个答案:

答案 0 :(得分: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),

这将打开安卓应用

答案 1 :(得分:0)

看看firebase_messaging文档,其中说明了如何在Optionally handle background messages上设置背景消息

答案 2 :(得分:0)

您需要使用Firebase云消息传递plug_in。它用于向Android应用发送通知。提供以下回调。

当应用打开并在前台运行时,会触发

onMessage

如果应用已关闭,但仍在后台运行,则会触发

onResume

如果应用程序完全终止,则会触发

onLaunch

示例代码

  final FirebaseMessaging _fcm = FirebaseMessaging();

 @override
    void initState() {

        // ...

        _fcm.configure(
          onMessage: (Map<String, dynamic> message) async {
            print("onMessage: $message");
            showDialog(
                context: context,
                builder: (context) => AlertDialog(
                        content: ListTile(
                        title: Text(message['notification']['title']),
                        subtitle: Text(message['notification']['body']),
                        ),
                        actions: <Widget>[
                        FlatButton(
                            child: Text('Ok'),
                            onPressed: () => Navigator.of(context).pop(),
                        ),
                    ],
                ),
            );
        },
        onLaunch: (Map<String, dynamic> message) async {
            print("onLaunch: $message");
            // You can add your logic here to open accept and decline screen 
        },
        onResume: (Map<String, dynamic> message) async {
            print("onResume: $message");
            
        },
      );
    }

您可以从Firebase控制台触发此FCM通知,也可以使用CURL。

for more info

答案 3 :(得分:-1)

对于“文档”,“通知”来自您的应用,无论是前台还是后台。 但是在这些背景情况下:通知会发送到设备的系统托盘,而数据有效载荷会在启动器活动的意图之外传递。

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

的帮助下
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");
            
        },
);