Windows Dev Center

Panoramica delle notifiche non elaborate (app di Windows Runtime)

Le notifiche non elaborate sono brevi notifiche push ad uso generico. Vengono inviate esclusivamente allo scopo di impartire istruzioni e non includono un componente di interfaccia utente. Come altri tipi di notifiche push, le notifiche non elaborate vengono recapitate all'app da un servizio cloud mediante i servizi di notifica Windows della funzionalità WNS (Windows Push Notification Services).

Puoi usare notifiche non elaborate per diversi scopi, tra cui l'attivazione di un'attività in background dell'app nei casi in cui questo tipo di operazione sia stato autorizzato dall'utente. Usando il servizio WNS per comunicare con l'app, è possibile evitare l'overhead di elaborazione correlato alla creazione di connessioni socket permanenti, all'invio di messaggi HTTP GET e ad altre connessioni tra servizio e app.

Importante   Per comprendere le caratteristiche delle notifiche non elaborate, devi avere familiarità con i concetti trattati nella panoramica di WNS (Windows Push Notification Service).

Come avviene per le notifiche di tipo avviso popup, di riquadro e push, le notifiche non elaborate vengono inviate dal servizio cloud della tua app a WNS attraverso un URI (Uniform Resource Identifier) del canale assegnato. WNS, a sua volta, recapita la notifica al dispositivo e all'account utente associato al canale. Tuttavia, a differenza delle altre notifiche push, le notifiche non elaborate non hanno un formato specifico. Il contenuto del payload è interamente definito dall'app.

A titolo esemplificativo di un'app in cui potrebbe essere utile usare le notifiche non elaborate, esaminiamo un'app fittizia di collaborazione su documenti. Consideriamo due utenti impegnati a modificare lo stesso documento contemporaneamente. Il servizio cloud che ospita il documento condiviso potrebbe usare le notifiche non elaborate per informare ciascun utente quando l'altro apporta modifiche. Le notifiche non elaborate non devono necessariamente riportare le modifiche apportate al documento, ma solo segnalare alla copia dell'app di ognuno degli utenti di contattare la posizione centrale e sincronizzare le modifiche disponibili. Con le notifiche non elaborate è possibile evitare l'overhead correlato alla creazione di connessioni permanenti per l'intera durata di apertura del documento tra l'app e il relativo servizio cloud.

Funzionamento delle notifiche non elaborate

Tutte le notifiche non elaborate sono di tipo push. Pertanto, la configurazione necessaria per l'invio e la ricezione di notifiche push si applica ugualmente alle notifiche non elaborate:

  • È necessario disporre di un canale WNS valido per inviare le notifiche non elaborate. Per ulteriori informazioni sull'acquisizione di un canale di notifica push, vedi Come richiedere, creare e salvare un canale di notifica.
  • Devi includere la funzionalità Internet nel manifesto dell'app. Nell'editor del manifesto di Microsoft Visual Studio questa opzione è disponibile nella scheda Funzionalità come Internet (client). Per altre informazioni, vedi Capabilities.

Il corpo della notifica è in un formato definito dall'app. Il client riceve i dati come stringa con terminazione Null (HSTRING) che deve essere riconosciuta solo dall'app.

Se il client è offline, le notifiche non elaborate vengono memorizzate nella cache da WNS solo se nella notifica è inclusa l'intestazione X-WNS-Cache-Policy. Tuttavia, verrà memorizzata nella cache e recapitata al client una volta online una sola notifica non elaborata.

Per il recapito di una notifica push a un client esistono solo tre possibili percorsi: le notifiche possono essere recapitate all'app in esecuzione tramite un evento di recapito delle notifiche, possono essere inviate a un'attività in background oppure possono essere ignorate. Pertanto se il client è offline e WNS tenta di recapitare una notifica non elaborata, quest'ultima verrà ignorata.

Creazione di una notifica non elaborata

L'invio di notifiche non elaborate è analogo all'invio di altre notifiche push come quelle di tipo avviso popup o riquadro, tranne che per le differenze seguenti:

  • L'intestazione HTTP Content-Type deve essere impostata su "application/octet-stream".
  • L'intestazione HTTP X-WNS-Type deve essere impostata su "wns/raw".
  • Il corpo della notifica può contenere qualsiasi payload stringa di dimensioni inferiori a 5 KB.

Le notifiche non elaborate sono destinate all'uso come brevi messaggi per attivare azioni nell'app, ad esempio contattare direttamente il servizio per sincronizzare una maggiore quantità di dati oppure apportare modifiche allo stato locale in base al contenuto della notifica. Ricorda che il recapito delle notifiche push di WNS non è garantito, pertanto devi tenere conto nell'app e nel servizio cloud della possibilità che la notifica non raggiunga il client quando ad esempio è offline.

Per ulteriori informazioni sull'invio di notifiche push, vedi Guida introduttiva: Invio di una notifica push.

Ricezione di una notifica non elaborata

Esistono due vie tramite cui l'app può ricevere le notifiche non elaborate:

Un'app può usare entrambi questi meccanismi per ricevere le notifiche non elaborate. Se un'app implementa sia un gestore di eventi di recapito delle notifiche sia le attività in background attivate dalle notifiche non elaborate, l'evento di recapito ha priorità se l'app è in esecuzione.

  • Se l'app è in esecuzione, l'evento di recapito delle notifiche ha priorità sull'attività in background e l'app potrà procedere ad elaborare la notifica.
  • Il gestore dell'evento di recapito può specificare, mediante la proprietàPushNotificationReceivedEventArgs.Cancel dell'evento true, che la notifica non elaborata deve essere passata alla relativa attività in background dopo la chiusura del gestore stesso. Se la proprietà Cancel è impostata su false o non è impostata (il valore predefinito è false), la notifica non elaborata attiva l'attività in background al termine delle operazioni del gestore dell'evento di recapito.

Eventi di recapito delle notifiche

La tua app può usare un evento di recapito della notifica (PushNotificationReceived) per ricevere notifiche non elaborate mentre l'app è in uso. Quando il servizio cloud invia una notifica non elaborata, l'app in esecuzione può riceverla gestendo l'evento di recapito sull'URI del canale.

Se l'app non è in esecuzione e non usa attività in background, le eventuali notifiche non elaborate verranno ignorate da WNS alla ricezione. Per evitare di sprecare risorse del servizio cloud, puoi considerare l'implementazione nel servizio di logica in grado di rilevare se l'app è attiva. Esistono due modi per ottenere questa informazione: un'app può indicare in modo esplicito al servizio che è pronta a ricevere notifiche oppure WNS può indicare al servizio quando arrestarsi.

  • Notifica al servizio cloud da parte dell'app: l'app può contattare il servizio per segnalare di essere in esecuzione in primo piano. Lo svantaggio di questo approccio consiste nel fatto che l'app potrebbe contattare il servizio con eccessiva frequenza. D'altra parte, comporta il vantaggio di informare sempre il servizio quando l'app è pronta a ricevere notifiche non elaborate. Un altro vantaggio deriva dal fatto che quando l'app contatta il servizio, quest'ultimo può inviare le notifiche non elaborate all'istanza specifica invece che in broadcast.
  • Il servizio cloud reagisce a messaggi di risposta di WNS: il servizio dell'app può usare le informazioni X-WNS-NotificationStatus e X-WNS-DeviceConnectionStatus restituite da WNS per determinare se interrompere l'invio di notifiche non elaborate all'app. Quando il servizio invia una notifica a un canale come HTTP POST, può ricevere in risposta uno di questi messaggi:
    • X-WNS-NotificationStatus: dropped: indica che la notifica non è stata ricevuta dal client. È sicuro quindi presupporre che la risposta dropped sia causata dal fatto che l'app non è più in esecuzione in primo piano sul dispositivo dell'utente.
    • X-WNS-DeviceConnectionStatus: disconnected o X-WNS-DeviceConnectionStatus: tempconnected: indica che il client Windows non è più connesso a WNS. Tieni presente che per ricevere questo messaggio da WNS, devi richiederlo impostando l'intestazione X-WNS-RequestForStatus nell'HTTP POST della notifica.

    Il servizio cloud dell'app può usare le informazioni nei messaggi di stato per interrompere i tentativi di comunicazione tramite notifiche non elaborate. Il servizio può riprendere l'invio di notifiche non elaborate dopo essere stato contattato dall'app una volta che questa torna in esecuzione in primo piano.

    Tieni presente che X-WNS-NotificationStatus non è un'indicazione attendibile per determinare se la notifica è stata correttamente recapitata al client.

    Per ulteriori informazioni, vedi Intestazioni delle richieste e delle risposte per servizi notifica Push

