firebase - Flutter - 后台通知在 iOS 中不起作用

标签 firebase flutter background messaging payload

我正在 Flutter 中创建公共(public)聊天应用,当我触发时,我在 iOS无法接收后台通知来 self 的云函数的方法admin.messaging().send(payload)

这是我在云函数中的负载:

var payload = {
  notification: {
    title: `My Title`,
    body: `My message`,
  },
  android: { priority: "high" },
  apns: {
    payload: {
      aps: {
        contentAvailable: true,
      },
    },
    headers: {
      "apns-push-type": "background",
      "apns-priority": "10",
      "apns-topic": "io.flutter.plugins.firebase.messaging", // bundle identifier
    },
  },
  topic: `mytopic`,
};

我尝试了一堆不同的有效负载:

  • 我尝试了通知 + 数据
  • 我只尝试了数据(没有通知)(在这种情况下,我必须在本地显示通知,但它不起作用,因为函数 FirebaseMessaging.onBackgroundMessage 从未被调用)
  • 我尝试将“apns-priority”更改为 5
  • 我尝试使用 token 而不是主题

感谢官方文档,我仔细设置了所有需要配置的内容: https://firebase.flutter.dev/docs/messaging/usage/

我还检查了 Github 问题,例如: 1041 , 6112 , 5988 , 1644 , 4300 , 4097

什么在起作用:

  • 从 Firebase 控制台(在“云消息传递”部分中)发送时,Android 和 iOS 上的后台和前台通知
  • 从 Cloud Function 发送时,仅限 Android 上的后台和前台通知
  • iOS 上的前台通知(从 Cloud Function 发送时)

什么不起作用:

  • iOS 上的后台通知从 Cloud Function 发送时
  • 当应用终止时,它也无法运行。

最佳答案

我终于解决了这个问题! 🎉

我只是删除了有效负载中的行 "apns-push-type": "background" 。 现在它正在工作。

看起来“apns-topic”行也没有用。

这是我的最终有效负载:

 var payload = {
    notification: {
      title: `# ${context.params.passion}`,
      body: `${newMsg["senderPseudo"]} ${
        type == "image" ? "a envoyé une image." : `: ${newMsg["message"]}`
      }`,
    },
    // Set Android priority to "high"
    android: {
      priority: "high",
    },
    // Add APNS (Apple) config
    apns: {
      payload: {
        aps: {
          contentAvailable: true,
        },
      },
      headers: {
        //"apns-push-type": "background", // This line prevents background notifications to be displayed
        "apns-priority": "10",
      },
    },
    token: "dnqTQVso60GfnnuOjHv8_e:APA91bElr-K3xkQMdYHX8VMrMZNCYCjO4zJlGseRh25AS_GT7cg9zlOGdQl4KXvr88ypeWjZjrPzrLRHitsQ-JKQK057ZQb_36c_lfsNjHXbYMYI2iS3jV_HGWf7Ene-ZlPvOb0aRr8u"
 };

关于firebase - Flutter - 后台通知在 iOS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68040300/

相关文章:

android - 将 Firebase 依赖项添加到 Android 项目的 buildSrc 会中断构建

android - 如何停止 Firebase 数据库无限循环

IOS 上的 Flutter 版本停留在 1.0.0

flutter - 如何在没有错误的情况下缩小 parent 忽略 child 的大小

php - Android FCM 推送通知使用的 key 在哪里?

android - 使用 Firebase push() 方法为用户提供唯一的子键值

flutter - 如何防止向一个方向滚动?

javascript - 使用 javascript 调整 Image() 对象大小不起作用

html - CSS 过渡不适用于背景

ios - 如何在 ios 中保持套接字事件?