簡體   English   中英

Firebase 雲消息傳遞:防止 javascript 客戶端中的后台通知

[英]Firebase Cloud Messaging: Prevent background notifications in javascript client

我有一個實時比分顯示網站,它是用 Google 的頻道 API 實現的,用於將實時比分更新推送到瀏覽器。 由於 Google 正在關閉通道 API,因此我必須轉向 Firebase Cloud Messaging。

當我遷移到 FCM 時,我不得不添加一個 service worker javascript 文件 (firebase-messaging-sw.js)。 每當向瀏覽器推送分數更新時,如果用戶在另一個瀏覽器選項卡中或用戶已關閉我的網頁選項卡,則會向用戶顯示通知。

我不需要這個通知,我想禁用它。 此外,當用戶移動到另一個瀏覽器選項卡時,我想防止推送消息進入服務工作者並將其路由到我的網頁,以便當用戶再次返回該選項卡時,網頁中的最新分數會更新。

有沒有辦法實現這一目標?

您應該在消息正文中傳遞一個參數(取決於您需要做什么),如下所示:

$msg = [
  'title' => pushTitle,
  'body'=> pushBody,
  'icon'=> icon.png,
  'image'=> image.png,
  'active'=> 1
];

以上是 PHP,但在任何編程語言中也以相同的方式工作。 如果您使用 Firebase,那么您應該使用雲函數。

然后在你的 js 文件中:

messaging.setBackgroundMessageHandler(function(payload) {
  console.log('Received background message', payload);

  if(payload.data.active == 1){
    return;
  }
  var notificationTitle = payload.data.title;
  var notificationOptions = {
    body: payload.data.body,
    icon: payload.data.icon,
    image: payload.data.image
  };

  return self.registration.showNotification(notificationTitle, notificationOptions);
});

如果我有你的代碼(到目前為止你做了什么),我會給你一個確切的答案。 如果您有更多問題,請隨時提出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM