Condividi tramite


Come usare WNS per recapitare notifiche push non elaborate a un'app nella schermata di blocco (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 ]

Questo argomento ti mostrerà come utilizzare Servizi notifica Push Windows (WNS) e le notifiche push non elaborate per ricevere notifiche di rete in background in un'app di Windows Runtime nella schermata di blocco. L'argomento illustra la procedura per registrare un canale di notifica push e inviarlo al server, registrare un'attività in background da attivare a partire da una notifica push e quindi inviare una notifica push non elaborata al canale e attivare l'attività in background.

Cosa sapere

Tecnologie

Prerequisiti

  • Le informazioni seguenti riguardano qualsiasi app di Windows Runtime connessa o in grado di riconoscere la rete che dipenda da connessioni di rete che usano le notifiche push non elaborate per essere sempre attiva. Questo argomento riguarda le app scritte in JavaScript per Windows 8.1, Windows Phone 8.1 e Windows Server 2012 R2.

    La connettività di rete in background mediante le notifiche push non elaborate è supportata delle app scritte in JavaScript e quelle scritte in C++/XAML, oltre a quelle che usano .NET Framework 4.5 in C#, VB.NET o C++ gestito. Per altre informazioni sulle attività di rete in background che interessano le app scritte in JavaScript, vedi Supporto dell'app con le attività in background.

Istruzioni

Uso di WNS per recapitare notifiche push non elaborate a un'app nella schermata di blocco

Non è necessario che le app basate su WNS siano in esecuzione per poter ricevere notifiche push; l'utente può avere l'impressione che siano in esecuzione, anche se non lo sono. Ad esempio, un'app meteo può mostrare sempre le ultime previsioni meteo in un riquadro animato aggiornato. Puoi anche usare WNS per consegnare agli utenti notifiche su schermo quando si verificano eventi significativi. Un buon esempio di notifica su schermo potrebbero essere le notizie di stampa dell'ultimo minuto. Qualsiasi dispositivo che esegue Windows 8.1, Windows Phone 8.1 o Windows Server 2012 R2 con una connessione a Internet può usare WNS. In genere le notifiche WNS sono recapitate non appena vengono inviate.

WNS aggiunge potenza ai riquadri animati e alle notifiche nella schermata Start di Windows 8.1, ma può essere usato anche per abilitare scenari di connettività in tempo reale come IM, VoIP ed email. Quando un'app basata su WNS viene aggiunta alla schermata di blocco, può essere usata per attivare un'attività in background. Un'attività in background fa parte del codice dell'app che viene eseguito quando questa si trova in background (non più in primo piano).

Ecco alcuni esempi di attività in background che possono essere attivati da una notifica WNS:

  • Chiamare l'API di notifica badge per incrementare un'icona di notifica per un'app per email nella schermata di blocco, così da indicare che è arrivato un nuovo messaggio email.
  • Chiamare l'API di notifica avviso popup per generare un avviso popup per un'app VoIP, così da segnalare che è in arrivo una chiamata per l'utente.

Le notifiche push sono di quattro tipi:

  • Aggiornamento riquadro
  • Aggiornamento notifica badge
  • Notifica di tipo avviso popup
  • Notifica non elaborata

Tutte le app di Windows Runtime possono usare le prime tre notifiche push quando sono in primo piano. Solo le app nella schermata di blocco possono ricevere da WNS notifiche push non elaborate. Le notifiche non elaborate consentono alle app nella schermata di blocco di eseguire il codice sotto forma di attività in background quando da WNS arriva la notifica push non elaborata, anche se le app non sono in primo piano.

La maggioranza delle app non viene aggiunta alla schermata di blocco e può usare WNS senza essere nella schermata di blocco. Tutte le app possono usare WNS per aggiornare i riquadri e le icone di notifica e per generare notifiche di tipo avviso popup quando sono in primo piano. L'uso di WNS con un'app nella schermata di blocco è un approccio più avanzato rispetto al semplice uso di WNS per animare i riquadri e generare le notifiche per gli utenti. Consigliamo agli sviluppatori di leggere la documentazione relativa a WNS in MSDN prima di provare a usare WNS con un'app nella schermata di blocco. Per altre informazioni, vedi Panoramica delle notifiche push.

Avrai bisogno di una chiave segreta configurata tramite Windows Store per l'invio di notifiche push a WNS. Per altre informazioni sull'autenticazione con WNS e sulla configurazione dell'app, vedi Come eseguire l'autenticazione con Servizi notifica Push Windows (WNS).

I passaggi seguenti illustrano come inviare una notifica push non elaborata a un'app della schermata di blocco.

  • Effettua la registrazione di un canale di notifica push WNS e inviala al server.
  • Invia a WNS una notifica push non elaborata, adeguatamente formattata, tramite il canale di notifica.
  • Scrivi un'attività in background che viene attivata da una notifica push non elaborata.

Le notifiche push non elaborate vengono consegnate a un'app client tramite un server applicazioni dello sviluppatore attraverso l'esecuzione di una richiesta PUSH HTTP di un payload XML ben formato a un canale di notifica. Il canale di notifica viene dunque generato dall'app client, inviato al server applicazioni e usato per inviare la notifica push. Il canale di notifica è univoco per l'istanza della tua app nell'account dell'utente in Windows 8.1.

JJ679947.wedge(it-it,WIN.10).gifEffettuare la registrazione di un canale di notifica push e inviarla al server

  1. Effettua la registrazione di un canale chiamando uno dei metodi CreatePushNotificationChannelForApplicationAsync sulla classe PushNotificationChannelManager nello spazio dei nomi Windows.Networking.PushNotifications.

    Verrà così generato un canale di notifica push per la tua app, che avrà un aspetto simile al seguente:

    https://db3.notify.windows.com/?token=AQQAAADX3Wr8MA%2fCoZk4n1CmR5ZU7tdic6ksvG4TQq1tiyZtpetjfzuPHSjvliEeqaqJcPuo1jrVnbyCZvnbuU%2byLvZNDONTgUNu6lavpl5EGtWx7iQgpGkyHLbZeosxioQ42Cg%3d
    
  2. Invia il canale al server. I canali hanno una scadenza di 30 giorni, pertanto le procedure consigliate sono:

    • Effettua la registrazione per ottenere un nuovo canale di notifica push ad ogni avvio dell'app e invia il nuovo canale al server per sostituire il precedente legato all'utente.
    • Nel caso di un computer locale che resta sempre acceso, esegui un'attività in background per rinnovare il canale di tanto in tanto prima della sua scadenza. Questo meccanismo è definito timer di manutenzione.

JJ679947.wedge(it-it,WIN.10).gifEffettuare la registrazione di un'attività in background che viene attivata da una notifica push non elaborata

  1. Per creare un'attività in background che viene eseguita alla ricezione di una notifica push non elaborata, devi specificare il file di origine JavaScript contenente il codice che dovrà essere attivato dall'attività in background. A questo scopo, devi assicurarti che il manifesto dell'app rimandi al file di origine dell'attività in background. Il manifesto dell'app deve contenere il nome del file di origine JavaScript dell'attività in background.

    L'esempio seguente aggiunge estensioni per un'attività in background PushNotifyTask sotto l'elemento <Application> nel manifesto di un'app.

      <Extensions>
        <Extension Category="windows.backgroundTasks" StartPage="js\backgroundTask.js">
          <BackgroundTasks>
            <Task Type="pushNotification" />
          </BackgroundTasks>
        </Extension>
      </Extensions>
    
  2. L'app deve aprire il canale delle notifiche push non elaborate.

    L'esempio seguente mostra come aprire un canale per una notifica push non elaborata.

    
        // Open the channel. See the "Push and Polling Notifications" sample for more detail
        function openNotificationsChannel() {
            var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();
            WinJS.log && WinJS.log("Opening a channel...", "sample", "status");
            return channelOperation.then(function (newChannel) {
                WinJS.log && WinJS.log("Channel request succeeded!", "sample", "status");
                document.getElementById("scenario1ChannelOutput").value = newChannel.uri;
                SdkSample.channel = newChannel;
            },
                function (error) {
                    WinJS.log && WinJS.log("Could not create a channel (error number: " + error.number + ")", "sample", "error");
                }
            );
        }
    
  3. L'app deve inoltre effettuare la registrazione dell'attività in background che dovrà essere attivata alla ricezione della notifica push non elaborata.

    L'esempio seguente mostra come effettuare la registrazione di un'attività in background per la notifica push non elaborata.

        // Register the background task for raw notifications
        //
        function registerBackgroundTask() {
            var taskBuilder = new background.BackgroundTaskBuilder();
            var trigger = new background.PushNotificationTrigger();
            taskBuilder.setTrigger(trigger);
            taskBuilder.taskEntryPoint = sampleTaskEntryPoint;
            taskBuilder.name = sampleTaskName;
    
            try {
                var task = taskBuilder.register();
                task.addEventListener("completed", backgroundTaskComplete);
                WinJS.log && WinJS.log("Background task registered", "sample", "status");
            } catch (e) {
                WinJS.log && WinJS.log("Registration error: " + e.message, "sample", "error");
                unregisterBackgroundTask();
            }
        }
    
        function unregisterBackgroundTask() {
            var iter = background.BackgroundTaskRegistration.allTasks.first();
            while (iter.hasCurrent) {
                var task = iter.current.value;
                if (task.name === sampleTaskName) {
                    task.unregister(true);
                    return true;
                }
                iter.moveNext();
            }
            return false;
        }
    
  4. Devi anche fornire il codice per la funzione che viene eseguita quando l'attività in background viene attivata.

    Per altre informazioni su come scrivere un'attività in background per ricevere le notifiche di rete in background che utilizzano le notifiche push non elaborate, vedi Guida introduttiva: Come scrivere un'attività in background per le notifiche push non elaborate.

    Nota  

    Non puoi inserire riferimenti agli elementi dell'interfaccia utente della tua app in un'attività in background, poiché questi elementi nella tua app non sono in esecuzione. Ciò significa che gli eventuali callback per il trasporto di rete non devono essere resi affini all'apartment a thread singolo dell'interfaccia utente. Le attività in background non devono accedere agli oggetti che abbiano affinità con l'apartment a thread singolo dell'interfaccia utente.

    Quando il tuo codice viene eseguito nell'attività in background, puoi configurare l'attivazione della tua app, sincronizzare gli stati di client e server e generare una notifica per l'utente.

     

Le notifiche push non elaborate sono simili alla notifiche badge e di riquadro. La differenza principale consiste nel fatto che il payload di una notifica push non elaborata non contiene attributi che aggiornano parti dell'interfaccia utente di Windows 8.1. Il payload della notifica push non elaborata corrisponde al complesso dei dati del contesto che viene passato direttamente alla tua app quando l'attività in background viene attivata. L'app deve comprendere il formato dei dati di contesto inviati dal server.

Prima che il server possa inviare una notifica push non elaborata, devi eseguire i passaggi seguenti:

JJ679947.wedge(it-it,WIN.10).gifInviare una notifica push non elaborata al canale e attivare l'attività in background

  1. Assicurati di aver effettuato la registrazione della tua app in Windows Store e di possedere una chiave privata e un identificatore di sicurezza del pacchetto (SID).

  2. Scrivi il codice sul tuo server applicazioni per eseguire l'autenticazione con WNS tramite la chiave privata e il SID del pacchetto, prima di inviare una notifica push dal server.

  3. Prepara con cura una notifica push WNS non elaborata ed esegui un POST HTTP al canale di notifica che hai ricevuto in precedenza dall'app di Windows Runtime. Il POST HTTP deve includere altre intestazioni HTTP:

    • X-WNS-Type=wns/raw
    • Content-Type=application/octet-stream
    • Authorization=La stringa “Bearer”, uno spazio e quindi il token di autorizzazione ricevuto all'atto dell'autenticazione

    Il corpo del POST HTTP deve includere tutto il contesto che vuoi fornire all'app client quando essa esegue l'attività in background attivata dalla ricezione della notifica di push non elaborata. La quantità di dati massima che puoi includere nel payload della notifica non elaborata è di 5 KB.

    Quando il client riceve la notifica, l'attività in background viene attivata e il payload dei dati specificato viene passato, diventando così accessibile tramite il codice dell'attività in background dell'app.

Passaggi precedenti

Per altre informazioni su come creare un'app della schermata di blocco per ricevere le notifiche di rete in background che utilizzano le notifiche push non elaborate, vedi Guida introduttiva: Creazione di un'app della schermata di blocco che usa notifiche push in background non elaborate.

Altri passaggi

Per altre informazioni su come scrivere un'attività in background per ricevere le notifiche di rete in background che utilizzano le notifiche push non elaborate, vedi Guida introduttiva: Come scrivere un'attività in background per le notifiche push non elaborate.

Per altre informazioni su linee guida ed elenchi di controllo per l'uso delle notifiche push non elaborate, vedi

Linee guida ed elenco di controllo per le notifiche non elaborate.

Argomenti correlati

Altre risorse

Aggiunta del supporto di rete

Funzionalità di rete in background

Linee guida ed elenco di controllo per le notifiche non elaborate

Come eseguire l'autenticazione con Servizi notifica Push Windows (WNS)

Come usare WNS per recapitare notifiche push non elaborate a un'app nella schermata di blocco

Come scrivere un'attività in background per le notifiche push non elaborate

Panoramica della schermata di blocco

Panoramica delle notifiche push

Come creare di un'app della schermata di blocco che usa notifiche push in background non elaborate

Supporto dell'app con attività in background

Risoluzione dei problemi e debug delle connessioni di rete

Riferimento

HttpClient

HttpClientHandler

IXMLHTTPRequest2

System.Net.Http

Windows.ApplicationModel.Background

Windows.Networking.BackgroundTransfer

Windows.Networking.PushNotifications

Windows.Networking.Sockets

Windows.Web.Http

Esempi

Esempio di attività in background

Esempio di app nella schermata di blocco

Esempio di notifiche push e periodiche sul lato client

Esempio di notifiche non elaborate