Partage via


Tutoriel : configuration initiale pour recevoir une notification Push d’Azure Notification Hubs

Ce tutoriel vous montre comment utiliser Azure Notification Hubs pour envoyer des notifications Push vers une application iOS avec le SDK Azure Notification Hubs pour Apple.

Ce didacticiel couvre les étapes suivantes :

  • Créer un exemple d’application iOS
  • Connecter votre application iOS à Azure Notification Hubs
  • Envoyer des notifications Push de test
  • Vérifier la réception des notifications par votre application

Vous pouvez télécharger le code complet pour ce tutoriel à partir de GitHub.

Prérequis

Pour suivre ce tutoriel, vous devez disposer des prérequis suivants :

  • Un Mac exécutant Xcode, ainsi qu’un certificat de développeur valide installé dans votre trousseau
  • Un iPhone ou un iPad exécutant iOS version 10 ou ultérieure
  • Votre appareil physique inscrit auprès du portail Apple et associé à votre certificat

Avant de continuer, veillez à suivre le tutoriel précédent sur la prise en main d’Azure Notification Hubs pour les applications iOS afin de configurer les informations d’identification Push dans votre hub de notification. Même si vous n’avez aucune expérience préalable avec le développement sur iOS, vous devriez être en mesure d’effectuer ces étapes.

Notes

En raison des conditions de configuration requises pour les notifications Push, vous devez déployer et tester les notifications Push sur un appareil iOS physique (iPhone ou iPad) au lieu de l’émulateur iOS.

Connexion de votre application iOS à Notification Hubs

  1. Dans Xcode, créez un projet Xcode et sélectionnez l’onglet iOS et le modèle Application.

    Diagram that shows Xcode setup for new app

  2. Au moment de définir les options de votre nouveau projet, veillez à utiliser le même nom de produit et le même identificateur d’organisation que ceux utilisés lorsque vous avez défini l’identifiant d’offre groupée dans le portail des développeurs Apple. L’offre groupée identifiée dans la nouvelle fenêtre de projet doit être renseignée pour correspondre à l’offre groupée identifiée dans le portail des développeurs Apple. Cette valeur respecte la casse.

  3. Sous Project Navigator, sélectionnez le nom de votre projet sous Cibles, puis sélectionnez l’onglet Signature et fonctionnalités. Veillez à sélectionner l’équipe appropriée pour votre compte développeur Apple. XCode doit extraire automatiquement le profil d’approvisionnement que vous avez créé précédemment en fonction de l’identificateur d’offre groupée.

    Si vous ne voyez pas le nouveau profil d’approvisionnement que vous avez créé dans Xcode, essayez d’actualiser les profils pour votre identité de signature. Cliquez sur Xcode dans la barre de menus, sur Preferences, sur l’onglet Account, sur le bouton View Details, sur votre identité de signature, puis cliquez sur le bouton d’actualisation dans le coin inférieur droit.

    View details

  4. Sous l’onglet Signing & Capabilities, sélectionnez + Capability. Double-cliquez sur Push Notifications pour l’activer.

    Capability

  5. Ajoutez les modules du Kit de développement logiciel (SDK) Azure Notification Hubs.

    Vous pouvez intégrer le kit SDK Azure Notification Hubs à votre application en utilisant Cocoapods ou en ajoutant manuellement les fichiers binaires à votre projet.

    • Intégration par le biais de Cocoapods : Ajoutez les dépendances suivantes à votre podfile pour inclure le SDK Azure Notification Hubs dans votre application :

      pod 'AzureNotificationHubs-iOS'
      
      • Exécutez pod install pour installer votre pod récemment défini et ouvrir votre .xcworkspace.

        Si le message d’erreur Unable to find a specification for AzureNotificationHubs-iOS s’affiche lors de l’exécution de pod install, exécutez pod repo update pour obtenir les derniers pods à partir du référentiel Cocoapods, puis exécutez pod install.

    • Intégration par le biais de Carthage : Ajoutez les dépendances suivantes à votre Cartfile pour inclure le SDK Azure Notification Hubs dans votre application :

      github "Azure/azure-notificationhubs-ios"
      
      • Ensuite, mettez à jour les dépendances de build :
      $ carthage update
      

      Pour plus d’informations sur l’utilisation de Carthage, voir le référentiel GitHub Carthage.

    • Intégration en copiant les binaires dans votre projet :

      Vous pouvez intégrer en copiant les binaires dans votre projet comme suit :

      • Téléchargez le fichier zip du framework Kit SDK Azure Notification Hubs et décompressez-le.

      • Dans Xcode, cliquez avec le bouton droit sur votre projet et sélectionnez l’option Add Files to pour ajouter le dossier WindowsAzureMessaging.framework à votre projet Xcode. Sélectionnez Options, assurez-vous que l’option Copy items if needed (Copier les éléments si nécessaire) est cochée, puis cliquez sur Add (Ajouter).

        Add framework

  6. Ajoutez ou modifiez un fichier appelé DevSettings.plist qui contient deux propriétés, CONNECTION_STRING pour la chaîne de connexion au hub de notification Azure et HUB_NAME pour le nom du hub de notification Azure.

  7. Ajoutez les informations pour la connexion à Azure Notification Hubs dans la section <string></string> appropriée. Remplacez les espaces réservés de littéral de chaîne --HUB-NAME-- et --CONNECTION-STRING-- par le nom du hub et DefaultListenSharedAccessSignature, respectivement, que vous avez précédemment obtenus dans le portail :

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>HUB_NAME</key>
      <string>--HUB-NAME--</string>
      <key>CONNECTION_STRING</key>
      <string>--CONNECTION-STRING--</string>
    </dict>
    </plist>
    
  8. Dans le même fichier AppDelegate.m, remplacez tout le code situé après didFinishLaunchingWithOptions par le code suivant :

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
    // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center
    @interface AppDelegate () <MSNotificationHubDelegate>
    
    @end
    
    @implementation AppDelegate
    
    @synthesize notificationPresentationCompletionHandler;
    @synthesize notificationResponseCompletionHandler;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"];
        NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path];
    
        NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"];
        NSString *hubName = [configValues objectForKey:@"HUB_NAME"];
    
        if([connectionString length] != 0 && [hubName length] != 0) {
            [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
            [MSNotificationHub setDelegate:self];
            [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName];
    
            return YES;
        }
    
        NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application");
    
        exit(-1);
    }
    
    - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message {
        // Send message using NSNotificationCenter with the message
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo];
    }
    
    @end
    

    Ce code se connecte au hub de notification en utilisant les informations de connexion que vous avez spécifiées dans DevSettings.plist. Il transmet ensuite le jeton de l’appareil au hub de notification de sorte que ce dernier puisse envoyer des notifications.

