Introduzione a Azure Mobile Engagement per app per iOS 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. 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).

Per completare questa esercitazione, è necessario disporre di:

  • XCode 8, che è possibile installare da MAC App Store
  • Mobile Engagement SDK per iOS
  • Certificato per notifiche push (.p12) che è possibile ottenere nell'Apple Dev Center.
Nota

Questa esercitazione usa Swift versione 3.0.

Il completamento di questa esercitazione costituisce un prerequisito per tutte le altre esercitazioni di Mobile Engagement relative ad app per iOS.

Nota

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

Configurare Mobile Engagement per l'app iOS

  1. Accedere al portale di Azure.
  2. Fare clic su Nuovo, quindi su Web e dispositivi mobili e infine su 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. Immettere le seguenti informazioni:

    • Nome: Nome of your raccolta di applicazioni
    • Piattaforme: selezionare le piattaforme di destinazione per l'app nel pannello Piattaforme che verrà aperto. Ad esempio, se è necessaria un'app sia per iOS che per Android, selezionare entrambe le piattaforme per creare due app in questa raccolta di app.

    • Sottoscrizione: selezionare la sottoscrizione di Azure.
    • Gruppo di risorse: selezionare il gruppo di risorse di Azure in cui inserire questa risorsa di Azure (Raccolta di app Mobile Engagement). È possibile scegliere di crearne uno nuovo.
    • Località: area in cui verranno archiviati i dati su questa raccolta di app e su questa app.
  4. Esplorare le raccolte di app Mobile Engagement facendo clic su Esplora e cercando 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.

  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.

  7. Fare clic sull'app creata per la piattaforma per cui si sta sviluppando.

  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.

Connettere l'app al back-end di Mobile Engagement

Questa esercitazione presenta una "integrazione di base", che è la configurazione minima necessaria per raccogliere i dati e inviare una notifica push. La documentazione completa relativa all'integrazione è disponibile nella integrazione di Mobile Engagement iOS SDK

Si creerà un'app di base con Xcode per illustrare l'integrazione.

Creare un nuovo progetto iOS

  1. Avviare Xcode e nel menu a comparsa selezionare Create a new Xcode project.

  2. Selezionare Single View Application e fare clic su Next.

  3. Specificare nome prodotto, nome organizzazione e identificatore organizzazione. Selezionare Objective-C o Swift nella selezione del linguaggio in base alla propria 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.

Xcode creerà l'app demo in cui si integrerà Mobile Engagement.

