Hinweise zur Verwendung von FCM mit Ruby on Rails

Reflect click_action

Es scheint, dass Sie das Ereignis "Benachrichtigungsklick" oben in "firebase-messaging-sw.js" hinzufügen sollten.

public/firebase-messaging-sw.js


// Notification click
self.addEventListener('notificationclick', function(event) {
  let url = event.notification.data.FCM_MSG.data.url;

  event.notification.close(); // Android needs explicit close.
  event.waitUntil(
    clients.matchAll({ includeUncontrolled: true, type: 'window' }).then( windowClients => {
      // Check if there is already a window/tab open with the target URL
      for (let i = 0; i < windowClients.length; i++) {
        let client = windowClients[i];
        // If so, just focus it.
        if (client.url === url && 'focus' in client) {
          return client.focus();
        }
      }
      // If not, then open the target URL in a new window/tab.
      if (clients.openWindow) {
        return clients.openWindow(url);
      }
    })
  );
});

Erhalten Sie Web-Push-Benachrichtigungen auch auf geöffneten Registerkarten (Arbeitsregisterkarten).

Wenn ich mit normalerweise geöffneten Registerkarten arbeite, erhalte ich keine Web-Push-Benachrichtigungen.

Sie können die Funktion "onMessage" in "firebase.js" wie folgt definieren.

firebase.js


  // Handle incoming messages while focusing
  messaging.onMessage(function(payload) {
    const { title, body, icon } = payload.notification
    const url = payload.data.url
    navigator.serviceWorker.getRegistration('/firebase-cloud-messaging-push-scope').then(registration => {
      registration.showNotification(
        title,
        {
          body,
          icon,
          data: {
            FCM_MSG: {
              data: {
                url
              }
            }
          }
        }
      )
    });
  });

Lassen Sie ActiveJob Web-Pushs verarbeiten

Folgende Parameter können übergeben werden: Titel: Benachrichtigungstitel body: Benachrichtigungsinhalt Symbol: Anzeigesymbol click_action: URL, die mit einem Klickereignis übergeht (nur HTTPS)

app/jobs/push_notification_job.rb


class PushNotificationJob < ApplicationJob
  queue_as :default

  DEFAULT_ICON = 'https://hogehoge.ico'

  def perform(token, options = {})
    fcm = FCM.new(ENV['FIREBASE_SERVER_KEY'])

    options = {
      priority: 'high',
      notification: {
        title: options[:title],
        body: options[:body],
        icon: options[:icon] || DEFAULT_ICON,
      },
      data: {
        url: options[:url] || '/'
      }
    }

    registration_ids = [token]

    fcm.send(registration_ids, options) if registration_ids.any?
  end
end

Ich bin mir immer noch nicht sicher, ob "Priorität:" hoch "nützlich ist, aber ...

Recommended Posts

Hinweise zur Verwendung von FCM mit Ruby on Rails
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] Codeprüfung mit Rubocop-Airbnb
[Ruby on Rails] Controller-Test mit RSpec
[Ruby on Rails] Bild-Diashow mit Skippr
[Ruby on Rails] Modelltest mit RSpec
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
Einführung in Rspec mit Ruby on Rails x Docker
Veröffentlichen Sie die mit Ruby on Rails erstellte App
[Rails] Verfahren zum Verknüpfen von Datenbanken mit Ruby On Rails
Bestimmen Sie die aktuelle Seite mit Ruby on Rails
[Ruby on Rails] Hochladen mehrerer Bilder mit Refile
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
[Ruby on Rails] Löschen Sie s3-Bilder mit Active Strage
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Führen Sie Ruby on Rails RSpec-Tests mit GitHub-Aktionen aus
Ruby on Rails Lernrekord -2020.10.09
Japanisieren Sie mit i18n mit Rails
Fehler beim Bereitstellen von Docker auf Schienen mit Notizen
Ruby on Rails lernen Rekord-2020.10.07 ②
[Ruby on Rails] Gemeinsame Verarbeitung zwischen Controllern (unter Verwendung von Konkaven)
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
[Ruby] Hinweise zur Methode gets
Ruby on Rails Lernrekord -2020.10.06
Ruby on Rails-Lernprogramm Problematische Hinweise unter Windows
Zusammenfassung der Ruby on Rails-Validierung
Site Map im RSS / Atom-Format mit Ruby on Rails erstellt
Ruby on Rails Grundlegendes Memorandum
Versuchen Sie es mit dem Ruby on Rails-Abfrageattribut
Ruby on Rails Einstellung der automatischen E-Mail-Sendefunktion (über Google Mail)
[Ruby on Rails] Fügen Sie eine Spalte mit externen Schlüsselbeschränkungen hinzu
[Ruby on Rails] Einfache Scroll-Animation von Javascript (mit ScrollReveal.js)
[Ruby on Rails] Implementieren Sie die Anmeldefunktion von add_token_to_users mit API
[Ruby on Rails] Unendliches Scrollen mit Gem Kaminari und Jscroll
Installieren Sie Ruby mit pacman auf MSYS2
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
[Ruby on Rails] Paging-Funktion eingeführt
Grundkenntnisse in Ruby on Rails
Progate Ruby on Rails5 Rückblick
Installieren Sie Ruby 2.5 unter CentOS 7 mit SCL
Verwendung von Ruby on Rails