Invio di notifiche push con Hub di notifica di Azure in Windows PhoneSending push notifications with Azure Notification Hubs on Windows Phone

PanoramicaOverview

Nota

Per completare l'esercitazione, è necessario disporre di un account Azure attivo.To complete this tutorial, you must have an active Azure account. Se non si dispone di un account, è possibile creare un account di valutazione gratuita in pochi minuti.If you don't have an account, you can create a free trial account in just a couple of minutes. Per informazioni dettagliate, vedere la pagina relativa alla versione di valutazione gratuita di Azure.For details, see Azure Free Trial.

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.This tutorial shows you how to use Azure Notification Hubs to send push notifications to a Windows Phone 8 or Windows Phone 8.1 Silverlight application. Se si usa Windows Phone 8.1 (non Silverlight), fare riferimento alla versione Windows Universal .If you are targeting Windows Phone 8.1 (non-Silverlight), then refer to the Windows Universal version. In questa esercitazione si creerà un'app per Windows Phone 8 vuota che riceve notifiche push tramite il Servizio di notifica Push di Microsoft.In this tutorial, you create a blank Windows Phone 8 app that receives push notifications by using the Microsoft Push Notification Service (MPNS). Al termine, sarà possibile usare l’hub di notifica per trasmettere le notifiche push a tutti i dispositivi che eseguono l'app.When you're finished, you'll be able to use your notification hub to broadcast push notifications to all the devices running your 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.The Notification Hubs Windows Phone SDK does not support using the Windows Push Notification Service (WNS) with Windows Phone 8.1 Silverlight apps. 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.To use WNS (instead of MPNS) with Windows Phone 8.1 Silverlight apps, follow the [Notification Hubs - Windows Phone Silverlight tutorial], which uses REST APIs.

In questa esercitazione viene illustrato uno scenario di trasmissione semplice tramite hub di notifica.The tutorial demonstrates the simple broadcast scenario in using Notification Hubs.

PrerequisitiPrerequisites

Per completare questa esercitazione, è necessario disporre di:This tutorial requires the following:

Il completamento di questa esercitazione costituisce un prerequisito per tutte le altre esercitazioni di Hub notifica relative ad app per Windows Phone 8.Completing this tutorial is a prerequisite for all other Notification Hubs tutorials for Windows Phone 8 apps.

Creare l'hub di notificaCreate your notification hub

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Selezionare Nuovo > Web e dispositivi mobili > Hub di notifica.Select New > Web + Mobile > Notification Hub.

    Portale di Azure: creare un hub di notifica

  3. Nella casella Hub di notifica digitare un nome univoco.In the Notification Hub box, type a unique name. Selezionare l'area, la sottoscrizione e il gruppo di risorse (se già disponibili).Select your Region, Subscription, and Resource Group (if you have one already).

    Se si ha già un spazio dei nomi del bus di servizio in cui si vuole creare l'hub, seguire questa procedura:If you already have a service bus namespace that you want to create the hub in, do the following:

    a.a. Nell'area Spazio dei nomi selezionare il collegamento Seleziona esistente.In the Namespace area, select the Select Existing link.

    b.b. Selezionare Crea.Select Create.

    Se non si ha già uno spazio dei nomi del bus di servizio, è possibile usare il nome predefinito, che viene creato in base al nome dell'hub (se lo spazio dei nomi è disponibile).If you don't already have a service bus namespace, you can use the default name, which is created based on the hub name (if the namespace name is available).

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

    Dopo avere creato lo spazio dei nomi e l'hub di notifica, viene aperto il portale di Azure.After you've created the namespace and notification hub, the Azure portal opens.

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

  4. Selezionare Impostazioni > Criteri di accesso.Select Settings > Access Policies. Prendere nota delle due stringhe di connessione disponibili.Note the two connection strings that are available to you. Saranno necessarie in un secondo momento per gestire le notifiche push.You will need them to handle push notifications later.

    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.Click the Notification Services section (within Settings), click on Windows Phone (MPNS) and then click the Enable unauthenticated push check box.

  Portale di Azure - Abilita notifiche push non autenticate

L'hub viene creato e configurato per l'invio di notifiche autenticate per Windows Phone.Your hub is now created and configured to send unauthenticated notification for Windows Phone.

Nota

In questa esercitazione verrà usato il Servizio notifica Push Microsoft in modalità senza autenticazione.This tutorial uses MPNS in unauthenticated mode. Tale modalità prevede restrizioni in relazione alle notifiche che è possibile inviare a ciascun canale.MPNS unauthenticated mode comes with restrictions on notifications that you can send to each channel. Hub di notifica supporta la modalità di autenticazione con Servizio notifica push Microsoft consentendo di caricare il certificato.Notification Hubs supports MPNS authenticated mode by allowing you to upload your certificate.

Connettere l'app all'hub di notificaConnecting your app to the notification hub

  1. In Visual Studio creare una nuova applicazione per Windows Phone 8.In Visual Studio, create a new Windows Phone 8 application.

    ![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.In Visual Studio 2013 Update 2 or later, you instead create a Windows Phone Silverlight application.

    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.In Visual Studio, right-click the solution, and then click Manage NuGet Packages.

    Verrà visualizzata la finestra di dialogo Gestisci pacchetti NuGet .This displays the Manage NuGet Packages dialog box.

  3. Cercare WindowsAzure.Messaging.Managed , quindi fare clic su Installae accettare le condizioni per l'utilizzo.Search for WindowsAzure.Messaging.Managed and click Install, and then accept the terms of use.

    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.This downloads, installs, and adds a reference to the Azure Messaging library for Windows by using the WindowsAzure.Messaging.Managed NuGet package.

  4. Aprire il file App.xaml.cs e aggiungere le istruzioni using seguenti:Open the file App.xaml.cs and add the following using statements:

     using Microsoft.Phone.Notification;
     using Microsoft.WindowsAzure.Messaging;
    
  5. Aggiungere il codice seguente all'inizio del metodo Application_Launching in App.xaml.cs:Add the following code at the top of Application_Launching method 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 .The value MyPushChannel is an index that is used to lookup an existing channel in the HttpNotificationChannel collection. Se non è disponibile, creare una nuova voce con lo stesso nome.If there isn't one there, create a new entry with that name.

    Assicurarsi di inserire il nome dell'hub e la stringa di connessione denominata DefaultListenSharedAccessSignature e ottenuta nella sezione precedente.Make sure to insert the name of your hub and the connection string called DefaultListenSharedAccessSignature that you obtained in the previous section. 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.This code retrieves the channel URI for the app from MPNS, and then registers that channel URI with your notification hub. Garantisce inoltre che il valore di ChannelURI venga registrato nell'hub di notifica a ogni avvio dell'applicazione.It also guarantees that the channel URI is registered in your notification hub each time the application is launched.

    Nota

    In questa esercitazione viene inviata una notifica di tipo avviso popup al dispositivo.This tutorial sends a toast notification to the device. Quando si invia una notifica di tipo riquadro, è invece necessario chiamare il metodo BindToShellTile sul canale.When you send a tile notification, you must instead call the BindToShellTile method on the channel. Per supportare sia la notifica di tipo riquadro che quella di tipo avviso popup, chiamare sia BindToShellTile che BindToShellToast.To support both toast and tile notifications, call both BindToShellTile and 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.In Solution Explorer, expand Properties, open the WMAppManifest.xml file, click the Capabilities tab, and make sure that the ID_CAP_PUSH_NOTIFICATION capability is checked.

    ![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.Press the F5 key to run the app.

    Nell'app verrà visualizzato un messaggio di registrazione.A registration message is displayed in the app.

  8. Chiudere l'app.Close the app.

    Nota

    Per ricevere una notifica push di tipo avviso popup, l'applicazione non deve essere in esecuzione in primo piano.To receive a toast push notification, the application must not be running in the foreground.

Inviare notifiche push dal back-endSend push notifications from your backend

È possibile inviare notifiche push usando Hub di notifica da qualsiasi back-end tramite l'interfaccia REST pubblica.You can send push notifications by using Notification Hubs from any backend via the public REST interface. In questa esercitazione vengono inviate notifiche push con un'applicazione console .NET.In this tutorial, you send push notifications using a .NET console application.

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.For an example of how to send push notifications from an ASP.NET WebAPI backend that's integrated with Notification Hubs, see Azure Notification Hubs Notify Users with .NET backend.

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.For an example of how to send push notifications by using the REST APIs, check out How to use Notification Hubs from Java and How to use Notification Hubs from 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.Right-click the solution, select Add and New Project..., and then under Visual C#, click Windows and Console Application, and click OK.

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

    Una nuova applicazione console Visual C# viene aggiunta alla soluzione.This adds a new Visual C# console application to the solution. Questa operazione può essere eseguita anche in una soluzione separata.You can also do this in a separate solution.

  2. Fare clic su Strumenti, su Gestione pacchetti libreria e quindi su Console di Gestione Pacchetti.Click Tools, click Library Package Manager, and then click Package Manager Console.

    Verrà visualizzata la console di Gestione pacchetti.This displays the Package Manager Console.

  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:In the Package Manager Console window, set the Default project to your new console application project, and then in the console window, execute the following command:

    Install-Package Microsoft.Azure.NotificationHubs
    

    Verrà aggiunto un riferimento all’SDK dell’Hub di notifica di Azure mediante il pacchetto NuGet Microsoft.Azure.NotificationHubs.This adds a reference to the Azure Notification Hubs SDK using the Microsoft.Azure.Notification Hubs NuGet package.

  4. Aprire il file Program.cs e aggiungere l'istruzione using seguente:Open the Program.cs file and add the following using statement:

     using Microsoft.Azure.NotificationHubs;
    
  5. Nella classe Program aggiungere il metodo seguente.In the Program class, add the following method:

     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.Make sure to replace the <hub name> placeholder with the name of the notification hub that appears in the portal. Sostituire anche il segnaposto relativo alla stringa di connessione con la stringa di connessione denominata DefaultFullSharedAccessSignature ottenuta nella sezione "Configurare l'hub di notifica".Also, replace the connection string placeholder with the connection string called DefaultFullSharedAccessSignature that you obtained in the section "Configure your notification hub."

    Nota

    Assicurarsi di usare la stringa di connessione con accesso Full, non con accesso Listen.Make sure that you use the connection string with Full access, not Listen access. La stringa con accesso di tipo attesa non ha infatti le autorizzazioni per l'invio di notifiche push.The listen-access string does not have permissions to send push notifications.

  6. Aggiungere la riga seguente nel metodo Main :Add the following line in your Main method:

      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.With your Windows Phone emulator running and your app closed, set the console application project as the default startup project, and then press the F5 key to run the app.

    Verrà visualizzata una notifica push di tipo avviso popup.You will receive a toast push notification. Se si tocca il bannner dell'avviso popup, verrà caricata l'app.Tapping the toast banner loads the app.

Tutti i possibili payload sono disponibili negli argomenti relativi al catalogo degli avvisi popup e al catalogo dei riquadri in MSDN.You can find all the possible payloads in the [toast catalog] and [tile catalog] topics on MSDN.

Passaggi successiviNext steps

In questo semplice esempio le notifiche push sono state trasmesse a tutti i dispositivi Windows Phone 8.In this simple example, you broadcasted push notifications to all your Windows Phone 8 devices.

Per rivolgersi a utenti specifici, fare riferimento all'esercitazione Usare Hub di notifica per inviare notifiche push agli utenti .In order to target specific users, refer to the [Use Notification Hubs to push notifications to users] tutorial.

Se si desidera segmentare gli utenti per gruppi di interesse, consultare Utilizzo di Hub di notifica per inviare le ultime notizie.If you want to segment your users by interest groups, you can read [Use Notification Hubs to send breaking news].

Per ulteriori informazioni sull'utilizzo di Hub di notifica, vedere la pagina delle linee guida su Hub di notifica.Learn more about how to use Notification Hubs in [Notification Hubs Guidance].