【问题标题】:Flutter / Firebase push notifications not fired when app is closed关闭应用程序时未触发 Flutter / Firebase 推送通知
【发布时间】:2022-03-03 18:44:18
【问题描述】:

我正在使用 firebase 消息向 Flutter 应用程序中的用户发送通知,当我从邮递员发送通知时一切正常(通知始终显示),但是当我想从后端服务器发送相同的通知时,通知未显示在设备上。在服务器日志中,我可以看到通知已成功发送,如下所示:

{
    "multicast_id": XXXXXXXXXXXXX,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "XXXXXXXXXXXXX"
        }
    ]
}

这意味着它已正确发送到消息服务,但推送通知未在设备上触发。

有时当我打开应用程序(转到应用程序的前台)时,会以某种方式显示通知,但我需要用户始终看到通知,尤其是当他们的应用程序关闭时。

我正在发送具有高优先级的通知,所以这不是问题。

任何帮助,这可能是什么潜在的问题?

我对 FCM 的要求:

发布:https://fcm.googleapis.com/fcm/send 授权:key=xxxx_MY_KEY_XXXXX 内容类型:application/json

{
    "to": "xxxxxMY_FCM_TOKEN_xxxxxx",
    "mutable_content": true,
    "content_available": true,
    "priority": "high",
    "data": {
        "content": {
            "id": 106,
            "channelKey": "remote_chann",
            "title": "Hello",
            "body": "test",
            "notificationLayout": "Messaging"
        }
    }
}

【问题讨论】:

    标签: android ios firebase flutter push-notification


    【解决方案1】:

    根据您使用 fcm 发送的数据仅发送数据对象而不是根据 fcm 发送通知对象以唤醒它,您需要将通知对象与数据对象一起发送。

    https://firebase.google.com/docs/cloud-messaging/concept-options

    【讨论】:

    • 但如果我们将通知对象与数据对象一起发送,那么它将显示 2 个通知。一种用于 FCM sdk 的通知,另一种用于我们编写的处理数据通知的代码。
    • 如果您在通知中收到通知对象,那么您必须注释掉您的代码以处理此问题,因为它由系统自动处理。
    • 但是如果我想自己处理这些自定义数据,而不是由 FCM SDK 自动处理呢?
    • 那么你必须在推送中只发送数据对象而不是通知对象然后你可以自己处理
    • 我想要这两样东西 1. 即使在应用程序被杀死后,通知也应该始终有效 2. 我不能同时发送通知和数据对象。我只能发送数据对象。
    猜你喜欢
    • 2021-06-25
    • 2021-03-08
    • 2019-09-11
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多