Exporter (0) Imprimer
Développer tout

Didacticiel relatif au concentrateur de notification Service Bus (applications Android)

Windows Azure Service BusLes concentrateurs de notification sont des entités Service Busqui vous permettent d’envoyer des notifications Push d’appareils via des plateformes d’applications tierces. Il s'agit notamment des plateformes suivantes :

  1. les Services de notifications Push Windows (WNS) pour Windows 8 ;

  2. le service de notifications Push Apple (APN).

  3. Google Cloud Messaging service (GCM) pour Android.

Ce didacticiel décrit la configuration d’une application Android et d’une application MVC ASP.NET simple qui envoie une notification Push native via GCM.

noteRemarque
Les concentrateurs de notification sont uniquement disponibles dans Windows Azure Service Bus sous la forme d’une fonctionnalité préliminaire depuis janvier 2013. Sa disponibilité devrait être généralisée en milieu d’année 2013.

noteRemarque
Compte tenu des améliorations apportées aux concentrateurs de notification, le SDK que vous téléchargez avant le mois d'avril 2013 ne sera pas compatible avec les nouveaux concentrateurs de notification. Inversement, le SDK actuel n'est pas compatible avec les concentrateurs de notification créés avant avril 2013. Utilisez les nouveaux concentrateurs avec le nouveau SDK pour tirer parti des nouvelles fonctionnalités, notamment le modèle de concurrence optimiste. La prise en charge des concentrateurs de notification créés avant avril 2013 s'achève lors des transitions des concentrateurs vers GA (General Availability).

La prise en charge des Services de notification Push Microsoft (MPNS) pour Windows Phone sera bientôt disponible.

Une rubrique Procédure relative aux concentrateurs de notification Service Bus (applications Android) détaillée et une présentation des Concentrateurs de notification Windows Azure Service Bus sont également disponibles. Pour plus d'informations sur le sujet suivant l’utilisation des concentrateurs de notification à partir du Windows Store et d’applications iOS, consultez respectivement les rubriques Procédure relative aux concentrateurs de notification Service Bus (applications Windows Store) et Procédure relative aux concentrateurs de notification Service Bus (applications iOS).

Conditions préalables

  1. Kit de développement logiciel (SDK) Service Bus .NET. Le Kit de développement logiciel (SDK) est un package NuGet contenant la version préliminaire des fonctionnalités de Service Bus que vous pouvez télécharger ici. Le package est intitulé ServiceBus preview features et contient une nouvelle bibliothèque Service Bus nommée « Microsoft.ServiceBus.Preview.dll ». Pour utiliser les concentrateurs de notification, vous devez utiliser cette bibliothèque à la place de la version de production (« Microsoft.ServiceBus.dll »).

  2. Kit de développement logiciel (SDK) Android (ou Eclipse), que vous pouvez télécharger ici.

  3. Kit de développement logiciel (SDK) du concentrateur de notification Android. Vous pouvez télécharger ce Kit de développement logiciel (SDK) ici.

Création d'un projet d'API Google et génération d'une clé API

Pour créer un projet d'API Google :

  1. Accédez à la page de la console des API Google.

  2. Si vous disposez déjà d'un projet et souhaitez en créer un autre, cliquez sur Other projects (Autres projets), puis sur Create (Créer). S'il s'agit de votre premier projet d'API Google, vous pouvez le créer en cliquant sur Créer un projet…

    Notifications push
  3. L'URL qui s'affichera dans votre navigateur ressemblera à ce qui suit : https://code.google.com/apis/console/#project:1234567890.

  4. Notez le numéro inscrit après #project (par exemple, 1234567890 ci-dessus). Ce numéro est votre identifiant d'expéditeur GCM.

