WPN (Web push notifications)
Le notifiche push web sono messaggi di contenuto ricco selezionabili che consentono agli utenti di scegliere aggiornamenti tempestivi dai siti web. L'applicazione supporta l'ascolto delle API delle notifiche di push e la trasmissione delle notifiche, che possono essere utilizzate da diverse funzioni all'interno dell'applicazione.
Abilitazione di WPN
Nota: per tutte le funzioni correlate alle notifiche push web, viene utilizzato il modulo di lavoro del servizio Angular.
Operatore del servizio
Poiché l'operatore del servizio è richiesto per il funzionamento della notifica di push, viene registrato un operatore del servizio predefinito fornito dall'applicazione che ascolta gli eventi di clic di push e di notifica e trasmette questi eventi che possono essere ascoltati da diverse funzioni.
- Evento push: l'operatore del servizio ascolta l'evento Push, mostra le notifiche e trasmette un messaggio con i dati push che possono essere ascoltati da diverse funzioni.
- Evento di clic di notifica: il service worker ascolta l'evento di clic di notifica, chiude la notifica e trasmette un messaggio con i dati di notifica (inclusi i dettagli dell'azione), che possono essere ascoltati da diverse funzioni.
Sottoscrizione e annullamento della sottoscrizione alle notifiche
- Sottoscrizione alle notifiche: è un'implementazione completa e, per impostazione predefinita, l'applicazione fornisce un hook per la sottoscrizione durante il processo di login. Subito dopo il login, l'applicazione effettua una chiamata per sottoscrivere il metodo definito all'interno di src/app/core/services/PushNotificationAbstractService (ad oggi è solo un metodo fittizio).
PushNotificationAbstractServicedeve essere sovrascritto per implementare il metodo di sottoscrizione in modo che gli utenti possano sottoscrivere le notifiche e questa sottoscrizione possa essere resa persistente da qualche parte alla fine del cliente. Lo stesso servizio personalizzato può essere richiamato da qualsiasi punto dell'applicazione per modificare il funzionamento predefinito, che è la sottoscrizione durante il login. - Annullamento della sottoscrizione alle notifiche: di nuovo, il metodo di annullamento della sottoscrizione fittizio da src/app/core/services/PushNotificationAbstractService viene richiamato durante la disconnessione per il flusso fornito dall'applicazione e deve essere sovrascritto per soddisfare le necessità del cliente. Di base, questo è l'aspetto di un servizio sovrascritto (il servizio sovrascritto deve essere definito in store-extensions-src/app/core/services/Nota: si tratta di un'implementazione molto semplice e non desiderabile per l'applicazione di produzione.
import { Injectable, Injector } from '@angular/core';
import { PushNotificationAbstractService } from '@simcore/
services/push-notification-abstract.service';
import { SwPush } from '@angular/service-worker';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { map, take } from 'rxjs/operators';
import { UIUtilsService } from '@sim-core/services/uiutils.
service';
@Injectable({
providedIn: 'root'
})
export class PushNotificationService extends
PushNotificationAbstractService {
readonly VAPID_PUBLIC_KEY = '<vapid key>';
isWPNSubscribed = false;
subsObj = null;
constructor(
protected injector: Injector,
public swPush: SwPush,
private http: HttpClient
) {
super(injector);
if (this.swPush.isEnabled) {
this.swPush.subscription
.pipe(take(1))
.subscribe(pushSubscription => {
if (pushSubscription) {
this.isWPNSubscribed = true;
}
});
}
}
public subscribe({}) {
this.subscribeToNotifications(null);
}
subscribeToNotifications(event) {
if (event) {
event.preventDefault();
}
this.swPush.requestSubscription({
serverPublicKey: this.VAPID_PUBLIC_KEY
})
.then(pushSubscription => {
this.http.post('https://<host-port>/<susbcribe-end-point>',
{'subscription': pushSubscription.toJSON(), 'any-other-data':''});
this.isWPNSubscribed = true;
})
.catch(err => console.error('Could not subscribe to
notifications', err));
}
public unsubscribe({}) {
this.unsubscribeToNotifications(null);
}
unsubscribeToNotifications(event) {
event.preventDefault();
this.swPush.subscription
.pipe(take(1))
.subscribe(pushSubscription => {
pushSubscription.unsubscribe().then(result => {
if (result) {
this.isWPNSubscribed = false;
this.http.post('https://<host-port>/<unsusbcribe-endpoint>',
{'data': 'data'})
} else {
console.log('Could not unsubscribe to notifications');
}
})
.catch(err => console.error('unsubcribe subscription failed',
err));
});
}
}
Richiamo del servizio Push
Il richiamo del servizio push è un'implementazione personalizzata completa e deve essere curato dal cliente. In genere, gli eventi generati in Sterling Store Engagement o IBM® Sterling Order Management System devono essere acquisiti e il servizio push deve essere richiamato con i dati corretti affinché possano essere mostrati all'utente associato.
Un payload di notifica tipico è il seguente:
{
"notification": {
"title": "Notification Title", //mandatory
"body": "Notification Message!",
"data": {
"dateOfArrival": Date.now(),
"primaryKey": 1
}
}
}Gestione degli eventi push e clic di notifica
Come indicato nella sezione dell'operatore del servizio, l'operatore del servizio fornito dall'applicazione si occupa già di mostrare e chiudere la notifica. Inoltre, trasmette gli eventi push e clic di notifica che l'applicazione può ascoltare per un'ulteriore elaborazione. Il modulo di lavoro del servizio angolare fornito dall'applicazione fornisce un modo per sottoscriversi a questi eventi che possono essere utilizzati come segue:
this.swPush.messages.subscribe(message => {
console.log('Push message: ', message);
});
this.swPush.notificationClicks.subscribe(notificationMsg => {
console.log('Notification Click: ', notificationMsg);
});
Nota:
Questo codice può essere conservato all'interno del servizio swPush è un riferimento a @angular/service-worker
modulePushNotificationService .Limitazioni
- Supportato solo su Chrome per Desktop e Android.
httpssupporta e funziona solo con certificati SSL validi.- Quando un utente accede all'applicazione per la prima volta dopo l'aggiornamento del3 maggio, l'utente deve ricaricare l'IU per utilizzare l'operatore del servizio e quindi le notifiche di push.