未调用 Firebase 云消息传递 onDeletedMessages()

Firebase Cloud Messaging onDeletedMessages() not called

我的 Android 应用程序使用 Firebase Cloud Messaging 发送数据消息,并且运行良好。现在我正在实施 onDeletedMessages(),但我无法让我的测试用例调用它。正在发送的消息是:

{
  "priority": "high",
  "to": "/topics/test",
  "time_to_live": 0,
  "data": {
    "sites": [
      {
        "plusMD5": "959d4d57d19a2047a2e75fccfb9a1512",
        "plus": [
          "abcderf:r"
        ],
        "site": "computers"
      }
    ],
    "time": 1500660817
  }
}

测试:

  1. 将设备设置为飞行模式
  2. 发送数据信息
  3. 稍等一下(15 秒左右)
  4. 关闭飞行模式

现在设备再次具有网络连接,我希望调用 onDeletedMessages(),但事实并非如此。我是否误解了 FCM 如何处理已删除和丢失的消息,或者可能发生了其他事情?谢谢!

罗布

有意思..

这里的文档:https://firebase.google.com/docs/cloud-messaging/android/receive#override-ondeletedmessages

表示在某些情况下,FCM 可能无法传递消息。如果连接时特定设备上的应用程序有太多待处理的消息 (>100),或者如果该设备超过一个月未连接到 FCM,就会发生这种情况。在这些情况下,您可能会收到 FirebaseMessagingService.onDeletedMessages()

的回调

所以你需要满足这两个条件:

  1. 需要在设备离线时发送 (>100) 通知
  2. 开启飞行模式1个多月

为此,您只需要覆盖扩展 FirebaseMessagingService 的 firebasenotification class 中的 onDeletedMessages。

@Override
public void onDeletedMessages() {
    super.onDeletedMessages();
}

为了测试这个,工作或不从 firebase 云消息控制台发送通知,到期时间为 1 分钟(在附加选项中)