Linguaggio: HTML | XAML

Come richiedere, creare e salvare un canale di notifica (XAML)

Applies to Windows and Windows Phone

Nota  Se non usi C#/VB/C++, vedi Come richiedere, creare e salvare un canale di notifica (HTML).

Puoi aprire un URI (Uniform Resource Identifier) di canale tramite il quale l'app può ricevere notifiche push, quindi puoi inviare il canale al server, che lo usa per inviare le notifiche, e chiuderlo quando non è più necessario. Un canale è un indirizzo univoco che rappresenta un singolo utente in un singolo dispositivo per un'app o un riquadro secondario specifico.

È consigliabile richiedere un nuovo canale a ogni avvio dell'app e aggiornare il server cloud quando l'URI viene modificato. Per altre informazioni, vedi Osservazioni.

Importante  I canali di notifica scadono automaticamente dopo 30 giorni.

Cosa sapere

Tecnologie

  • Windows Runtime

Prerequisiti

  • Conoscenza operativa di termini e concetti correlati a riquadri e notifiche oltre che di XML. In questo argomento si presuppone inoltre che tu sappia già come creare una semplice app di Windows Store in JavaScript usando le API di Windows Runtime.
  • Familiarità con i concetti, i requisiti e il funzionamento delle notifiche push e di Servizi notifica Push Windows (WNS). Per queste informazioni, vedi la panoramica di Servizi notifica Push Windows.

Istruzioni

Passaggio 1: Aggiungere dichiarazioni di spazio dei nomi

Windows.UI.Notifications include API di tipo avviso popup.



using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
using Windows.Networking.PushNotifications;

Passaggio 2: Richiedere un URI di canale

Questo esempio richiede un URI di canale. La richiesta viene effettuata alla piattaforma client di notifica, che a sua volta richiede l'URI di canale a WNS. Dopo il completamento della richiesta, il valore restituito è un oggetto PushNotificationChannel contenente l'URI.



PushNotificationChannel channel = null;

try
{
    channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
}

catch (Exception ex)
{ 
    // Could not create a channel. 
}

Passaggio 3: Inviare l'URI di canale al server

L'URI di canale viene inserito in un pacchetto in una richiesta HTTP POST e inviato al server.

Importante  Dovrai inviare tali informazioni al server in modo sicuro. È consigliabile richiedere all'app di autenticarsi con il server al momento della trasmissione dell'URI di canale. Codifica le informazioni e usa un protocollo protetto, ad esempio HTTPS.



String serverUrl = "http://www.contoso.com";

// Create the web request.
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(serverUrl);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
byte[] channelUriInBytes = System.Text.Encoding.UTF8.GetBytes("ChannelUri=" + channel.Uri);

// Write the channel URI to the request stream.
Stream requestStream = await webRequest.GetRequestStreamAsync();
requestStream.Write(channelUriInBytes, 0, channelUriInBytes.Length);

try
{
    // Get the response from the server.
    WebResponse response = await webRequest.GetResponseAsync();
    StreamReader requestReader = new StreamReader(response.GetResponseStream());
    String webResponse = requestReader.ReadToEnd();
}

catch (Exception ex)
{
    // Could not send channel URI to server.
}

Osservazioni

Richiesta di canali

È consigliabile richiedere un nuovo canale ogni volta che l'app viene richiamata, usando la logica seguente:

  1. Richiedi un canale.
  2. Confronta il nuovo canale con quello precedente. Se il canale è identico a quello precedente, non devi fare altro. È necessario che l'app archivi il canale in locale ogni volta che lo invia al servizio, in modo che tu possa successivamente effettuare il confronto.
  3. Se il canale è diverso, invia il nuovo canale al servizio Web. Includi la logica di gestione degli errori che prevede sempre l'invio di un nuovo canale nei seguenti casi:
    • L'app non ha mai inviato un canale al servizio Web.
    • L'ultimo tentativo eseguito dall'app di inviare il canale al servizio Web ha avuto esito negativo.

Non è detto che chiamate diverse al metodo CreatePushNotificationChannelForApplicationAsync restituiscano sempre un canale diverso. Se il canale non è cambiato dall'ultima chiamata, la tua app può evitare di inviare di nuovo lo stesso canale al servizio per non generare traffico Internet inutilmente. Si possono assegnare a un'app più URI di canale validi contemporaneamente. Dal momento che ogni canale univoco rimane valido fino alla scadenza, si può chiedere senza problemi un nuovo canale perché questo non influirà sull'ora di scadenza di eventuali canali precedenti.

Richiedendo un nuovo canale ogni volta che l'app viene richiamata, aumenti le possibilità di avere sempre accesso a un canale valido. Questo è particolarmente importante se per lo scenario del riquadro o dell'avviso popup è essenziale che il contenuto sia sempre in tempo reale. Se ti preoccupa il fatto che un utente possa non eseguire la tua app più di una volta ogni 30 giorni, puoi implementare un'attività in background per l'esecuzione periodica del codice di richiesta del canale.

Gestione degli errori nelle richieste di canale

Se la connessione Internet non è disponibile, la chiamata al metodo CreatePushNotificationChannelForApplicationAsync può non riuscire. Per gestire il problema, aggiungi la logica per effettuare un nuovo tentativo al codice illustrato al passaggio 2. Ti consigliamo di aggiungere tre tentativi con un intervallo di 10 secondi tra un tentativo non riuscito e l'altro. Se tutti e tre i tentativi non riescono, per riprovare la tua app deve attendere finché non viene avviata nuovamente dall'utente.

Chiusura dei canali

L'app può interrompere immediatamente il recapito delle notifiche per tutti i canali chiamando il metodo PushNotificationChannel.Close. Sebbene non sia una procedura comune, in alcuni scenari può essere necessario interrompere il recapito di tutte le notifiche all'app. Ad esempio, se l'app prevede l'uso degli account utente e un utente si disconnette dall'app, è prevedibile che il riquadro non mostri più le informazioni personali di tale utente. Per cancellare correttamente il riquadro in questione e interrompere il recapito delle notifiche, esegui i passaggi seguenti:

  1. Interrompi tutti gli aggiornamenti del riquadro chiamando il metodo PushNotificationChannel.Close per qualsiasi canale di notifica che recapita all'utente notifiche di tipo riquadro, avviso popup o non elaborato. Chiamando il metodo Close ti accerti che non vengano recapitate al cliente altre notifiche per tale utente.
  2. Cancella il contenuto del riquadro chiamando il metodo TileUpdater.Clear che rimuove i dati dell'utente precedente dal riquadro.

Argomenti correlati

Esempio di notifiche push e periodiche
Panoramica di Servizi notifica Push Windows (WNS)
Guida introduttiva: Invio di una notifica push
Come eseguire l'autenticazione con Servizi notifica Push Windows (WNS)
Linee guida ed elenco di controllo per le notifiche push
Intestazioni delle richieste e delle risposte per Servizi notifica Push Windows

 

 

Mostra:
© 2014 Microsoft