Introduzione a Azure Mobile Engagement per app per iOS in SwiftGet Started with Azure Mobile Engagement for iOS Apps in Swift

Questo argomento descrive come usare Azure Mobile Engagement per comprendere l'utilizzo delle app e inviare notifiche push a utenti segmentati di un'applicazione iOS.This topic shows you how to use Azure Mobile Engagement to understand your app usage and send push notifications to segmented users to an iOS application. In questa esercitazione si creerà un'app per iOS vuota che raccoglie dati di base e riceve notifiche push tramite Apple Push Notification System (APNS).In this tutorial, you create a blank iOS app that collects basic data and receives push notifications using Apple Push Notification System (APNS).

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

  • XCode 8, che è possibile installare da MAC App StoreXCode 8, which you can install from your MAC App Store
  • Mobile Engagement SDK per iOSthe [Mobile Engagement iOS SDK]
  • Certificato per notifiche push (.p12) che è possibile ottenere nell'Apple Dev Center.Push notification certificate (.p12) that you can obtain on your Apple Dev Center

Nota

Questa esercitazione usa Swift versione 3.0.This tutorial uses Swift version 3.0.

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

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.

Configurare Mobile Engagement per l'app iOSSetup Mobile Engagement for your iOS app

  1. Accedere al portale di Azure.Log on to the Azure Portal.
  2. Fare clic su Nuovo, quindi su Web e dispositivi mobili e infine su Mobile Engagement.Click on New, then Web + Mobile, and then Mobile Engagement.

  3. Nel pannello New Mobile Engagement App Collection (Nuova raccolta di app Mobile Engagement) visualizzato si creerà una raccolta di app invece che un'app come nel portale di Azure classico.In the New Mobile Engagement App Collection blade that appears, you will be creating an App Collection instead of an App like in the Azure classic portal. Immettere le seguenti informazioni:Enter the following information:

    • Nome: Nome of your raccolta di applicazioniName: Name of your application collection
    • Piattaforme: selezionare le piattaforme di destinazione per l'app nel pannello Piattaforme che verrà aperto.Platforms: Select target platforms for your app on the Platforms blade which will open up. Ad esempio,E.g. se è necessaria un'app sia per iOS che per Android, selezionare entrambe le piattaforme per creare due app in questa raccolta di app.if you want an app for both iOS & Android then select both platforms and you will get two apps created under this app collection.

    • Sottoscrizione: selezionare la sottoscrizione di Azure.Subscription: Select the Azure subscription.
    • Gruppo di risorse: selezionare il gruppo di risorse di Azure in cui inserire questa risorsa di Azure (Raccolta di app Mobile Engagement).Resource group: Select the Azure Resource group in which you want this Azure resource (Mobile Engagement App Collection). È possibile scegliere di crearne uno nuovo.You can choose to create a new one.
    • Località: area in cui verranno archiviati i dati su questa raccolta di app e su questa app.Location: Region where the data about this app collection & app will be stored.
  4. Esplorare le raccolte di app Mobile Engagement facendo clic su Esplora e cercando Mobile EngagementBrowse through the Mobile Engagement app collections by clicking Browse and search for Mobile Engagement

  5. Verrà visualizzato un elenco di raccolte di app Mobile Engagement: assicurarsi di avere la stessa sottoscrizione di Azure in cui è stata creata la raccolta di app.You will be shown a list of Mobile Engagement App Collections - make sure you have the same Azure subscription where you created your App Collection.

  6. Fare clic sulla raccolta di app creata nel passaggio precedente per aprire il pannello della risorsa raccolta di app che visualizzerà le diverse app presenti in questa raccolta di app.Click on the App Collection that you created in the prior step to open up the App Collection resource blade which will show the different apps present inside this app collection.

  7. Fare clic sull'app creata per la piattaforma per cui si sta sviluppando.Click on the App created for the platform you are developing for.

  8. Fare clic sul pulsante di comando Informazioni di connessione in alto per aprire il pannello Informazioni di connessione e copiare la stringa di connessione.Click on Connection Info command button at the top to open up the Connection Info blade and copy the connection string from there.