Connettere l'app al back-end di Mobile Engagement

  1. Scaricare Mobile Engagement SDK per iOS
  2. Estrarre il file con estensione tar.gz in una cartella nel computer.
  3. Fare clic con il pulsante destro del mouse sul progetto e scegliere "Add files to ..."

  4. Passare alla cartella in cui è stato estratto l'SDK, selezionare la cartella EngagementSDK e quindi fare clic su OK.

  5. Aprire la scheda Build Phases e nel menu Link Binary With Libraries aggiungere i framework, come illustrato di seguito:

  6. Creare un'intestazione provvisoria per poter usare le API Objective-C dell'SDK scegliendo 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:

     /* 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. Di seguito è illustrato un esempio di percorso: $(SRCROOT)/MySuperApp/MySuperApp-Bridging-Header.h (a seconda del percorso)

  9. Tornare al portale di Azure nella pagina Informazioni di connessione dell'app e copiare la stringa di connessione.

  10. A questo punto, incollare la stringa di connessione nel delegato didFinishLaunchingWithOptions .

    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 reale

Per iniziare a inviare dati e assicurarsi che gli utenti siano attivi, è necessario inviare almeno una schermata (Activity) al back-end di Mobile Engagement.

  1. Aprire il file ViewController.swift e sostituire la classe di base ViewController per EngagementViewController:

    class ViewController : EngagementViewController {

Connettere l'app con monitoraggio in tempo reale

Questa sezione descrive come connettere l'app al back-end di Mobile Engagement usando la funzionalità di monitoraggio in tempo reale di Mobile Engagement.

  1. Nell'account Azure Mobile Engagement, accertarsi di selezionare l'app che si desidera monitorare e gestire nel portale di Mobile Engagement. Accedere al portale di Mobile Engagement facendo clic sul pulsante Engagement nella parte inferiore.

  2. Viene visualizzato il portale Mobile Engagement. Se non è selezionata la scheda Monitoraggio, fare clic su Monitoraggio.
  3. Verranno visualizzati, in tempo reale, tutti i dispositivi in cui l'app verrà avviata.
  4. Avviare l'app. 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.

Abilitazione delle notifiche push e della messaggistica in-app

Mobile Engagement consente di interagire con gli utenti e coinvolgerli tramite notifiche push e messaggistica in-app nel contesto di campagne. Questo modulo è denominato REACH nel portale di Mobile Engagement. Le sezioni seguenti consentono di configurare l'app per la ricezione.

Abilitare l'app per la ricezione delle notifiche push Silent

Importante

Per ricevere le notifiche push da Mobile Engagement, è necessario abilitare Silent Remote Notifications nell'applicazione. È necessario aggiungere il valore di notifica remota alla matrice UIBackgroundModes nel file Info.plist.

  1. Aprire il file info.plist del progetto.
  2. Fare clic con il pulsante destro del mouse sul primo elemento dell'elenco (Information Property List) e aggiungere una nuova riga.

  3. Nella nuova riga immettere Required background modes

  4. Fare clic sulla freccia sinistra per espandere la riga.
  5. Aggiungere il seguente valore all'elemento 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:

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

    • Abilitare Notifiche push in Destinazioni > Nome destinazione > Funzionalità.

Aggiungere la libreria Reach al progetto

  1. Fare clic con il pulsante destro del mouse sul progetto.
  2. Selezionare Add file to ....
  3. Passare alla cartella in cui è stato estratto l'SDK.
  4. Selezionare la cartella EngagementReach.
  5. Fare clic su Aggiungi.
  6. Modificare il file di intestazione provvisorio per esporre le intestazioni Reach Mobile Engagement Objective-C e aggiungere le istruzioni import seguenti:

     /* 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'applicazione

  1. In didFinishLaunchingWithOptions creare un modulo Reach e passarlo alla riga di inizializzazione di Engagement esistente:

     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 APNS

  1. Aggiungere la riga seguente al metodo didFinishLaunchingWithOptions:

     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:

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

     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 push

Per consentire a Mobile Engagement di inviare notifiche push per conto dell'utente, è necessario concedere l'accesso al certificato. A tale scopo, è necessario configurare il certificato e immetterlo nel portale di Mobile Engagement. Assicurarsi di avere ottenuto il certificato con estensione p12 come descritto nella documentazione di Apple

  1. Passare al portale di Mobile Engagement. Verificare la posizione corretta e fare clic sul pulsante Attiva nella parte inferiore:

  2. Verrà visualizzata la pagina Impostazioni nel portale di Engagement. Da questa posizione fare clic sulla sezione Push nativo per aprire il certificato p12:

  3. Selezionare il certificato p12, caricarlo e digitare la password:

Inviare una notifica all'app

Si creerà ora una semplice campagna di notifica push per l'invio di un push all'app.

  1. Passare alla scheda Reach nel portale di Mobile Engagement.
  2. Fare clic su Nuovo annuncio per creare la campagna di push.

  3. Configurare i primi campi della campagna:

    • Fornire un Nome per la campagna
    • 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.
    • Nel testo della notifica digitare innanzitutto il titolo che sarà la prima riga del push.
    • Digitare quindi il messaggio che costituirà la seconda riga
  4. Scorrere verso il basso e nella sezione contenuto selezionare Solo notifica

  5. L'impostazione della campagna più semplice è stata completata. Ora scorrere verso il basso e fare clic sul pulsante Crea per salvare la campagna di notifica push.
  6. Infine, fare clic sul Attiva per inviare notifiche push.

  7. Sarà possibile ricevere la notifica sul dispositivo iOS nel centro di notifica, come mostrato di seguito:

  8. Se si dispone di un controllo Apple abbinato a questo dispositivo iOS, allora verrà visualizzata la notifica nel controllo Apple: