Sök…


Skicka webbmeddelande med GCM (Google Cloud Messaging System)

Ett sådant exempel är kunskap om stor spridning bland PWA: er (Progressive Web Applications) och i det här exemplet kommer vi att skicka en enkel Backend-liknande meddelande med NodeJS och ES6

  1. Installera Node-GCM-modul: npm install node-gcm

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

  3. Skapa en GCM-aktiverad applikation med Google Console.

  4. Ta tag i din GCM-applikations-id (vi kommer att behöva det senare)

  5. Ta tag i din hemliga kod för GCM-applikationen.

  6. Öppna din favoritkodeditor och lägg till följande kod:

     '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: Jag använder här en speciell hack för att Socket.io ska fungera med Express eftersom det helt enkelt inte fungerar utanför boxen.

Skapa nu en .json- fil och namnge den: Manifest.json , öppna den och passera följande:

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

Stäng den och spara i din ROOT- katalog.

PS: filen Manifest.json måste finnas i rotkatalogen, annars fungerar den inte.

I koden ovan gör jag följande:

  1. Jag skapade och skickade en normal index.html-sida som också kommer att använda socket.io.
  2. Jag lyssnar på en anslutningshändelse som skjutits upp från front- enden, min index.html-sida (den kommer att avfyras när en ny klient har anslutits till vår fördefinierade länk)
  3. Jag skickar en speciell kännedom som registreringstoken från min index.html via socket.io new_user- händelse, ett sådant token kommer att vara vårt användar unika lösenord och varje kod genereras vanligtvis från en stödjande webbläsare för webbmeddelandets API (läs mer här.
  4. Jag använder helt enkelt modulen node-gcm för att skicka mitt meddelande som kommer att hanteras och visas senare med hjälp av Service Workers `.

Detta är från NodeJS synvinkel. i andra exempel kommer jag att visa hur vi kan skicka anpassad data, ikoner .. etc. i vårt pushmeddelande.

PS: du kan hitta den fullständiga fungerande demonstrationen här.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow