Esercitazione: Effettuare il push di notifiche alle app iOS con Hub di notifica di AzureTutorial: Push notifications to iOS apps using Azure Notification Hubs

In questa esercitazione verranno usati Hub di notifica di Azure per effettuare il push di notifiche a un'applicazione iOS.In this tutorial, you use Azure Notification Hubs to push notifications to an iOS application. Si crea un'app iOS vuota che riceve notifiche push tramite Apple Push Notification Service (APNS).You create a blank iOS app that receives push notifications by using the Apple Push Notification service (APNs).

In questa esercitazione vengono completati i passaggi seguenti:In this tutorial, you take the following steps:

  • Generare il file della richiesta di firma del certificatoGenerate the certificate signing request file
  • Richiedere le notifiche push all'appRequest your app for push notifications
  • Creare un profilo di provisioning per l'appCreate a provisioning profile for the app
  • Configurare l'hub di notifica per l'invio di notifiche push di iOSConfigure your notification hub for iOS push notifications
  • Connettere l'app iOS all'hub di notificaConnect your iOS app to notification hubs
  • Inviare notifiche push di provaSend test push notifications
  • Verificare che l'app riceve le notificheVerify that your app receives notifications

Il codice completo per questa esercitazione è disponibile in GitHub.The completed code for this tutorial can be found on GitHub.

prerequisitiPrerequisites

  • Un account Azure attivo.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.
  • Framework di messaggistica di Windows AzureWindows Azure Messaging Framework
  • Ultima versione di XcodeLatest version of Xcode
  • Dispositivo compatibile con iOS 10 o versione successivaAn iOS 10 (or later version)-capable device
  • Apple Developer Program .Apple Developer Program membership.

    Nota

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

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

Generare il file della 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 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.

    Questa operazione consente di salvare il file CSR nel percorso selezionato. Il percorso predefinito è il Desktop.This action 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 the 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 register your app with Apple, enable push notifications, and upload the 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 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, sign in 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. L'identificatore dell'organizzazione e il nome del prodotto usati devono corrispondere all'identificatore dell'organizzazione e al nome del prodotto usati nella creazione del progetto XCode.The Organization Identifier and Product Name you use must match the organization identifier and product name you use when you create your XCode project. Nello screenshot seguente NotificationHubs viene usato come identificatore dell'organizzazione e GetStarted viene usato come nome del prodotto.In the following screenshot NotificationHubs is used as an organization identifier and GetStarted is used as the product name. Verificare che questi valori corrispondano ai valori usati nel progetto XCode, in modo da usare il profilo di pubblicazione corretto con XCode.Making sure this value matches the value you use in your XCode project allows you to use the correct publishing profile with XCode.
    • Push Notifications (Notifiche Push): selezionare l'opzione Push Notifications nella sezione App Services (Servizi app).Push Notifications: Check the Push Notifications option in the App Services section.

      Questa azione consente di generare l'ID dell'app e richiede all'utente di confermare le informazioni.This action 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 Registration complete (Registrazione completata), come mostrato nell'immagine seguente.Once you click Register, you see the Registration complete screen, as shown in the following image. Fare clic su Done.Click Done.

  3. In Developer Center (Centro per sviluppatori), individuare l'ID dell'app appena creata in App IDs (ID app) e fare clic sulla relativa riga.In the Developer Center, under App IDs, locate the app ID that you created, and click on its row.

    Se si fa clic sull'ID dell'app, verranno visualizzati i dettagli relativi all'app.Clicking on the app ID displays 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" (Aggiungi il certificato iOS).You see 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.It 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.

    Questa azione consente di installare il nuovo certificato in Keychain, come illustrato nell'immagine seguente:This action installs the new certificate in the Keychain, as shown in the following image:

    Nota

    Il nome del certificato potrebbe essere diverso, ma verrà preceduto da Apple Development iOS Push Services (Servizi push iOS per lo sviluppo Apple).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. Viene usato per abilitare l'autenticazione con il servizio APN.It is 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. Viene visualizzata la procedura guidata Add iOS Provisioning Profile (Aggiungi profilo di provisioning iOS)You see the Add iOS Provisioning Profile Wizard

  2. Selezionare iOS App Development (Sviluppo app iOS) in Development (Sviluppo) come tipo di profilo di provisioning e fare clic su Continue (Continua).Select iOS App Development under Development as the provisioning profile type, and click Continue.
  3. Selezionare quindi l'ID dell'app creata nell'elenco a discesa App ID (ID app) e fare clic su Continue (Continua)Next, select the app ID you 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 creato.This certificate is not the push certificate you 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 viene creato un hub di notifica e configurare l'autenticazione con il servizio APNS usando il certificato push .p12 creato in precedenza.In this section, you create a 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 Crea una risorsa > Web e dispositivi mobili > Hub di notifica.Select Create a resource > 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. Selezionare Notifiche (icona a forma di campanello) e selezionare Vai alla risorsa.Select Notifications (Bell icon), and select Go to resource.

    Portale di Azure - Notifiche -> Vai alla risorsa

  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

Configurare l'hub di notifica con le informazioni APNSConfigure your notification hub with APNS information

  1. In Servizi di notifica selezionare Apple (APNS).Under Notification Services, select Apple (APNS).
  2. Selezionare Certificate.Select Certificate.
  3. Selezionare l'icona del file.Select the file icon.
  4. Selezionare il file p12 esportato in precedenza.Select the .p12 file that you exported earlier.
  5. Specificare la password corretta.Specify the correct password.
  6. Selezionare la modalità Sandbox.Select Sandbox mode. 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 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.You have now configured your notification hub with APNS, and you have the connection strings to register your app and send push notifications.

Connettere l'app iOS all'hub di notificaConnect your iOS app to Notification Hubs

  1. In Xcode creare un nuovo progetto iOS e selezionare il modello Single View Application .In Xcode, create a new iOS project and select the Single View Application template.

    Xcode - Single View Application

  2. Quando si configurano le opzioni per il nuovo progetto, assicurarsi di usare lo stesso nome prodotto e lo stesso identificatore organizzazione usati quando è stato impostato l'identificatore del bundle nel portale Apple Developer.When setting the options for your new project, make sure to use the same Product Name and Organization Identifier that you used when you set the bundle identifier in the Apple Developer portal.

    Xcode - Opzioni di progetto

  3. In Project Navigator fare clic sul nome del progetto, quindi sulla scheda General (Generale) e trovare Signing (Firma).Under Project Navigator, click your project name, click the General tab, and find Signing. Selezionare il team corretto per l'account Apple Developer.Make sure you select the appropriate Team for your Apple Developer account. XCode recupererà automaticamente il profilo di provisioning creato in precedenza in base all'identificatore del bundle.XCode should automatically pull down the Provisioning Profile you created previously based on your bundle identifier.

    Se il profilo di provisioning creato in Xcode non viene visualizzato, provare ad aggiornare i profili per l'identità di firma.If you don't see the new provisioning profile that you created in Xcode, try refreshing the profiles for your signing identity. Fare clic su Xcode nella barra dei menu, fare clic su Preferences (Preferenze), selezionare la scheda Account, fare clic sul pulsante View Details (Visualizza dettagli), selezionare la propria identità di firma e infine fare clic sul pulsante di aggiornamento nell'angolo in basso a destra.Click Xcode on the menu bar, click Preferences, click the Account tab, click the View Details button, click your signing identity, and then click the refresh button in the bottom-right corner.

    Xcode - Profilo di provisioning

  4. Selezionare la scheda Capabilities (Funzionalità) e assicurarsi di abilitare le notifiche pushSelect the Capabilities tab and make sure to enable Push Notifications

    Xcode - Funzionalità push

  5. Scaricare il framework di messaggistica di Windows Azure e decomprimere il file.Download the Windows Azure Messaging Framework and unzip the file. In Xcode fare clic con il pulsante destro del mouse sul progetto e scegliere l'opzione Add Files to (Aggiungi file a) per aggiungere la cartella WindowsAzureMessaging.framework al progetto Xcode.In Xcode, right-click your project and click the Add Files to option to add the WindowsAzureMessaging.framework folder to your Xcode project. Selezionare Options (Opzioni) e assicurarsi che sia selezionato Copy items if needed (Copia elementi se necessario), quindi fare clic su Add (Aggiungi).Select Options and make sure Copy items if needed is selected, and then click Add.

    Decomprimere Azure SDK

  6. Aggiungere un nuovo file di intestazione al progetto denominato HubInfo.h.Add a new header file to your project named HubInfo.h. Questo file include le costanti per l'hub di notifica.This file holds the constants for your notification hub. Aggiungere le definizioni seguenti e sostituire i segnaposto dei valori letterali stringa con il nome dell'hub e il valore DefaultListenSharedAccessSignature annotati in precedenza.Add the following definitions and replace the string literal placeholders with your hub name and the DefaultListenSharedAccessSignature noted earlier.

        #ifndef HubInfo_h
        #define HubInfo_h
    
            #define HUBNAME @"<Enter the name of your hub>"
            #define HUBLISTENACCESS @"<Enter your DefaultListenSharedAccess connection string"
    
        #endif /* HubInfo_h */
    
  7. Aprire il file AppDelegate.h e aggiungere le direttive import seguenti:Open your AppDelegate.h file add the following import directives:

        #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
        #import <UserNotifications/UserNotifications.h> 
        #import "HubInfo.h"
    
  8. Nel file AppDelegate.m aggiungere il codice seguente nel metodo didFinishLaunchingWithOptions in base alla versione di iOS.In your AppDelegate.m file, add the following code in the didFinishLaunchingWithOptions method based on your version of iOS. Questo codice registra l'handle di dispositivo nel servizio APNS:This code registers your device handle with APNs:

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound |
            UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
    
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    
  9. Nello stesso file aggiungere i metodi seguenti:In the same file, add the following methods:

         - (void) application:(UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken {
           SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:HUBLISTENACCESS
                                        notificationHubPath:HUBNAME];
    
            [hub registerNativeWithDeviceToken:deviceToken tags:nil completion:^(NSError* error) {
               if (error != nil) {
                   NSLog(@"Error registering for notifications: %@", error);
                }
                else {
                   [self MessageBox:@"Registration Status" message:@"Registered"];
              }
          }];
         }
    
        -(void)MessageBox:(NSString *) title message:(NSString *)messageText
        {
         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:messageText delegate:self
                cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
        }
    

    Questo codice si connette all'hub di notifica usando le informazioni di connessione specificate in HubInfo.h.This code connects to the notification hub using the connection information you specified in HubInfo.h. Fornisce il token del dispositivo all'hub di notifica in modo che quest'ultimo possa inviare notifiche.It then gives the device token to the notification hub so that the notification hub can send notifications.

  10. Nello stesso file aggiungere il metodo seguente per visualizzare un avviso UIAlert se la notifica viene ricevuta mentre l'app è attiva:In the same file, add the following method to display a UIAlert if the notification is received while the app is active:

            - (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo {
               NSLog(@"%@", userInfo);
               [self MessageBox:@"Notification" message:[[userInfo objectForKey:@"aps"] valueForKey:@"alert"]];
           }
    
  11. Per verificare che non vi siano errori, compilare ed eseguire l'app nel dispositivo.To verify there are no failures, build and run the app on your device.

Inviare notifiche push di provaSend 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à inviata una notifica push di prova al dispositivo.It 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.

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:

Verificare che l'app riceve le notifiche pushVerify that your app receives push notifications

Per testare le notifiche push in iOS, è necessario distribuire l'app in un dispositivo fisico iOS.To test push notifications on iOS, you must deploy the app to a physical iOS device. Non è possibile inviare notifiche push Apple con il simulatore iOS.You cannot send Apple push notifications by using the iOS Simulator.

  1. Eseguire l'app e verificare che la registrazione riesca e quindi scegliere OK.Run the app and verify that registration succeeds, and then press OK.

    Test di registrazione notifica push per app iOS

  2. Ora viene inviata una notifica push di prova dal portale di Azure, come illustrato nella sezione precedente.Next you send a test push notification from the Azure portal, as described in the previous section.

  3. La notifica push viene inviata a tutti i dispositivi registrati per la ricezione di notifiche dall'hub di notifica specifico.The push notification is sent to all devices that are registered to receive the notifications from the particular Notification Hub.

    Test di ricezione notifica push per app iOS

Passaggi successiviNext steps

In questo semplice esempio le notifiche push sono state trasmesse a tutti i dispositivi iOS registrati.In this simple example, you broadcasted push notifications to all your registered iOS devices. Per informazioni sulle procedure per eseguire il push di notifiche a dispositivi iOS specifici, passare all'esercitazione seguente:To learn how to push notifications to specific iOS devices, advance to the following tutorial: