Zoeken…


Webmeldingen verzenden met GCM (Google Cloud Messaging System)

Een dergelijk voorbeeld is het kennen van brede verspreiding onder PWA's (Progressive Web Applications) en in dit voorbeeld gaan we een eenvoudige backend-achtige melding verzenden met NodeJS en ES6

  1. Node-GCM-module npm install node-gcm : npm install node-gcm

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

  3. Maak een GCM-app met Google Console.

  4. Pak uw GCM-toepassings-ID (we hebben het later nodig)

  5. Pak uw GCM-applicatie Geheime code.

  6. Open uw favoriete code-editor en voeg de volgende code toe:

     '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: Ik gebruik hier een speciale hack om Socket.io met Express te laten werken omdat het gewoon niet buiten de doos werkt.

Maak nu een .json- bestand en noem het: Manifest.json , open het en plak het volgende:

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

Sluit het en sla het op in de ROOT- directory van uw toepassing.

PS: het Manifest.json-bestand moet in de hoofdmap staan, anders werkt het niet.

In de bovenstaande code doe ik het volgende:

  1. Ik heb een normale index.html-pagina ingesteld en verzonden die ook socket.io zal gebruiken.
  2. Ik luister naar een verbindingsgebeurtenis vanaf de front-end aka mijn index.html-pagina (deze wordt geactiveerd zodra een nieuwe client met succes verbinding heeft gemaakt met onze vooraf gedefinieerde link)
  3. Ik stuur een speciaal token dat bekend staat als het registratietoken van mijn index.html via socket.io new_user- gebeurtenis, zo'n token wordt onze unieke toegangscode en elke code wordt meestal gegenereerd vanuit een ondersteunende browser voor de API voor webmeldingen (lees meer hier.
  4. Ik gebruik eenvoudig de module node-gcm om mijn melding te verzenden, die later zal worden afgehandeld en getoond met behulp van Service Workers` .

Dit is vanuit het oogpunt van NodeJS . in andere voorbeelden zal ik laten zien hoe we aangepaste gegevens, pictogrammen ... enzovoort kunnen verzenden in ons pushbericht.

PS: je kunt de volledige werkende demo hier vinden.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow