Ricerca…


Invia notifica Web utilizzando GCM (Google Cloud Messaging System)

Tale esempio sta conoscendo un'ampia diffusione tra PWA (Progressive Web Applications) e in questo esempio invieremo una semplice notifica di backend come usando NodeJS ed ES6

  1. Installa il modulo Node-GCM: npm install node-gcm

  2. Installa Socket.io: npm install socket.io

  3. Crea un'applicazione GCM abilitata utilizzando Google Console.

  4. Grabe il tuo ID applicazione GCM (ne avremo bisogno in seguito)

  5. Inserisci il tuo codice segreto dell'applicazione GCM.

  6. Apri il tuo editor di codice preferito e aggiungi il seguente codice:

     'use strict';
    
     const express = require('express');
     const app = express();
     const gcm = require('node-gcm');
     app.io = require('socket.io')();
     
     // [*] Configuring our GCM Channel.
     const sender = new gcm.Sender('Project Secret');
     const regTokens = [];
     let message = new gcm.Message({
         data: {
             key1: 'msg1'
         }
     });
     
     // [*] Configuring our static files.
     app.use(express.static('public/'));
     
     // [*] Configuring Routes.
     app.get('/', (req, res) => {
         res.sendFile(__dirname + '/public/index.html');
     });
     
     // [*] Configuring our Socket Connection.
     app.io.on('connection', socket => {
         console.log('we have a new connection ...');
         socket.on('new_user', (reg_id) => {
             // [*] Adding our user notification registration token to our list typically hided in a secret place.
             if (regTokens.indexOf(reg_id) === -1) {
                 regTokens.push(reg_id);
     
                 // [*] Sending our push messages
                 sender.send(message, {
                     registrationTokens: regTokens
                 }, (err, response) => {
                     if (err) console.error('err', err);
                     else console.log(response);
                 });
             }
         })
     });
      
     module.exports = app
    

PS: Sto usando un trucco speciale per far funzionare Socket.io con Express perché semplicemente non funziona fuori dagli schemi.

Ora creare un file .json e denominarlo: Manifest.json , aprirlo e incollare quanto segue:

{
    "name": "Application Name",
    "gcm_sender_id": "GCM Project ID"
}

Chiudilo e salva nella directory ROOT dell'applicazione.

PS: il file Manifest.json deve essere nella directory principale o non funzionerà.

Nel codice sopra sto facendo quanto segue:

  1. Ho impostato e inviato una normale pagina index.html che utilizzerà anche socket.io.
  2. Sto ascoltando un evento di connessione sparato dalla pagina front-end aka my index.html (verrà attivato una volta che un nuovo client si è connesso correttamente al nostro link predefinito)
  3. Sto inviando un token speciale come il token di registrazione dal mio index.html tramite l'evento socket.io new_user , tale token sarà il nostro codice di accesso univoco dell'utente e ogni codice viene generato solitamente da un browser di supporto per l' API di notifica Web (leggi di più Qui.
  4. Sto semplicemente usando il modulo node-gcm per inviare la mia notifica che verrà gestita e mostrata in seguito utilizzando i Service Workers `.

Questo è dal punto di vista di NodeJS . in altri esempi mostrerò come possiamo inviare dati personalizzati, icone .. etc nel nostro messaggio push.

PS: puoi trovare la demo completa di lavoro qui.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow