Invio di notifiche push con Hub di notifica di Azure in Windows Phone

Panoramica

Nota

Per completare l'esercitazione, è necessario disporre di un account Azure attivo. Se non si dispone di un account, è possibile creare un account di valutazione gratuita in pochi minuti. Per informazioni dettagliate, vedere la pagina relativa alla versione di valutazione gratuita di Azure.

Questa esercitazione descrive come usare Hub di notifica di Azure per inviare notifiche push a un'applicazione per Windows Phone 8 o Windows Phone 8.1 Silverlight. Se si usa Windows Phone 8.1 (non Silverlight), fare riferimento alla versione Windows Universal . In questa esercitazione si creerà un'app per Windows Phone 8 vuota che riceve notifiche push tramite il Servizio di notifica Push di Microsoft. Al termine, sarà possibile usare l’hub di notifica per trasmettere le notifiche push a tutti i dispositivi che eseguono l'app.

Nota

L’SDK Hub di notifica per Windows Phone [AZURE.NOTE] non supporta l'uso di Windows Push Notification Service (WNS) con app per Windows Phone 8.1 Silverlight. Per usare WNS (invece di MPNS) con le app di Windows Phone 8.1 Silverlight, completare la seguente Esercitazione su Hub di notifica - Windows Phone Silverlightche usa le API REST.

In questa esercitazione viene illustrato uno scenario di trasmissione semplice tramite hub di notifica.

Prerequisiti

Per completare questa esercitazione, è necessario disporre di:

Il completamento di questa esercitazione costituisce un prerequisito per tutte le altre esercitazioni di Hub notifica relative ad app per Windows Phone 8.

Creare l'hub di notifica

  1. Accedere al portale di Azuree quindi fare clic su +NUOVO nella parte superiore sinistra della schermata.
  2. Fare clic su Nuovo, quindi su Web e dispositivi mobili. Scorrere verso il basso se necessario, quindi fare clic su Hub di notifica.

    Portale di Azure: creare hub di notifica

  3. Assicurarsi di specificare un nome univoco nel campo Hub di notifica . Selezionare l'area, la sottoscrizione e il gruppo di risorse desiderati (se già disponibili).

    Se è già disponibile uno spazio dei nomi del bus di servizio in cui creare l'hub, selezionarlo usando l'opzione Seleziona esistente nel campo Spazio dei nomi. In caso contrario, usare il nome predefinito che verrà creato in base al nome dell'hub, se tale nome è disponibile.

    Al termine, fare clic su Crea.

    Portale di Azure: impostare le proprietà dell'hub di notifica

  4. Dopo aver creato l'hub di notifica e lo spazio dei nomi, sarà possibile accedere alle rispettive pagine del portale.

    Portale di Azure: pagina del portale dell'hub di notifica

  5. Fare clic su Impostazioni e quindi su Criteri di accesso. Prendere nota delle due stringhe di connessione che saranno disponibili, perché saranno necessarie per la gestione delle notifiche push in un secondo momento.

    Portale di Azure: stringhe di connessione dell'hub di notifica

  1. Fare clic sulla sezione Servizi di notifica in Impostazioni, fare clic su Windows Phone (MPNS) e quindi selezionare la casella di controllo Abilita notifiche push non autenticate.

  Portale di Azure - Abilita notifiche push non autenticate

L'hub viene creato e configurato per l'invio di notifiche autenticate per Windows Phone.

Nota

In questa esercitazione verrà usato il Servizio notifica Push Microsoft in modalità senza autenticazione. Tale modalità prevede restrizioni in relazione alle notifiche che è possibile inviare a ciascun canale. Hub di notifica supporta la modalità di autenticazione con Servizio notifica push Microsoft consentendo di caricare il certificato.

Connettere l'app all'hub di notifica

  1. In Visual Studio creare una nuova applicazione per Windows Phone 8.

    ![Visual Studio - New Project - Windows Phone App][13]
    

    In Visual Studio 2013 Update 2 o versioni successive verrà invece creata un'applicazione per Windows Phone Silverlight.

    Visual Studio - Nuovo progetto - App vuota - Windows Phone Silverlight

  2. In Visual Studio fare clic con il pulsante destro del mouse sulla soluzione e quindi scegliere Gestisci pacchetti NuGet.

    Verrà visualizzata la finestra di dialogo Gestisci pacchetti NuGet .

  3. Cercare WindowsAzure.Messaging.Managed , quindi fare clic su Installae accettare le condizioni per l'utilizzo.

    Visual Studio - Gestione pacchetti NuGet

    Verrà scaricato, installato e aggiunto un riferimento alla libreria di Messaggistica di Azure per Windows tramite il pacchetto WindowsAzure.Messaging.Managed NuGet.

  4. Aprire il file App.xaml.cs e aggiungere le istruzioni using seguenti:

     using Microsoft.Phone.Notification;
     using Microsoft.WindowsAzure.Messaging;
    
  5. Aggiungere il codice seguente all'inizio del metodo Application_Launching in App.xaml.cs:

     var channel = HttpNotificationChannel.Find("MyPushChannel");
     if (channel == null)
     {
         channel = new HttpNotificationChannel("MyPushChannel");
         channel.Open();
         channel.BindToShellToast();
     }
    
     channel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(async (o, args) =>
     {
         var hub = new NotificationHub("<hub name>", "<connection string>");
         var result = await hub.RegisterNativeAsync(args.ChannelUri.ToString());
    
         System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
         {
             MessageBox.Show("Registration :" + result.RegistrationId, "Registered", MessageBoxButton.OK);
         });
     });
    
    Nota

    Il valore MyPushChannel è un indice che viene usato per cercare un canale esistente nella raccolta HttpNotificationChannel . Se non è disponibile, creare una nuova voce con lo stesso nome.

    Assicurarsi di inserire il nome dell'hub e la stringa di connessione denominata DefaultListenSharedAccessSignature e ottenuta nella sezione precedente. Questo codice consente di recuperare il valore di ChannelURI per l'app dal Servizio di notifica Push di Microsoft e quindi di registrarlo con l'hub di notifica. Garantisce inoltre che il valore di ChannelURI venga registrato nell'hub di notifica a ogni avvio dell'applicazione.

    Nota

    In questa esercitazione viene inviata una notifica di tipo avviso popup al dispositivo. Quando si invia una notifica di tipo riquadro, è invece necessario chiamare il metodo BindToShellTile sul canale. Per supportare sia la notifica di tipo riquadro che quella di tipo avviso popup, chiamare sia BindToShellTile che BindToShellToast.

  6. In Esplora soluzioni espandere ProprietàWMAppManifest.xml, aprire il file **, fare clic sulla scheda **Funzionalità e assicurarsi che la funzionalità ID__CAP__PUSH_NOTIFICATION sia selezionata.

    ![Visual Studio - Windows Phone App Capabilities][14]
    
    This ensures that your app can receive push notifications. Without it, any attempt to send a push notification to the app will fail.
    
  7. Premere F5 per eseguire l'app.

    Nell'app verrà visualizzato un messaggio di registrazione.

  8. Chiudere l'app.

    Nota

    Per ricevere una notifica push di tipo avviso popup, l'applicazione non deve essere in esecuzione in primo piano.

Inviare notifiche push dal back-end

È possibile inviare notifiche push usando Hub di notifica da qualsiasi back-end tramite l'interfaccia REST pubblica. In questa esercitazione vengono inviate notifiche push con un'applicazione console .NET.

Per un esempio di come inviare notifiche push da un back-end WebAPI ASP.NET integrato con Hub di notifica, vedere Uso di Hub di notifica di Azure per inviare notifiche agli utenti con back-end .NET.

Per un esempio di invio di notifiche push con le API REST, vedere Come usare gli hub di notifica da Java e Come usare gli hub di notifica da PHP.

  1. Fare clic con il pulsante destro del mouse sulla soluzione, scegliere Aggiungi e Nuovo progetto, quindi in Visual C# fare clic su Windows, su Applicazione console e infine su OK.

    ![Visual Studio - New Project - Console Application][6]
    

    Una nuova applicazione console Visual C# viene aggiunta alla soluzione. Questa operazione può essere eseguita anche in una soluzione separata.

  2. Fare clic su Strumenti, su Gestione pacchetti libreria e quindi su Console di Gestione Pacchetti.

    Verrà visualizzata la console di Gestione pacchetti.

  3. Nella finestra Console di Gestione pacchetti impostare Progetto predefinito sul nuovo progetto di applicazione console, quindi eseguire il comando seguente nella finestra della console:

    Install-Package Microsoft.Azure.NotificationHubs
    

    Verrà aggiunto un riferimento all’SDK dell’Hub di notifica di Azure mediante il pacchetto NuGet Microsoft.Azure.NotificationHubs.

  4. Aprire il file Program.cs e aggiungere l'istruzione using seguente:

     using Microsoft.Azure.NotificationHubs;
    
  5. Nella classe Program aggiungere il metodo seguente.

     private static async void SendNotificationAsync()
     {
         NotificationHubClient hub = NotificationHubClient
             .CreateClientFromConnectionString("<connection string with full access>", "<hub name>");
         string toast = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
             "<wp:Notification xmlns:wp=\"WPNotification\">" +
                "<wp:Toast>" +
                     "<wp:Text1>Hello from a .NET App!</wp:Text1>" +
                "</wp:Toast> " +
             "</wp:Notification>";
         await hub.SendMpnsNativeNotificationAsync(toast);
     }
    

    Assicurarsi di sostituire il segnaposto <hub name> con il nome dell'hub di notifica visualizzato nel portale. Sostituire anche il segnaposto relativo alla stringa di connessione con la stringa di connessione denominata DefaultFullSharedAccessSignature ottenuta nella sezione "Configurare l'hub di notifica".

    Nota

    Assicurarsi di usare la stringa di connessione con accesso Full, non con accesso Listen. La stringa con accesso di tipo attesa non ha infatti le autorizzazioni per l'invio di notifiche push.

  6. Aggiungere la riga seguente nel metodo Main :

      SendNotificationAsync();
      Console.ReadLine();
    
  7. Con l'emulatore di Windows Phone in esecuzione e l'app chiusa, impostare il progetto di applicazione console come progetto di avvio predefinito, quindi premere F5 per eseguire l'app.

    Verrà visualizzata una notifica push di tipo avviso popup. Se si tocca il bannner dell'avviso popup, verrà caricata l'app.

Tutti i possibili payload sono disponibili negli argomenti relativi al catalogo degli avvisi popup e al catalogo dei riquadri in MSDN.

Passaggi successivi

In questo semplice esempio le notifiche push sono state trasmesse a tutti i dispositivi Windows Phone 8.

Per rivolgersi a utenti specifici, fare riferimento all'esercitazione [Usare Hub di notifica per inviare notifiche push agli utenti] .

Se si desidera segmentare gli utenti per gruppi di interesse, consultare [Utilizzo di Hub di notifica per inviare le ultime notizie].

Per ulteriori informazioni sull'utilizzo di Hub di notifica, vedere la pagina delle linee guida su Hub di notifica.