Flutter firebase_messaging iOS应用程序在前台运行时未收到上推通知

时间:2019-03-02 10:15:55

标签: firebase push-notification flutter

我正在使用带有“ firebase_messaging 4.0.0 + 1”的flutter。 Android版本运作良好。在iOS上,如果应用程序在后台运行,则通知会按预期运行。如果应用程序位于前台,则不会调用onMessage ...

_firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) {
    print('on message $message');
  },
  onResume: (Map<String, dynamic> message) {
    print('on resume $message');
  },
  onLaunch: (Map<String, dynamic> message) {
    print('on launch $message');
  },
);

_firebaseMessaging.requestNotificationPermissions(
    const IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.getToken().then((token) {
  print('Token: ' + token);
});

1 个答案:

答案 0 :(得分:0)

使用稳定的颤振通道时,我也面临类似的问题。当我切换到主人之后 flutter channel master 问题已经解决了。

值得一提的是,Android和iOS有不同的有效负载处理程序。

对于有效载荷:

{
    "to": "<token>",
    "notification": {
        "title": "title_test1",
        "body": "body_test_1"
    },
    "data": {
        "id": "123",
        "event": "test_event"
    }
}

data处理程序将是:

    _firebaseMessaging.configure(
        onMessage: (message) {
          if (Platform.isAndroid) {
             print("Android data handler; id: ${message['data']['id']}; event: ${message['data']['event']}");
          } else if (Platform.isIOS) {
             print("iOS data handler; id: ${message['id']}; event: ${message['event']}");
          }
        },
        onLaunch: (message) {
           ...
        },
        onResume: (message) {
           ...
        },
    );