Connettere l'app al back-end di Mobile EngagementConnect your app to the Mobile Engagement backend

Questa esercitazione presenta una "integrazione di base", che è la configurazione minima necessaria per raccogliere i dati e inviare una notifica push.This tutorial presents a "basic integration", which is the minimal set required to collect data and send a push notification. La documentazione completa relativa all'integrazione è disponibile nella integrazione di Mobile Engagement iOS SDKThe complete integration documentation can be found in the Mobile Engagement iOS SDK integration

Si creerà un'app di base con Xcode per illustrare l'integrazione.We will create a basic app with XCode to demonstrate the integration:

Creare un nuovo progetto iOSCreate a new iOS project

  1. Avviare Xcode e nel menu a comparsa selezionare Create a new Xcode project.Start Xcode and in the pop-up, select Create a new Xcode project.

  2. Selezionare Single View Application e fare clic su Next.Select Single View Application, and then click Next.

  3. Specificare nome prodotto, nome organizzazione e identificatore organizzazione.Fill in the Product Name, Organization Name, and Organization Identifier. Selezionare Objective-C o Swift nella selezione del linguaggio in base alla propria app.Select Objective-C or Swift in the Language selection based on your app.

Importante

Assicurarsi che l'identificatore di aggregazione corrisponda con quanto definito nella console di sviluppatore Apple per AppId e di disporre di un relativo certificato corrispondente.Make sure that the Bundle Identifier matches with what you have defined in the Apple Developer console for AppId and that you have a corresponding certificate for it.

Xcode creerà l'app demo in cui si integrerà Mobile Engagement.Xcode will create the demo app into which we integrate Mobile Engagement.

Connettere l'app al back-end di Mobile EngagementConnect your app to Mobile Engagement backend

  1. Scaricare Mobile Engagement SDK per iOSDownload the [Mobile Engagement iOS SDK]
  2. Estrarre il file con estensione tar.gz in una cartella nel computer.Extract the .tar.gz file to a folder in your computer
  3. Fare clic con il pulsante destro del mouse sul progetto e scegliere "Add files to ..."Right click the project and select "Add files to ..."

  4. Passare alla cartella in cui è stato estratto l'SDK, selezionare la cartella EngagementSDK e quindi fare clic su OK.Navigate to the folder where you extracted the SDK and select the EngagementSDK folder then press OK.

  5. Aprire la scheda Build Phases e nel menu Link Binary With Libraries aggiungere i framework, come illustrato di seguito:Open the Build Phases tab and in the Link Binary With Libraries menu add the frameworks as shown below:

  6. Creare un'intestazione provvisoria per poter usare le API Objective-C dell'SDK scegliendo File > New > File > iOS > Source > Header File.Create a Bridging header to be able to use the SDK's Objective C APIs by choosing File > New > File > iOS > Source > Header File.

  7. Modificare il file di intestazione provvisorio per esporre il codice Mobile Engagement Objective-C al codice Swift e aggiungere le istruzioni import seguenti:Edit the bridging header file to expose Mobile Engagement Objective-C code to your Swift code, add the following imports :

     /* Mobile Engagement Agent */
     #import "AEModule.h"
     #import "AEPushMessage.h"
     #import "AEStorage.h"
     #import "EngagementAgent.h"
     #import "EngagementTableViewController.h"
     #import "EngagementViewController.h"
     #import "AEUserNotificationHandler.h"
     #import "AEIdfaProvider.h"
    
  8. In Build Settings assicurarsi che per l'impostazione di compilazione Objective-C Bridging Header in Swift Compiler - Code Generation sia definito un percorso a questa intestazione.Under Build Settings, make sure the Objective-C Bridging Header build setting under Swift Compiler - Code Generation has a path to this header. Di seguito è illustrato un esempio di percorso: $(SRCROOT)/MySuperApp/MySuperApp-Bridging-Header.h (a seconda del percorso)Here is a path example: $(SRCROOT)/MySuperApp/MySuperApp-Bridging-Header.h (depending on the path)

  9. Tornare al portale di Azure nella pagina Informazioni di connessione dell'app e copiare la stringa di connessione.Go back to the Azure portal in your app's Connection Info page and copy the Connection String

  10. A questo punto, incollare la stringa di connessione nel delegato didFinishLaunchingWithOptions .Now paste the connection string in the didFinishLaunchingWithOptions delegate

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
    {
          [...]
            EngagementAgent.init("Endpoint={YOUR_APP_COLLECTION.DOMAIN};SdkKey={YOUR_SDK_KEY};AppId={YOUR_APPID}")
          [...]
    }
    