Créer le fichier d’en-tête NotificationDetailViewController

  1. À l’instar des instructions précédentes, ajoutez un autre fichier d’en-tête nommé SetupViewController.h. Remplacez le contenu du nouveau fichier d’en-tête par le code suivant :

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface SetupViewController : UIViewController
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. Ajoutez le fichier d’implémentation SetupViewController.m. Remplacez le contenu du fichier par le code suivant, qui implémente les méthodes UIViewController :

    #import "SetupViewController.h"
    
     static NSString *const kNHMessageReceived = @"MessageReceived";
    
     @interface SetupViewController ()
    
     @end
    
     @implementation SetupViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
    
         // Listen for messages using NSNotificationCenter
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil];
     }
    
     - (void)dealloc {
         // Clean up subscription to NSNotificationCenter
         [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil];
     }
    
     - (void)didReceivePushNotification:(NSNotification *)notification {
         MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"];
    
         // Create UI Alert controller with message title and body
         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title
                              message:message.body
                       preferredStyle:UIAlertControllerStyleAlert];
         [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
         [self presentViewController:alertController animated:YES completion:nil];
    
         // Dismiss after 2 seconds
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             [alertController dismissViewControllerAnimated:YES completion: nil];
         });
    
     }
    
     @end
    
  3. Pour vérifier l’absence d’échecs, générez et exécutez l’application sur votre appareil.

Envoi de notifications Push de test

Vous pouvez tester la réception de notifications dans votre application avec l’option Test Send du Azure portal. Cette option envoie une notification Push de test à votre appareil.

Test send

Les notifications Push sont normalement envoyées dans un service principal tel que Mobile Apps ou ASP.NET à l’aide d’une bibliothèque compatible. Si aucune bibliothèque n’est disponible pour votre backend, vous pouvez également utiliser l’API REST directement pour envoyer des messages de notification.

La liste ci-dessous répertorie certains autres didacticiels, que vous pouvez consulter pour envoyer des notifications :

Vérification de la réception des notifications Push par votre application

Pour tester les notifications Push sur iOS, vous devez déployer l’application sur un appareil iOS physique. Vous ne pouvez pas envoyer de notifications Push Apple en utilisant le simulateur iOS.

  1. Exécutez l’application, vérifiez que l’inscription est effectuée, puis appuyez sur OK.

    Register

  2. Ensuite, envoyez une notification Push de test à partir du portail Azure, comme indiqué dans la section précédente.

  3. La notification Push est envoyée à tous les appareils qui sont inscrits pour recevoir les notifications à partir du hub de notification donné.

    Send test

Étapes suivantes

Dans cet exemple simple, vous avez envoyé des notifications Push à tous vos appareils iOS inscrits. Pour découvrir comment envoyer des notifications à des appareils iOS spécifiques, passez au tutoriel suivant :

Tutoriel : Notifications Push vers des appareils spécifiques

Pour plus d’informations, consultez les articles suivants :