使用自定义行为覆盖 web Firebase 云消息传递后台通知

Override web Firebase cloud messaging background notification with custom behavior

我有一个 Firebase 网络项目,其中有一个处理后台通知的服务工作者。默认情况下,Firebase 会显示发送给用户的任何后台通知。我想防止这种情况发生,因此我可以根据收到的消息显示不同的消息。我试过这样做:

import { FirebaseOptions, initializeApp } from 'firebase/app';
import { getMessaging, onBackgroundMessage } from 'firebase/messaging/sw';

const firebaseOptions: FirebaseOptions = {
    // Firebase config
};

initializeApp(firebaseOptions);

const messaging = getMessaging();

onBackgroundMessage(messaging, () => {
    self.registration.showNotification('Overriden message');
});

现在,设备同时显示从服务器收到的消息和覆盖的消息。我希望它只显示覆盖的消息,以便我可以自定义行为。我该怎么做?

显然,您的 HTTP 发送请求中的“通知”字段优先于服务工作者中指定的任何值 (source)

尝试使用数据字段封装请求中的通知字段,以便

"notification": {
  "title": "hello",
  "body": "world"
}

变为:

"data": {
  "notification": {
    "title": "hello",
    "body": "world"
  }
}

如果这对您不起作用,您可以尝试其他一些解决方法 here