Attività in background attivate da notifiche non elaborate

Importante  Un utente deve concedere esplicitamente le autorizzazioni per l'esecuzione di attività in background, il che avviene con certezza se l'app è aggiunta alla schermata di blocco. Questo tipo di autorizzazione può essere concesso a un massimo di sette app alla volta. In assenza di questa autorizzazione, tutte le informazioni illustrate finora non trovano applicazione. Per ulteriori informazioni, vedi Panoramica della schermata di blocco.

L'attività in background deve essere registrata in un PushNotificationTrigger. In caso contrario, l'attività non viene eseguita alla ricezione di una notifica non elaborata.

Le attività in background attivate da notifiche non elaborate consentono al servizio cloud dell'app di contattare l'app stessa anche se non è in esecuzione (il servizio può tuttavia attivarla). Perché ciò avvenga non è necessario che l'app mantenga una connessione continua. Le notifiche non elaborate rappresentano l'unico tipo di notifica in grado di attivare attività in background. Tuttavia, sebbene le notifiche push di tipo riquadro o avviso popup non possano attivare attività in background, le attività di questo tipo attivate dalle notifiche non elaborate possono aggiornare i riquadri e richiamare notifiche di tipo avviso popup tramite chiamate alle API locali.

A titolo esemplificativo della modalità di attivazione delle attività in background da parte delle notifiche non elaborate, consideriamo un'app usata per la lettura di e-book. In primo luogo, l'utente acquista un libro online, possibilmente da un altro dispositivo. Il servizio cloud dell'app può inviare in risposta una notifica non elaborata a tutti i dispositivi dell'utente con un payload indicante che il libro è stato acquistato e che l'app deve scaricarlo. L'app contatta quindi direttamente il proprio servizio cloud per iniziare il download in background del nuovo libro in modo che in seguito, quando l'utente avvia l'app, il libro sia pronto per essere letto.

Per usare una notifica non elaborata per attivare un'attività in background, l'app deve:

  1. Richiedere e acquisire l'autorizzazione dell'utente per eseguire attività in background. Per altre informazioni, vedi Panoramica della schermata di blocco.
  2. Implementare l'attività in background. Per altre informazioni, vedi Supporto dell'app con le attività in background

L'attività in background viene quindi richiamata in risposta a PushNotificationTrigger ogni volta che l'app riceve una notifica non elaborata. L'attività in background interpreta quindi il payload specifico dell'app della notifica non elaborata e agisce di conseguenza.

Per ogni app è possibile eseguire una sola attività in background alla volta. Se viene attivata un'attività in background per un'app in cui è già in esecuzione un'altra attività di questo tipo, occorre attendere che quest'ultima venga completata prima di poter eseguire la nuova.

Altre risorse

Per esaminare un'implementazione dei concetti illustrati in questo argomento in un esempio con codice completo. vedi l'esempio di notifiche non elaborate. Ti consigliamo anche di esaminare l'esempio di notifiche push e periodiche per dettagli generali sull'implementazione delle notifiche.

Argomenti correlati

Esempio di notifiche non elaborate
Linee guida ed elenco di controllo per le notifiche non elaborate
Guida introduttiva: Creazione e registrazione di un'attività di background di una notifica non elaborata
Guida introduttiva: Intercettazione di notifiche push per le app in esecuzione
RawNotification

 

 

Mostra:
© 2015 Microsoft