Activez GCM et générez une clé API de serveur :

  1. Dans la page principale de la console des API Google, cliquez sur Service.

  2. Définissez l'option Google Cloud Messaging sur On (Activé), puis acceptez les conditions d'utilisation.

  3. Dans la page principale de la console des API Google, cliquez sur API Access (Accès à l'API).

  4. Cliquez sur Create new Server key (Créer une clé de serveur), puis sur Create (Créer).

    noteRemarque
    Il n'est pas nécessaire de remplir la liste blanche des adresses IP.

  5. Notez la clé API créée.

Création d’un concentrateur de notification Service Bus

Dans le Portail de gestion Windows Azure, créez un concentrateur de notification et configurez-le de manière à envoyer des notifications Push à une application Android.

  1. Connectez-vous au Portail de gestion Windows Azure.

  2. Dans le coin inférieur gauche, cliquez sur Nouveau.

  3. Cliquez sur Services d’application, Service Bus, Concentrateur de notification, puis Création rapide.

    Notifications push
  4. Indiquez un nom pour le concentrateur de notification, une région et l’espace de noms dans lequel ce concentrateur de notification sera créé (si aucun espace de noms n’est disponible, un nouveau est configuré avec le nom souhaité). Cliquez sur la coche.

  5. Sous l’onglet Service Bus, dans le volet de navigation gauche, cliquez sur l’espace de noms créé. Le concentrateur de notification doit apparaître dans la liste.

    Notifications push
  6. Cliquez sur le concentrateur de notification, puis sur l’onglet Configurer en haut.

    Notifications push
  7. Collez la clé API GCM obtenue précédemment, puis cliquez sur Enregistrer.

Connexion à l’application

Si vous ne disposez d'aucun projet Android, créez-en un.

  1. Dans Eclipse ADT, créez un projet Android (Fichier, Nouveau, Application Android), puis paramétrez Minimum Required SDK (Kit de développement logiciel minimum requis) sur API 8 : Android 2.2 (Froyo).

    Notifications push
  2. Suivez les instructions de l'Assistant en conservant les paramètres standard (par exemple, en créant une activité vide).

    Notifications push
  3. Ouvrez Android SDK Manager (Gestionnaire de kits de développement logiciel Android) dans la barre d'outils supérieure d'Eclipse. Sélectionnez Google APIs (API Google), Google Cloud Messaging for Android Library (Google Cloud Messaging pour la bibliothèque Android) et Google Play Service, comme illustré. Cliquez sur Install Packages (Installer les packages). Redémarrez Eclipse.

    noteRemarque
    Remarque : le chemin du Kit de développement logiciel (SDK) est illustré en haut du Gestionnaire de kits de développement logiciel.

    Notifications push
  4. Suivez ce chemin, puis copiez les fichiers suivants dans l'Explorateur de package (ces fichiers figurent dans le répertoire libs de votre projet) : \extras\google\gcm\gcm-client\dist\gcm.jar; \extras\google\google_play_services\libproject\google-play-services_lib\libs\google-play-services.jar.

  5. Pour télécharger le kit de développement logiciel Android des concentrateurs de notification, cliquez ici. Extrayez le fichier .zip et copiez le fichier notificationhubs\notification-hubs-sdk.jar qui se trouve dans le répertoire \libs de votre projet dans l'Explorateur de package.

  6. Cliquez avec le bouton droit sur l'Explorateur de package, puis cliquez sur Propriétés. Cliquez ensuite sur Android dans le volet gauche. Vérifiez la cible Google APIs (API Google). Cliquez sur OK.

    Notifications push

    Configurez à présent l'application pour obtenir un registrationId de GCM. Cette valeur permet d'enregistrer l'instance de l'application dans le concentrateur de notification.

  7. Dans le fichier AndroidManifest.xml, ajoutez la ligne suivante directement sous l'élément <uses-sdk/>. Faites attention à remplacer <your package> par le package sélectionné pour votre application à l'étape 1 (com.microsoft.testnotificationhubs dans cet exemple).

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <permission android:name="<your package>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="<your package>.permission.C2D_MESSAGE"/>
    
  8. Dans la classe MainActivity, ajoutez les membres privés suivants.

    noteRemarque
    Veillez à utiliser l'identifiant d'expéditeur obtenu précédemment.

    private String SENDER_ID = "<your project number>";
    private GoogleCloudMessaging gcm;
    private NotificationHub hub;
    
  9. Sur le portail de gestion Windows Azure, récupérez la chaîne de connexion avec accès Listen en accédant au tableau de bord de votre concentrateur de notification, puis en cliquant sur Informations de connexion.

    Notifications push
  10. Dans la méthode OnCreate, ajoutez le code suivant, remplacez les espaces réservés par la chaîne de connexion avec accès Listen obtenue précédemment, et indiquez le nom de votre concentrateur de notification.

    gcm = GoogleCloudMessaging.getInstance(this);
            
    String connectionString = "<your listen access connection string>";
    hub = new NotificationHub("<your notification hub name>", connectionString, this);
    
    registerWithNotifiationHub();
    
  11. Dans MainActivity.java, créez la méthode suivante :

    @SuppressWarnings("unchecked")
    private void registerWithNotificationHubs() {
       new AsyncTask() {
          @Override
          protected Object doInBackground(Object... params) {
             try {
                String regid = gcm.register(SENDER_ID);
                hub.register(regid);
             } catch (Exception e) {
                return e;
             }
             return null;
         }
       }.execute(null, null, null);
    }
    
  12. Comme Android n'affiche pas de notifications, vous devez rédiger votre propre récepteur. Dans le fichier AndroidManifest.xml, ajoutez l'élément suivant dans l'élément <application/>.

    noteRemarque
    Remplacez l'espace réservé par le nom de votre package.

    <receiver
        android:name=".MyBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
       <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="<your package name>" />
       </intent-filter>
    </receiver>
    
  13. Créez une classe (cliquez avec le bouton droit sur le package d'applications dans l'Explorateur de package, puis cliquez sur Nouveau, puis sur Classe). Nommez la classe MyBroadcastReceiver, issue de android.content.BroadcastReceiver.

    Notifications push
  14. Ajoutez le code suivant à MyBroadcastReceiver :

    public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        Context ctx;
    
    @Override
    public void onReceive(Context context, Intent intent) {
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
            ctx = context;
            String messageType = gcm.getMessageType(intent);
            if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
                sendNotification("Send error: " + intent.getExtras().toString());
            } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
                sendNotification("Deleted messages on server: " + 
                        intent.getExtras().toString());
            } else {
                sendNotification("Received: " + intent.getExtras().toString());
            }
            setResultCode(Activity.RESULT_OK);
    }
    
    private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager)
                  ctx.getSystemService(Context.NOTIFICATION_SERVICE);
          
          PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
              new Intent(ctx, MainActivity.class), 0);
          
          NotificationCompat.Builder mBuilder =
              new NotificationCompat.Builder(ctx)
              .setSmallIcon(R.drawable.ic_launcher)
              .setContentTitle("Notification Hub Demo")
              .setStyle(new NotificationCompat.BigTextStyle()
                         .bigText(msg))
              .setContentText(msg);
          
         mBuilder.setContentIntent(contentIntent);
         mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
    

Exécutez l’application dans l'émulateur.

Lorsque vous exécutez l'application dans l'émulateur, veillez à utiliser un appareil virtuel Android compatible avec les API Google.

  1. Dans Window, sélectionnez Android Virtual Device Manager (Gestionnaire AVD), puis votre appareil et cliquez sur Edit (Modifier).

    Notifications push
  2. Sélectionnez Google APIs (API Google) dans Target (Cible), puis cliquez sur OK.

    Notifications push
  3. Dans la barre d’outils supérieure, cliquez sur le bouton Exécuter, puis sélectionnez votre application. L'émulateur est lancé et l'application démarre.

  4. L'application récupère la valeur registrationId de GCM et s'inscrit auprès du concentrateur de notification.

noteRemarque
Pour recevoir des notifications Push, vous devez configurer un compte Google sur votre appareil virtuel Android (dans l'émulateur, sélectionnez Settings (Paramètres), puis Add Account (Ajouter un compte)). Assurez-vous également que l'émulateur est connecté à Internet.

Envoi d’une notification avec .NET

Pour créer et envoyer des notifications, créez une application console simple. Vous pouvez réutiliser ce code dans une application Web normale.

Si vous utilisez Visual Studio Express 2012 pour Windows 8, accédez à la page Visual Studio Express 2012 pour Windows Desktop pour créer une application console. Vous pouvez également consulter la page Visual Studio Express 2012 pour le Web pour créer une application de formulaires Web simple.

Ajoutez des références aux éléments suivants :

  • System.Runtime.Serialization.dll

  • System.Runtime.Serialization.dll

Si vous créez une application console, utilisez le code suivant en tant que fonction Main(). Remplacez les espaces réservés par la chaîne de connexion avec accès complet que vous pouvez récupérer sur le portail de gestion Windows Azure, ainsi que le nom de votre concentrateur de notification.

Notifications push

Notez le format JSON GCM spécifique, présenté en détail ici.

static void Main(string[] args)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString(<your connection string with full access>, "<your notification hub name>");
    hubClient.SendGcmNativeNotification("{ \"data\" : {\"msg\":\"Hello from Windows Azure!\"}}");
}

Si 10 000 instances de client sont inscrites, le concentrateur de notification crée et envoie les 10 000 copies de la notification, et procède à la gestion des erreurs et des inscriptions nécessaires.

Notifications push

Envoi d’une notification avec Node.js

Installez Node.js et npm sur votre ordinateur.

  1. Installez le module du nœud Azure.

    npm install azure
    
  2. Dans un script de nœud (ou sur une console interactive), tapez la commande suivante :

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.gcm.send(null, '{"data":{"msg":"Hello from node.js!"}}');
    

Si 10 000 instances de client sont inscrites, le concentrateur de notification crée et envoie les 10 000 copies de la notification, et procède à la gestion des erreurs et des inscriptions nécessaires.

Envoi d'une notification à l'aide des services mobiles

Les services mobiles permettent de créer rapidement un serveur principal pour votre application. Vous pouvez utiliser les concentrateurs de notification à partir des services mobiles pour diffuser des notifications à des millions d'appareils ou pour créer facilement des groupes d'intérêts à l'aide de mots-clés.

Ce didacticiel fait appel à une tâche planifiée, mais vous pouvez envoyer des notifications à partir d'un script côté serveur dans votre service mobile.

  1. Créez un service mobile ou connectez-vous au vôtre. Pour plus d'informations sur le sujet suivant les services mobiles, consultez cette page.

  2. Dans la barre supérieure, cliquez sur Planificateur.

    Notifications push
  3. Créez une tâche planifiée, insérez un nom, puis cliquez sur À la demande.

    Notifications push
  4. Une fois la tâche créée, cliquez sur son nom. Dans la barre supérieure, cliquez sur Script.

  5. Insérez le script suivant. Veillez à remplacer les espaces réservés par le nom de votre concentrateur de notification et la chaîne de connexion pour DefaultFullSharedAccessSignature obtenue précédemment. Cliquez sur Enregistrer.

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.gcm.send(
            null,
            '{
                "data":
                {
                   "msg" : "Hello from Mobile Services!"
                }
            }',
            function (error)
            {
                if (!error) {
                    console.warn("Notification successful");
                }
            }
        );
    }
    
  6. Dans la barre inférieure, cliquez sur Exécuter une fois.

noteRemarque
Les services mobiles font appel au Kit de développement logiciel (SDK) pour Node.js afin d'accéder aux concentrateurs de notification. Pour plus d'informations sur le sujet suivant le Kit de développement logiciel (SDK) de Windows Azure pour Node.js avec les concentrateurs de notification, consultez cette page.

Comme ci-dessus, si 10 000 instances de client sont inscrites, le concentrateur de notification crée et envoie les 10 000 copies de la notification, et procède à la gestion des erreurs et des inscriptions nécessaires. Pour apprendre à envoyer des notifications multi-plateformes, à cibler des utilisateurs et des groupes d'intérêts spécifiques, et découvrir d'autres fonctionnalités avancées, reportez-vous à la rubrique approfondie Procédure relative aux concentrateurs de notification Service Bus (applications Windows Store) et à la rubrique de présentation Concentrateurs de notification Windows Azure Service Bus.

Ajouts de la communauté

Afficher:
© 2014 Microsoft