Introduzione ad Hub di notifica di Azure per le app Xamarin.iOSGet started with Azure Notification Hubs for Xamarin.iOS apps

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 Azure, è possibile creare un account di valutazione gratuito 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 illustra come usare Hub di notifica di Azure per inviare notifiche push a un'applicazione per iOS.This tutorial shows you how to use Azure Notification Hubs to send push notifications to an iOS application. Si creerà un'app Xamarin.iOS vuota che riceve notifiche push attraverso Apple Push Notification Service (APNS).You'll create a blank Xamarin.iOS app that receives push notifications by using the Apple Push Notification Service (APNs).

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. Il codice compilato è disponibile nell'esempio di app NotificationHubs.The finished code is available in the NotificationHubs app sample.

Questa esercitazione illustra un semplice scenario di trasmissione di un messaggio push con Hub di notifica.This tutorial demonstrates the simple push message broadcast scenario with Notification Hubs.

prerequisitiPrerequisites

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

  • Versione più recente di XcodeLatest version of XCode
  • Dispositivo compatibile con iOS 10 o versione successivaAn iOS 10 (or later version) compatible device
  • Apple Developer Program .Apple Developer Program membership.
  • Visual Studio per Mac[Visual Studio for Mac]

    Nota

    Considerati i requisiti di configurazione delle notifiche push di iOS, è necessario distribuire e testare l'applicazione di esempio in un dispositivo iOS, iPhone o iPad, anziché in un simulatore.Because of configuration requirements for iOS push notifications, you must deploy and test the sample application on a physical iOS device (iPhone or iPad) instead of in the simulator.

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

Generare il file di richiesta di firma del certificatoGenerate the Certificate Signing Request file

Il servizio Apple Push Notification Service (APNS) usa i certificati per autenticare le notifiche push.The Apple Push Notification Service (APNS) uses certificates to authenticate your push notifications. Seguire queste istruzioni per creare il certificato push necessario per inviare e ricevere notifiche.Follow these instructions to create the necessary push certificate to send and receive notifications. Per altre informazioni su questi concetti, vedere la documentazione ufficiale relativa al servizio Apple Push Notification Service .For more information on these concepts see the official Apple Push Notification Service documentation.

Generare il file della richiesta di firma del certificato usato da Apple per la generazione di un certificato push firmato.Generate the Certificate Signing Request (CSR) file, which is used by Apple to generate a signed push certificate.

  1. Sul Mac eseguire lo strumento Accesso Portachiavi.On your Mac, run the Keychain Access tool. Può essere aperto dalla cartella Utilities (Utility) o Other (Altro) nella finestra di avvio.It can be opened from the Utilities folder or the Other folder on the launch pad.
  2. Fare clic su Keychain Access (Accesso Portachiavi), espandere Certificate Assistant (Assistente Certificato), quindi fare clic su Request a Certificate from a Certificate Authority... (Richiedi un certificato da una Autorità di Certificazione...).Click Keychain Access, expand Certificate Assistant, then click Request a Certificate from a Certificate Authority....

  3. Selezionare User Email Address (Indirizzo e-mail utente) e Common Name (Nome comune), assicurarsi che l'opzione Saved to disk (Salvata sul disco) sia selezionata, quindi fare clic su Continue (Continua).Select your User Email Address and Common Name , make sure that Saved to disk is selected, and then click Continue. Lasciare vuoto il campo Indirizzo e-mail CA , in quanto non è obbligatorio.Leave the CA Email Address field blank as it is not required.

  4. Digitare un nome per il file della richiesta di firma del certificato (CSR) in Save As, (Salva col nome), selezionare il percorso in Where (Posizione), quindi fare clic su Save (Salva).Type a name for the Certificate Signing Request (CSR) file in Save As, select the location in Where, then click Save.

    Il file CSR viene salvato nel percorso selezionato. Il percorso predefinito è Scrivania.This saves the CSR file in the selected location; the default location is in the Desktop. Tenere a mente il percorso scelto per il file.Remember the location chosen for this file.

A questo punto registrare l'app con Apple, abilitare le notifiche push e caricare il file CSR esportato per creare un certificato push.Next, you will register your app with Apple, enable push notifications, and upload this exported CSR to create a push certificate.

Registrare l'app per le notifiche pushRegister your app for push notifications

Per poter inviare notifiche push a un'app per iOS, è necessario registrare l'applicazione con Apple ed eseguire un'altra registrazione per abilitare le notifiche push.To be able to send push notifications to an iOS app, you must register your application with Apple and also register for push notifications.

  1. Se l'app non è ancora stata registrata, accedere al portale di provisioning iOS su Apple Developer Center, eseguire l'accesso con il proprio ID Apple, fare clic su Identifiers, quindi su App IDs e infine fare clic sul segno + per registrare una nuova app.If you have not already registered your app, navigate to the iOS Provisioning Portal at the Apple Developer Center, log on with your Apple ID, click Identifiers, then click App IDs, and finally click on the + sign to register a new app.

  2. Aggiornare i tre campi seguenti per la nuova app e quindi fare clic su Continue:Update the following three fields for your new app and then click Continue:

    • Name: digitare un nome descrittivo per l'app nel campo Name della sezione App ID Description.Name: Type a descriptive name for your app in the Name field in the App ID Description section.
    • Bundle Identifier: nella sezione Explicit App ID immettere un valore in Bundle Identifier nel formato <Organization Identifier>.<Product Name>, come indicato nel documento App Distribution Guide.Bundle Identifier: Under the Explicit App ID section, enter a Bundle Identifier in the form <Organization Identifier>.<Product Name> as mentioned in the App Distribution Guide. Organization Identifier e Product Name devono corrispondere all'identificatore dell'organizzazione e al nome del prodotto che verranno usati quando si crea il progetto XCode.The Organization Identifier and Product Name you use must match the organization identifier and product name you will use when you create your XCode project. Nella schermata seguente NotificationHubs viene usato come identificatore di organizzazione e GetStarted viene usato come nome del prodotto.In the screeshot below NotificationHubs is used as a organization idenitifier and GetStarted is used as the product name. Verificare che corrispondano ai valori che si useranno nel progetto XCode, in modo da usare il profilo di pubblicazione corretto con XCode.Making sure this matches the values you will use in your XCode project will allow you to use the correct publishing profile with XCode.
    • Notifiche Push: selezionare l'opzione Notifiche Push nella sezione Servizi app.Push Notifications: Check the Push Notifications option in the App Services section, .

      Verrà generato l'ID app e all'utente verrà chiesto di confermare le informazioni.This generates your App ID and requests you to confirm the information. Fare clic su Registra per confermare il nuovo ID app.Click Register to confirm the new App ID.

      Dopo aver fatto clic su Register (Registrazione) verrà visualizzata la schermata Registrazione completa, come illustrato di seguito.Once you click Register, you will see the Registration complete screen, as shown below. Fare clic su Done.Click Done.

  3. In Developer Center, sotto App IDs trovare l'ID app appena creato e fare clic sulla relativa riga.In the Developer Center, under App IDs, locate the app ID that you just created, and click on its row.

    Facendo clic sull'ID app verranno visualizzati i dettagli relativi all'app.Clicking on the app ID will display the app details. Fare clic sul pulsante Edit nella parte inferiore della schermata.Click the Edit button at the bottom.

  4. Scorrere fino alla fine della schermata e fare clic su Crea Certificato... nella sezione Development Push SSL Certificate.Scroll to the bottom of the screen, and click the Create Certificate... button under the section Development Push SSL Certificate.

    Verrà visualizzato l'assistente "Add iOS Certificate".This displays the "Add iOS Certificate" assistant.

    Nota

    Questa esercitazione usa un certificato di sviluppo.This tutorial uses a development certificate. La stessa procedura viene usata per registrare un certificato di produzione.The same process is used when registering a production certificate. Per l'invio delle notifiche, assicurarsi di usare lo stesso tipo di certificato.Just make sure that you use the same certificate type when sending notifications.

  5. Fare clic su Choose File, passare al percorso in cui è stato salvato il file CSR creato durante la prima attività, quindi fare clic su Generate.Click Choose File, browse to the location where you saved the CSR file that you created in the first task, then click Generate.

  6. Al termine della creazione del certificato nel portale, fare clic su Download e quindi su Done.After the certificate is created by the portal, click the Download button, and click Done.

    Il certificato di firma verrà scaricato e salvato nel computer nella cartella Download.This downloads the certificate and saves it to your computer in your Downloads folder.

    Nota

    Per impostazione predefinita, il file scaricato di un certificato di sviluppo è denominato aps_development.cer.By default, the downloaded file a development certificate is named aps_development.cer.

  7. Fare doppio clic sul certificato push scaricato aps_development.cer.Double-click the downloaded push certificate aps_development.cer.

    Il nuovo certificato verrà installato nel Portachiavi, come mostrato di seguito:This installs the new certificate in the Keychain, as shown below:

    Nota

    Il nome del certificato potrebbe essere diverso, ma verrà preceduto da Apple Development iOS Push Services:.The name in your certificate might be different, but it will be prefixed with Apple Development iOS Push Services:.

  8. In Accesso portachiavi fare clic con il pulsante destro del mouse sul nuovo certificato push creato nella categoria Certificati .In Keychain Access, right-click the new push certificate that you created in the Certificates category. Fare clic su Esporta, assegnare un nome al file, selezionare il formato .p12 e quindi fare clic su Salva.Click Export, name the file, select the .p12 format, and then click Save.

    Prendere nota del nome del file e del percorso del certificato con estensione p12 esportato.Make a note of the file name and location of the exported .p12 certificate. Verrà usato per abilitare l'autenticazione con il servizio APN.It will be used to enable authentication with APNS.

    Nota

    In questa esercitazione viene creato un file QuickStart.p12.This tutorial creates a QuickStart.p12 file. Il nome e il percorso del file potrebbero essere diversi.Your file name and location might be different.