Abilitazione del monitoraggio in tempo realeEnabling real-time monitoring

Per iniziare a inviare dati e assicurarsi che gli utenti siano attivi, è necessario inviare almeno una schermata (Activity) al back-end di Mobile Engagement.In order to start sending data and ensuring that the users are active, you must send at least one screen (Activity) to the Mobile Engagement backend.

  1. Aprire il file ViewController.swift e sostituire la classe di base ViewController per EngagementViewController:Open the ViewController.swift file and replace the base class of ViewController to be EngagementViewController:

    class ViewController : EngagementViewController {

Connettere l'app con monitoraggio in tempo realeConnect app with real-time monitoring

Questa sezione descrive come connettere l'app al back-end di Mobile Engagement usando la funzionalità di monitoraggio in tempo reale di Mobile Engagement.This section shows you how to connect your app to the Mobile Engagement backend by using the Mobile Engagement's real-time monitoring feature.

  1. Nell'account Azure Mobile Engagement, accertarsi di selezionare l'app che si desidera monitorare e gestire nel portale di Mobile Engagement.In your Azure Mobile Engagement account, make sure you select the app you wish to monitor and manage in the Mobile Engagement portal. Accedere al portale di Mobile Engagement facendo clic sul pulsante Engagement nella parte inferiore.Navigate to your Mobile Engagement portal by clicking the Engage button at the bottom.

  2. Viene visualizzato il portale Mobile Engagement.You will land in the Mobile Engagement portal. Se non è selezionata la scheda Monitoraggio, fare clic su Monitoraggio.If the Monitor tab is not selected, click on the Monitor.
  3. Verranno visualizzati, in tempo reale, tutti i dispositivi in cui l'app verrà avviata.The monitor is ready to show you any device in real time, which will start your app.
  4. Avviare l'app.Start your app now. Se l'integrazione è corretta si noterà una sessione di monitoraggio, che significa che l'app ora è collegata al back-end di Mobile Engagement e sta inviando dati ad esso.You should see one session in the monitor if your integration is correct which means that your app is now connected to the Mobile Engagement backend and is sending data to it.

Abilitazione delle notifiche push e della messaggistica in-appEnabling Push Notifications and in-app messaging

Mobile Engagement consente di interagire con gli utenti e coinvolgerli tramite notifiche push e messaggistica in-app nel contesto di campagne.Mobile Engagement allows you to interact and REACH with your users with Push Notifications and In-app Messaging in the context of campaigns. Questo modulo è denominato REACH nel portale di Mobile Engagement.This module is called REACH in the Mobile Engagement portal. Le sezioni seguenti consentono di configurare l'app per la ricezione.The following sections will setup your app to receive them.

Abilitare l'app per la ricezione delle notifiche push SilentEnable your app to receive Silent Push Notifications

Importante

Per ricevere le notifiche push da Mobile Engagement, è necessario abilitare Silent Remote Notifications nell'applicazione.To receive Push Notifications from Mobile Engagement, you need to enable Silent Remote Notifications in your application. È necessario aggiungere il valore di notifica remota alla matrice UIBackgroundModes nel file Info.plist.You need to add the remote-notification value to the UIBackgroundModes array in your Info.plist file.

  1. Aprire il file info.plist del progetto.Open info.plist file in the project
  2. Fare clic con il pulsante destro del mouse sul primo elemento dell'elenco (Information Property List) e aggiungere una nuova riga.Right click on the top item in the list (Information Property List) and add a new row

  3. Nella nuova riga immettere Required background modesIn the new row enter Required background modes

  4. Fare clic sulla freccia sinistra per espandere la riga.Click on the left arrow to expand the row
  5. Aggiungere il seguente valore all'elemento 0 App downloads content in response to push notificationsAdd the following value to the item 0 App downloads content in response to push notifications

  6. Dopo avere apportato la modifica, info.plist XML deve contenere la chiave e il valore seguenti:Once you make the change, the info.plist XML should contain the following key and value:

     <key>UIBackgroundModes</key>
     <array>
     <string>remote-notification</string>
     </array>
    
  7. Se si usano Xcode 7+ e iOS 9+:If you are using Xcode 7+ and iOS 9+:

    • Abilitare Notifiche push in Destinazioni > Nome destinazione > Funzionalità.Enable Push Notifications in Targets > Your Target Name > Capabilities.

Aggiungere la libreria Reach al progettoAdd the Reach library to your project

  1. Fare clic con il pulsante destro del mouse sul progetto.Right click your project
  2. Selezionare Add file to ....Select Add file to ...
  3. Passare alla cartella in cui è stato estratto l'SDK.Navigate to the folder where you extracted the SDK
  4. Selezionare la cartella EngagementReach.Select the EngagementReach folder
  5. Fare clic su Aggiungi.Click Add
  6. Modificare il file di intestazione provvisorio per esporre le intestazioni Reach Mobile Engagement Objective-C e aggiungere le istruzioni import seguenti:Edit the bridging header file to expose Mobile Engagement Objective-C Reach headers and add the following imports :

     /* Mobile Engagement Reach */
     #import "AEAnnouncementViewController.h"
     #import "AEAutorotateView.h"
     #import "AEContentViewController.h"
     #import "AEDefaultAnnouncementViewController.h"
     #import "AEDefaultNotifier.h"
     #import "AEDefaultPollViewController.h"
     #import "AEInteractiveContent.h"
     #import "AENotificationView.h"
     #import "AENotifier.h"
     #import "AEPollViewController.h"
     #import "AEReachAbstractAnnouncement.h"
     #import "AEReachAnnouncement.h"
     #import "AEReachContent.h"
     #import "AEReachDataPush.h"
     #import "AEReachDataPushDelegate.h"
     #import "AEReachModule.h"
     #import "AEReachNotifAnnouncement.h"
     #import "AEReachPoll.h"
     #import "AEReachPollQuestion.h"
     #import "AEViewControllerUtil.h"
     #import "AEWebAnnouncementJsBridge.h"
    

Modificare il delegato dell'applicazioneModify your Application Delegate

  1. In didFinishLaunchingWithOptions creare un modulo Reach e passarlo alla riga di inizializzazione di Engagement esistente:Inside the didFinishLaunchingWithOptions - create a reach module and pass it to your existing Engagement initialization line:

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
     {
         let reach = AEReachModule.module(withNotificationIcon: UIImage(named:"icon.png")) as! AEReachModule
         EngagementAgent.init("Endpoint={YOUR_APP_COLLECTION.DOMAIN};SdkKey={YOUR_SDK_KEY};AppId={YOUR_APPID}", modulesArray:[reach])
         [...]
         return true
     }
    

Abilitare l'app per la ricezione delle notifiche push APNSEnable your app to receive APNS Push Notifications

  1. Aggiungere la riga seguente al metodo didFinishLaunchingWithOptions:Add the following line to the didFinishLaunchingWithOptions method:

     if #available(iOS 8.0, *)
     {
         if #available(iOS 10.0, *)
         {
             UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in }
         }else
         {
             let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
             application.registerUserNotificationSettings(settings)
         }
         application.registerForRemoteNotifications()
     }
     else
     {
         application.registerForRemoteNotifications(matching: [.alert, .badge, .sound])
     }
    
  2. Aggiungere il metodo didRegisterForRemoteNotificationsWithDeviceToken come illustrato di seguito:Add the didRegisterForRemoteNotificationsWithDeviceToken method as follows:

     func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
         EngagementAgent.shared().registerDeviceToken(deviceToken)
     }
    
  3. Aggiungere il metodo didReceiveRemoteNotification:fetchCompletionHandler: come illustrato di seguito:Add the didReceiveRemoteNotification:fetchCompletionHandler: method as follows:

     func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
         EngagementAgent.shared().applicationDidReceiveRemoteNotification(userInfo, fetchCompletionHandler:completionHandler)
     }
    

Concedere a Mobile Engagement l'accesso al certificato pushGrant access to your Push Certificate to Mobile Engagement

Per consentire a Mobile Engagement di inviare notifiche push per conto dell'utente, è necessario concedere l'accesso al certificato.To allow Mobile Engagement to send Push Notifications on your behalf, you need to grant it access to your certificate. A tale scopo, è necessario configurare il certificato e immetterlo nel portale di Mobile Engagement.This is done by configuring and entering your certificate into the Mobile Engagement portal. Assicurarsi di avere ottenuto il certificato con estensione p12 come descritto nella documentazione di AppleMake sure you obtain your .p12 certificate as explained in Apple's documentation

  1. Passare al portale di Mobile Engagement.Navigate to your Mobile Engagement portal. Verificare la posizione corretta e fare clic sul pulsante Attiva nella parte inferiore:Ensure you're in the correct and then click on the Engage button at the bottom:

  2. Verrà visualizzata la pagina Impostazioni nel portale di Engagement.Click on the Settings page in your Engagement Portal. Da questa posizione fare clic sulla sezione Push nativo per aprire il certificato p12:From there click on the Native Push section to upload your p12 certificate:

  3. Selezionare il certificato p12, caricarlo e digitare la password:Select your p12, upload it and type your password:

Inviare una notifica all'appSend a notification to your app

Si creerà ora una semplice campagna di notifica push per l'invio di un push all'app.We will now create a simple Push Notification campaign that will send a push to our app:

  1. Passare alla scheda Reach nel portale di Mobile Engagement.Navigate to the Reach tab in your Mobile Engagement portal.
  2. Fare clic su Nuovo annuncio per creare la campagna di push.Click New Announcement to create your push campaign

  3. Configurare i primi campi della campagna:Setup the first fields of your campaign:

    • Fornire un Nome per la campagnaProvide a Name for your campaign
    • Per Ora di consegna selezionare Out of app only (Solo all'esterno dell'app): si tratta di un tipo di notifica push Apple semplice che include testo.Select the Delivery time as Out of app only: this is the simple Apple push notification type that features some text.
    • Nel testo della notifica digitare innanzitutto il titolo che sarà la prima riga del push.In the notification text, type first the Title which will be the first line in the push.
    • Digitare quindi il messaggio che costituirà la seconda rigaThen type your Message which will be the second line
  4. Scorrere verso il basso e nella sezione contenuto selezionare Solo notificaScroll down, and in the content section select Notification only

  5. L'impostazione della campagna più semplice è stata completata.You're done setting the most basic campaign. Ora scorrere verso il basso e fare clic sul pulsante Crea per salvare la campagna di notifica push.Now scroll down and click on Create button to save your push notification campaign.
  6. Infine, fare clic sul Attiva per inviare notifiche push.Finally - click on Activate to send push notification.

  7. Sarà possibile ricevere la notifica sul dispositivo iOS nel centro di notifica, come mostrato di seguito:You will be able receive the notification on your iOS device in the notification center like the following:

  8. Se si dispone di un controllo Apple abbinato a questo dispositivo iOS, allora verrà visualizzata la notifica nel controllo Apple:If you have an Apple Watch paired with this iOS device then you will see the notification on your Apple Watch: