Guida introduttiva: Intercettazione delle notifiche push per le app in esecuzione (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Nota  Se non usi JavaScript, vedi Guida introduttiva: Intercettazione delle notifiche push per le app in esecuzione (XAML).

 

Puoi progettare la tua app in modo che intercetti una notifica push e risponda in un modo non predefinito. Questa procedura può essere usata per tutti i tipi di notifica push, ma è particolarmente utile per le notifiche di tipo avviso popup e non elaborate.

Quando il servizio cloud della tua app invia una notifica a Windows, l'app ha l'opportunità di intercettarla e gestirla prima che visualizzi un avviso popup, aggiorni un riquadro o una notifica o recapiti una notifica non elaborata a un'attività in background. Può inoltre impedire la visualizzazione o l'aggiornamento di questi elementi. L'implementazione di un gestore eventi di recapito delle notifiche è facoltativa. È utile soprattutto negli scenari in cui l'app intende gestire gli avvisi popup in ingresso senza visualizzarli per l'utente.

Nota  Per quanto riguarda Windows Phone 8.1, il telefono può impedire la visualizzazione di una notifica di tipo avviso popup usando la proprietà ToastNotification.suppressPopup o ScheduledToastNotification.suppressPopup nel contenuto XML della notifica.

Nota  Questa procedura si applica solo alle app in esecuzione. Le notifiche inviate dal sistema quando l'app non è in esecuzione e il gestore non è implementato vengono recapitate normalmente— i riquadri vengono aggiornati, l'avviso popup viene visualizzato e le notifiche non elaborate vengono recapitate alle attività in background (se implementate).

 

Prerequisiti

Per una piena comprensione di questo argomento o per usare il codice fornito, devi avere:

Istruzioni

1. Facoltativo: dichiarare una variabile spazio dei nomi

Questa procedura ti fornisce un nome breve da usare al posto del nome completo dello spazio dei nomi. È equivalente all'istruzione "using" in C# o all'istruzione "Imports" in Visual Basic Consente di semplificare il codice.

Nota  Il codice seguente presuppone che questa variabile sia stata dichiarata.

 


var pushNotifications = Windows.Networking.PushNotifications;

2. Creare un canale di notifica push

Per ricevere notifiche push da un server cloud è necessario un canale di notifica valido. Il listener di eventi controlla il canale per individuare l'arrivo della notifica. Per altre informazioni su come creare un canale, vedi Come richiedere, creare e salvare un canale di notifica.

Questo esempio crea un canale accessibile tramite newChannel.uri.


var channel;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();

return channelOperation.then(function (newChannel) {
    channel = newChannel;
    },
    function (error) {
        // ...
    }
);

3. Creare una funzione per gestire l'evento di notifica push

L'esempio seguente mostra come gestire tutti i tipi di notifica.

L'ultima riga di codice nell'esempio imposta la proprietà cancel dell'evento su true. In questo modo si impedisce alla notifica di apportare modifiche all'interfaccia utente, ad esempio aggiornare un riquadro o una notifica badge o visualizzare un avviso popup. Nel caso di una notifica non elaborata, si impedisce che questa venga recapitata a un'attività in background, se implementata. In questo modo qualsiasi risposta alla notifica viene elaborata dal gestore.


var content;
function onPushNotification(e) {
    var notificationPayload; 

    switch (e.notificationType) { 
        case pushNotifications.PushNotificationType.toast: 
            notificationPayload = e.toastNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.tile: 
            notificationPayload = e.tileNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.badge: 
            notificationPayload = e.badgeNotification.content.getXml(); 
            break; 

        case pushNotifications.PushNotificationType.raw: 
            notificationPayload = e.rawNotification.content; 
            break; 
    } 

    e.cancel = true;
}

4. Aggiungere un listener di eventi per le notifiche push ricevute

Usa il canale creato nel passaggio 1 per assegnare il gestore eventi creato nel passaggio 2 per la gestione dell'evento PushNotificationReceived.


channel.addEventListener("pushnotificationreceived", onPushNotification, false);

Se la situazione lo richiede, l'intercettazione e la gestione di una notifica push mentre l'app è in esecuzione può dare all'app maggiore controllo sull'effetto di questo tipo di notifica. Ad esempio, se non vuoi che una notifica di tipo avviso popup si sovrapponga a un gioco in corso, il gestore eventi può integrare il contenuto della notifica nell'interfaccia utente del gioco in un modo meno invadente.

Argomenti correlati

Esempi

Esempio di notifiche non elaborate

Esempio di notifiche push e periodiche

Informazioni concettuali

Panoramica di Servizi notifica Push Windows (WNS)

Panoramica delle notifiche non elaborate

Procedure consigliate

Linee guida ed elenco di controllo per le notifiche push

Linee guida ed elenco di controllo per le notifiche non elaborate

Procedure

Guida introduttiva: Creazione e registrazione di un'attività in background per una notifica non elaborata