Creare un profilo di provisioning per l'appCreate a provisioning profile for the app

  1. Nel portale di provisioning iOS selezionare Provisioning Profiles, quindi All e infine fare clic sul pulsante + per creare un nuovo profilo.Back in the iOS Provisioning Portal, select Provisioning Profiles, select All, and then click the + button to create a new profile. Verrà avviata la procedura guidata Add iOS Provisiong ProfileThis launches the Add iOS Provisiong Profile Wizard

  2. Selezionare iOS App Development in Development come tipo di profilo di provisioning e fare clic su Continue.Select iOS App Development under Development as the provisiong profile type, and click Continue.
  3. Selezionare quindi l'ID app appena creato nell'elenco a discesa App IDe fare clic su Continue.Next, select the app ID you just created from the App ID drop-down list, and click Continue

  4. Nella schermata Select certificates selezionare il solito certificato di sviluppo usato per la firma del codice e fare clic su Continue.In the Select certificates screen, select your usual development certificate used for code signing, and click Continue. Questo non è il certificato push appena creato.This is not the push certificate you just created.

  5. In Devices selezionare i dispositivi da usare per il test e fare clic su Continue.Next, select the Devices to use for testing, and click Continue

  6. Scegliere infine un nome per il profilo in Profile Name e fare clic su Generate.Finally, pick a name for the profile in Profile Name, click Generate.

  7. Una volta creato il nuovo profilo di provisioning, fare clic per scaricarlo e installarlo nel computer di sviluppo Xcode.When the new provisioning profile is created click to download it and install it on your Xcode development machine. Fare quindi clic su Done.Then click Done.

Configurare l'hub di notifica per l'invio di notifiche push di iOSConfigure your Notification Hub for iOS push notifications

Questa sezione illustra come creare un nuovo hub di notifica e configurare l'autenticazione con il servizio APN usando il certificato push .p12 creato in precedenza.This section walks you through the steps to create a new notification hub and configure authentication with APNS using the .p12 push certificate that you previously created. Se si vuole usare un hub di notifica che è già stato creato, è possibile ignorare il passaggio 5.If you want to use a notification hub that you have already created, you can skip to step 5.

  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 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).

    Se si ha già un spazio dei nomi del bus di servizio in cui si vuole creare l'hub, seguire questa proceduraIf you already have a service bus namespace that you want to create the hub in, follow these steps

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

    b.b. Selezionare Create.Select Create.

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

  4. Dopo avere creato lo spazio dei nomi e l'hub di notifica, aprirlo selezionando Tutte le risorse e quindi selezionare l'hub di notifica creato nell'elenco.After you've created the namespace and notification hub, open it by selecting All resources and then select the created notification hub from the list.

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

  5. Selezionare Criteri di accesso dall'elenco.Select Access Policies from the list. Prendere nota delle due stringhe di connessione disponibili.Note the two connection strings that are available to you. Sono necessarie in un secondo momento per gestire le notifiche push.You need them to handle push notifications later.

    Importante

    NON usare DefaultFullSharedAccessSignature nell'applicazione.Do NOT use the DefaultFullSharedAccessSignature in your application. Deve essere usato solo nel back-end.This is meant to be used in your back-end only.

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

  1. Fare clic sul pulsante Servizi di notifica e quindi selezionare Apple (servizio APN).Click the Notification Services button, then select Apple (APNS). Selezionare Certificato, fare clic sull'icona del file e quindi selezionare il file con estensione p12 esportato in precedenza.Make sure to select Certificate, click the file icon, and select the .p12 file that you exported earlier. Assicurarsi di specificare anche la password corretta.Make sure you also specify the correct password.

    Assicurarsi di selezionare la modalità Sandbox, destinata allo sviluppo.Make sure to select Sandbox mode since this is for development. Usare la modalità Produzione solo se si vuole inviare notifiche push agli utenti che hanno acquistato l'app dallo Store.Only use the Production if you want to send push notifications to users who purchased your app from the store.

    Configurare il servizio APN nel portale di Azure

    Configurare il certificato APN nel portale di Azure

L'hub di notifica è ora configurato per l'uso con il servizio APN e sono disponibili le stringhe di connessione per la registrazione dell'app e l'invio di notifiche push.Your notification hub is now configured to work with APNS, and you have the connection strings to register your app and send push notifications.

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

Creare un nuovo progettoCreate a new project

  1. In Visual Studio creare un nuovo progetto iOS e selezionare il modello App visualizzazione singola, quindi fare clic su AvantiIn Visual Studio, create a new iOS project and select the Single View App template, and click Next

    Visual Studio - Selezionare il tipo di applicazione

  2. Immettere il nome dell'app e l'identificatore dell'organizzazione, quindi fare clic su Avanti e su CreaEnter your App Name and Organization identifier, then hit Next, then Create

  3. Nella visualizzazione della soluzione fare doppio clic su Into.plist e in Identità assicurarsi che l'identificatore del bundle corrisponda a quello usato per la creazione del profilo di provisioning.From the Solution view, double click Into.plist and under Identity make sure your Bundle Identifier matches the one used when creating your provisioning profile. In Firma accertarsi che sotto Team sia selezionato il proprio account per sviluppatore, che sia selezionato "Automatically manage signing" (Gestisci firma automaticamente) e che vengano automaticamente selezionati il certificato di firma e il profilo di provisioning.Under Signing ensure that your Developer account is selected under Team, "Automatically manage signing" is selected and your Signing Certificate and Provisioning Profile are automatically selected.

    Visual Studio - Configurazione di un'app iOS

  4. Aggiungere il pacchetto di messaggistica di Azure.Add the Azure Messaging package. Nella visualizzazione della soluzione fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi > Aggiungi pacchetti NuGet.In the Solution view, right-click the project and select Add > Add NuGet Packages. Cercare Xamarin.Azure.NotificationHubs.iOS e aggiungere il pacchetto al progetto.Search for Xamarin.Azure.NotificationHubs.iOS and add the package to your project.

  5. Aggiungere un nuovo file alla classe, assegnargli il nome Constants.cs, aggiungere le variabili seguenti e sostituire i segnaposto dei valori letterali stringa con il nome dell'hub e il valore DefaultListenSharedAccessSignature annotati in precedenza.Add a new file to your class, name it Constants.cs and add the following variables and replace the string literal placeholders with your hub name and the DefaultListenSharedAccessSignature noted earlier.

        // Azure app-specific connection string and hub path
        public const string ConnectionString = "<Azure connection string>";
        public const string NotificationHubPath = "<Azure hub path>";
    
  6. In AppDelegate.csaggiungere l'istruzione using seguente:In AppDelegate.cs, add the following using statement:

        using WindowsAzure.Messaging;
    
  7. Dichiarare un'istanza di SBNotificationHub:Declare an instance of SBNotificationHub:

        private SBNotificationHub Hub { get; set; }
    
  8. In AppDelegate.cs aggiornare FinishedLaunching() in base all'esempio seguente:In AppDelegate.cs, update FinishedLaunching() to match the following:

        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
                var pushSettings = UIUserNotificationSettings.GetSettingsForTypes (
                       UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                       new NSSet ());
    
                UIApplication.SharedApplication.RegisterUserNotificationSettings (pushSettings);
                UIApplication.SharedApplication.RegisterForRemoteNotifications ();
            } else {
                UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (notificationTypes);
            }
    
            return true;
        }
    
  9. Eseguire l'override del metodo RegisteredForRemoteNotifications() in AppDelegate.cs:Override the RegisteredForRemoteNotifications() method in AppDelegate.cs:

        public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
        {
            Hub = new SBNotificationHub(Constants.ConnectionString, Constants.NotificationHubPath);
    
            Hub.UnregisterAllAsync (deviceToken, (error) => {
                if (error != null)
                {
                    Console.WriteLine("Error calling Unregister: {0}", error.ToString());
                    return;
                }
    
                NSSet tags = null; // create tags if you want
                Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) => {
                    if (errorCallback != null)
                        Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
                });
            });
        }
    
  10. Eseguire l'override del metodo ReceivedRemoteNotification() in AppDelegate.cs:Override the ReceivedRemoteNotification() method in AppDelegate.cs:

        public override void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo)
        {
            ProcessNotification(userInfo, false);
        }
    
  11. Creare il metodo ProcessNotification() seguente in AppDelegate.cs:Create the following ProcessNotification() method in AppDelegate.cs:

        void ProcessNotification(NSDictionary options, bool fromFinishedLaunching)
        {
            // Check to see if the dictionary has the aps key.  This is the notification payload you would have sent
            if (null != options && options.ContainsKey(new NSString("aps")))
            {
                //Get the aps dictionary
                NSDictionary aps = options.ObjectForKey(new NSString("aps")) as NSDictionary;
    
                string alert = string.Empty;
    
                //Extract the alert text
                // NOTE: If you're using the simple alert by just specifying
                // "  aps:{alert:"alert msg here"}  ", this will work fine.
                // But if you're using a complex alert with Localization keys, etc.,
                // your "alert" object from the aps dictionary will be another NSDictionary.
                // Basically the JSON gets dumped right into a NSDictionary,
                // so keep that in mind.
                if (aps.ContainsKey(new NSString("alert")))
                    alert = (aps [new NSString("alert")] as NSString).ToString();
    
                //If this came from the ReceivedRemoteNotification while the app was running,
                // we of course need to manually process things like the sound, badge, and alert.
                if (!fromFinishedLaunching)
                {
                    //Manually show an alert
                    if (!string.IsNullOrEmpty(alert))
                    {
                        UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
                        avAlert.Show();
                    }
                }
            }
        }
    

    Nota

    È possibile scegliere di eseguire l'override di FailedToRegisterForRemoteNotifications() per gestire situazioni quali l'assenza di una connessione di rete.You can choose to override FailedToRegisterForRemoteNotifications() to handle situations such as no network connection. Questo risulta particolarmente importante nei casi in cui l'utente può avviare l'applicazione in modalità offline, ad esempio in aereo, e si vogliono gestire scenari di messaggistica push specifici per l'applicazione.This is especially important where the user might start your application in offline mode (for example, Airplane) and you want to handle push messaging scenarios specific to your app.

  12. Eseguire l'app sul dispositivo.Run the app on your device.

Invio di notifiche push di provaSending Test Push Notifications

È possibile testare rapidamente la ricezione di notifiche nell'app con l'opzione Invio di prova nel portale di Azure.You can test receiving notifications in your app with the Test Send option in the [Azure portal]. Verrà così inviata una notifica push di prova al dispositivo.This sends a test push notification to your device.

Portale di Azure - Invio di prova

Le notifiche push vengono in genere inviate in un servizio back-end come App per dispositivi mobili o ASP.NET usando una libreria compatibile.Push notifications are normally sent in a back-end service like Mobile Apps or ASP.NET using a compatible library. Se non è disponibile una libreria per il back-end è anche possibile usare direttamente l'API REST per inviare messaggi di notifica.If a library is not available for your back-end you can also use the REST API directly to send notification messages.

Come passaggio successivo per l'invio di notifiche da un back-end ASP.NET, è consigliabile vedere l'esercitazione relativa all'uso di Hub di notifica per eseguire il push di notifiche agli utenti.As a next step it is recommended to view the Use Notification Hubs to push notifications to users tutorial as the next step for sending notifications from an ASP.NET back-end. Si possono tuttavia usare gli approcci seguenti per l'invio di notifiche:However, the following approaches can be used for sending notifications:

Di seguito è riportato un elenco di altre esercitazioni, che è possibile esaminare per l'invio di notifiche:Here is a list of some other tutorials you may want to review for sending notifications:

Passaggi successiviNext steps

In questo semplice esempio le notifiche push vengono trasmesse a tutti i dispositivi iOS.In this simple example, you broadcasted push notifications to all your iOS 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 tutorial [Use Notification Hubs to push notifications to users]. Se si desidera segmentare gli utenti per gruppi di interesse, consultare Uso 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 altre informazioni sull'uso di Hub di notifica, vedere Panoramica dell'Hub di notifica e Procedure di Hub di notifica per iOS.Learn more about how to use Notification Hubs in [Notification Hubs Guidance] and in the [Notification Hubs How-To for iOS].