Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
- Android
- Cordoue
- Ios
- Windows
- Xamarin.Android
- Xamarin.iOS
- Xamarin.Forms
Aperçu
Dans ce tutoriel, vous ajoutez des notifications Push à tous les projets résultant du démarrage rapide Xamarin.Forms. Cela signifie qu’une notification Push est envoyée à tous les clients multiplateformes chaque fois qu’un enregistrement est inséré.
Si vous n’utilisez pas le projet de serveur de démarrage rapide téléchargé, vous aurez besoin du package d’extension de notification Push. Pour plus d’informations, consultez Utiliser le Kit de développement logiciel (SDK) du serveur principal .NET pour Azure Mobile Apps.
Conditions préalables
Pour iOS, vous aurez besoin d’une appartenance Programme de développement Apple et d’un appareil iOS physique. Le simulateur iOS ne prend pas en charge les notifications Push.
Configurer un hub de notification
La fonctionnalité Mobile Apps d’Azure App Service utilise Azure Notification Hubs pour envoyer des envois push. Vous allez donc configurer un hub de notification pour votre application mobile.
Dans le portail Azure, accédez à app Services, puis sélectionnez votre back-end d’application. Sous Paramètres, sélectionnez Push.
Pour ajouter une ressource de hub de notification à l’application, sélectionnez Se connecter. Vous pouvez créer un hub ou vous connecter à un hub existant.
hub
Vous avez maintenant connecté un hub de notification à votre projet back-end Mobile Apps. Plus tard, vous configurez ce hub de notification pour vous connecter à un PNS (système de notification de plateforme) pour envoyer des notifications aux appareils.
Mettre à jour le projet de serveur pour envoyer des notifications Push
Dans cette section, vous mettez à jour le code dans votre projet back-end Mobile Apps existant pour envoyer une notification Push chaque fois qu’un nouvel élément est ajouté. Ce processus est supporté par la fonctionnalité du modèle d’Azure Notification Hubs, qui permet l'envoi multiplateforme. Les différents clients sont inscrits pour les notifications Push à l’aide de modèles, et un seul push universel peut accéder à toutes les plateformes clientes.
Choisissez l’une des procédures suivantes qui correspondent à votre type de projet back-end , soit back-end .NET, soit Node.js back-end.
Projet serveur .NET
Dans Visual Studio, cliquez avec le bouton droit sur le projet de serveur. Sélectionnez ensuite Gérer les packages NuGet. Recherchez
Microsoft.Azure.NotificationHubs
, puis sélectionnez Installer. Ce processus installe la bibliothèque Notification Hubs pour l’envoi de notifications à partir du serveur principal.Dans le projet de serveur, ouvrez Controllers>TodoItemController.cs. Ajoutez ensuite les instructions « using » suivantes :
using System.Collections.Generic; using Microsoft.Azure.NotificationHubs; using Microsoft.Azure.Mobile.Server.Config;
Dans la méthode PostTodoItem, ajoutez le code suivant après l’appel à InsertAsync:
// Get the settings for the server project. HttpConfiguration config = this.Configuration; MobileAppSettingsDictionary settings = this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings(); // Get the Notification Hubs credentials for the mobile app. string notificationHubName = settings.NotificationHubName; string notificationHubConnection = settings .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString; // Create a new Notification Hub client. NotificationHubClient hub = NotificationHubClient .CreateClientFromConnectionString(notificationHubConnection, notificationHubName); // Send the message so that all template registrations that contain "messageParam" // receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations. Dictionary<string,string> templateParams = new Dictionary<string,string>(); templateParams["messageParam"] = item.Text + " was added to the list."; try { // Send the push notification and log the results. var result = await hub.SendTemplateNotificationAsync(templateParams); // Write the success result to the logs. config.Services.GetTraceWriter().Info(result.State.ToString()); } catch (System.Exception ex) { // Write the failure result to the logs. config.Services.GetTraceWriter() .Error(ex.Message, null, "Push.SendAsync Error"); }
Ce processus envoie une notification de modèle qui contient le texte de l'élément lorsqu'un nouvel élément est inséré.
Republiez le projet de serveur.
projet Node.js back-end
Configurez votre projet principal.
Remplacez le code existant dans todoitem.js par le code suivant :
var azureMobileApps = require('azure-mobile-apps'), promises = require('azure-mobile-apps/src/utilities/promises'), logger = require('azure-mobile-apps/src/logger'); var table = azureMobileApps.table(); table.insert(function (context) { // For more information about the Notification Hubs JavaScript SDK, // see https://aka.ms/nodejshubs. logger.info('Running TodoItem.insert'); // Define the template payload. var payload = '{"messageParam": "' + context.item.text + '" }'; // Execute the insert. The insert returns the results as a promise. // Do the push as a post-execute action within the promise flow. return context.execute() .then(function (results) { // Only do the push if configured. if (context.push) { // Send a template notification. context.push.send(null, payload, function (error) { if (error) { logger.error('Error while sending push notification: ', error); } else { logger.info('Push notification sent successfully!'); } }); } // Don't forget to return the results from the context.execute(). return results; }) .catch(function (error) { logger.error('Error while running context.execute: ', error); }); }); module.exports = table;
Ce processus envoie une notification de modèle qui contient l’élément.text lorsqu’un nouvel élément est inséré.
Lorsque vous modifiez le fichier sur votre ordinateur local, republiez le projet de serveur.
Configurer et exécuter le projet Android (facultatif)
Terminez cette section pour activer les notifications Push pour le projet Droid Xamarin.Forms pour Android.
Activer la fonction de messagerie cloud Firebase (FCM)
Connectez-vous à la console Firebase. Créer un nouveau projet Firebase si vous n’en avez pas encore.
Une fois le projet créé, sélectionnez Add Firebase to your Android app (Ajouter Firebase à votre application Android).
Dans la page Add Firebase to your Android app (Ajouter Firebase à votre application Android), procédez comme suit :
Pour le Nom de package Android, copiez la valeur de votre applicationId dans le fichier build.gradle de votre application. Dans cet exemple, il est
com.fabrikam.fcmtutorial1app
.Sélectionnez Inscrire une application.
Sélectionnez Télécharger google-services.json, enregistrez le fichier dans le dossier app de votre projet, puis sélectionnez Suivant.
Apportez les modifications de configuration à votre projet dans Android Studio.
Dans votre fichier build.gradle au niveau du projet (<project>/build.gradle), ajoutez l’instruction suivante dans la section dependencies.
classpath 'com.google.gms:google-services:4.0.1'
Dans votre fichier build.gradle au niveau de l’application (<projet>/<module_application>/build.gradle), ajoutez les instructions suivantes dans la section dependencies.
implementation 'com.google.firebase:firebase-core:16.0.8' implementation 'com.google.firebase:firebase-messaging:17.3.4'
Ajoutez la ligne suivante à la fin du fichier build.gradle au niveau de l’application après la section dependencies.
apply plugin: 'com.google.gms.google-services'
Sélectionnez Synchroniser maintenant dans la barre d’outils.
Cliquez sur Suivant.
Sélectionnez Ignorer cette étape.
Dans la console Firebase, sélectionnez l'icône de roue dentée associée à votre projet. Ensuite, sélectionnez Project Settings (Paramètres du projet).
Si vous n’avez pas encore téléchargé le fichier google-services.json dans le dossier application de votre projet Android Studio, vous pouvez le faire à partir de cette page.
Basculez vers l’onglet Messagerie cloud en haut.
Copiez et enregistrez la clé du serveur pour une utilisation ultérieure. Vous utilisez cette valeur pour configurer votre hub.
Configurer le back-end Mobile Apps pour envoyer des demandes Push à l’aide de FCM
- Dans le portail Azure , sélectionnez Parcourir tout>App Services. Sélectionnez ensuite votre back-end d'applications mobiles.
- Sous Paramètres, sélectionnez Push. Sélectionnez ensuite Configurer les services de notification Push.
- Accédez à Google (GCM). Entrez la clé de serveur héritée FCM que vous avez obtenue à partir de la console Firebase, puis sélectionnez Enregistrer.
Votre service est maintenant configuré pour fonctionner avec Firebase Cloud Messaging.
Ajouter des notifications Push au projet Android
Avec le back-end configuré avec FCM, vous pouvez ajouter des composants et des codes au client pour s’inscrire auprès de FCM. Vous pouvez également vous inscrire aux notifications Push auprès d’Azure Notification Hubs via le back-end Mobile Apps et recevoir des notifications.
- Dans le projet Droid, cliquez avec le bouton droit sur Références > Gérer les packages NuGet ....
- Dans la fenêtre Gestionnaire de package NuGet, recherchez le package Xamarin.Firebase.Messaging et ajoutez-le au projet.
- Dans les propriétés du projet Droid, configurez l'application pour qu'elle soit compilée avec la version 7.0 ou supérieure d'Android.
- Ajoutez le fichier google-services.json, téléchargé à partir de la console Firebase, à la racine du projet Droid et définissez son action de génération sur GoogleServicesJson. Pour plus d’informations, consultez Ajouter le fichier JSON Google Services.
Inscription auprès de Firebase Cloud Messaging
Ouvrez le fichier AndroidManifest.xml et insérez les éléments
<receiver>
suivants dans l’élément<application>
:<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" /> <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="${applicationId}" /> </intent-filter> </receiver>
Implémentation du service d’ID d’instance Firebase
Ajoutez une nouvelle classe au projet Droid nommé
FirebaseRegistrationService
et assurez-vous que les instructionsusing
suivantes sont présentes en haut du fichier :using System.Threading.Tasks; using Android.App; using Android.Util; using Firebase.Iid; using Microsoft.WindowsAzure.MobileServices;
Remplacez la classe
FirebaseRegistrationService
vide par le code suivant :[Service] [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })] public class FirebaseRegistrationService : FirebaseInstanceIdService { const string TAG = "FirebaseRegistrationService"; public override void OnTokenRefresh() { var refreshedToken = FirebaseInstanceId.Instance.Token; Log.Debug(TAG, "Refreshed token: " + refreshedToken); SendRegistrationTokenToAzureNotificationHub(refreshedToken); } void SendRegistrationTokenToAzureNotificationHub(string token) { // Update notification hub registration Task.Run(async () => { await AzureNotificationHubService.RegisterAsync(TodoItemManager.DefaultManager.CurrentClient.GetPush(), token); }); } }
La classe
FirebaseRegistrationService
est chargée de générer des jetons de sécurité qui autorisent l’application à accéder à FCM. La méthodeOnTokenRefresh
est appelée lorsque l’application reçoit un jeton d’inscription de FCM. La méthode récupère le jeton à partir de la propriétéFirebaseInstanceId.Instance.Token
, qui est mise à jour de façon asynchrone par FCM. La méthodeOnTokenRefresh
est rarement appelée, car le jeton est mis à jour uniquement lorsque l’application est installée ou désinstallée, lorsque l’utilisateur supprime les données de l’application, lorsque l’application efface l’ID d’instance ou lorsque la sécurité du jeton a été compromise. En outre, le service d’ID d’instance FCM demande que l’application actualise régulièrement son jeton, généralement tous les 6 mois.La méthode
OnTokenRefresh
appelle également la méthodeSendRegistrationTokenToAzureNotificationHub
, utilisée pour associer le jeton d’inscription de l’utilisateur à Azure Notification Hub.
Inscription auprès d’Azure Notification Hub
Ajoutez une nouvelle classe au projet Droid nommé
AzureNotificationHubService
et assurez-vous que les instructionsusing
suivantes sont présentes en haut du fichier :using System; using System.Threading.Tasks; using Android.Util; using Microsoft.WindowsAzure.MobileServices; using Newtonsoft.Json.Linq;
Remplacez la classe
AzureNotificationHubService
vide par le code suivant :public class AzureNotificationHubService { const string TAG = "AzureNotificationHubService"; public static async Task RegisterAsync(Push push, string token) { try { const string templateBody = "{\"data\":{\"message\":\"$(messageParam)\"}}"; JObject templates = new JObject(); templates["genericMessage"] = new JObject { {"body", templateBody} }; await push.RegisterAsync(token, templates); Log.Info("Push Installation Id: ", push.InstallationId.ToString()); } catch (Exception ex) { Log.Error(TAG, "Could not register with Notification Hub: " + ex.Message); } } }
La méthode
RegisterAsync
crée un modèle de message de notification simple en tant que JSON et s’inscrit pour recevoir des notifications de modèle à partir du hub de notification à l’aide du jeton d’inscription Firebase. Cela garantit que toutes les notifications envoyées à partir d’Azure Notification Hub ciblent l’appareil représenté par le jeton d’inscription.
Affichage du contenu d’une notification Push
Ajoutez une nouvelle classe au projet Droid nommé
FirebaseNotificationService
et assurez-vous que les instructionsusing
suivantes sont présentes en haut du fichier :using Android.App; using Android.Content; using Android.Media; using Android.Support.V7.App; using Android.Util; using Firebase.Messaging;
Remplacez la classe
FirebaseNotificationService
vide par le code suivant :[Service] [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })] public class FirebaseNotificationService : FirebaseMessagingService { const string TAG = "FirebaseNotificationService"; public override void OnMessageReceived(RemoteMessage message) { Log.Debug(TAG, "From: " + message.From); // Pull message body out of the template var messageBody = message.Data["message"]; if (string.IsNullOrWhiteSpace(messageBody)) return; Log.Debug(TAG, "Notification message body: " + messageBody); SendNotification(messageBody); } void SendNotification(string messageBody) { var intent = new Intent(this, typeof(MainActivity)); intent.AddFlags(ActivityFlags.ClearTop); //Unique request code to avoid PendingIntent collision. var requestCode = new Random().Next(); var pendingIntent = PendingIntent.GetActivity(this, requestCode, intent, PendingIntentFlags.OneShot); var notificationBuilder = new NotificationCompat.Builder(this) .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification) .SetContentTitle("New Todo Item") .SetContentText(messageBody) .SetContentIntent(pendingIntent) .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification)) .SetAutoCancel(true); var notificationManager = NotificationManager.FromContext(this); notificationManager.Notify(0, notificationBuilder.Build()); } }
La méthode
OnMessageReceived
, appelée lorsqu’une application reçoit une notification de FCM, extrait le contenu du message et appelle la méthodeSendNotification
. Cette méthode convertit le contenu du message en notification locale lancée pendant l’exécution de l’application, avec la notification qui s’affiche dans la zone de notification.
À présent, vous êtes prêt à tester les notifications Push dans l’application s’exécutant sur un appareil Android ou l’émulateur.
Tester les notifications Push dans votre application Android
Les deux premières étapes sont requises uniquement lorsque vous testez sur un émulateur.
- Assurez-vous que vous déployez ou déboguez sur un appareil ou un émulateur configuré avec Google Play Services. Cela peut être vérifié en vérifiant que les applications Play sont installées sur l’appareil ou l’émulateur.
- Ajoutez un compte Google à l’appareil Android en cliquant sur Apps>Settings>Add account. Suivez ensuite les invites pour ajouter un compte Google existant à l’appareil ou pour en créer un nouveau.
- Dans Visual Studio ou Xamarin Studio, cliquez avec le bouton droit sur le projet Droid, puis cliquez sur définir comme projet de démarrage.
- Cliquez sur Exécuter pour générer le projet et démarrer l’application sur votre appareil Ou émulateur Android.
- Dans l’application, tapez une tâche, puis cliquez sur l’icône plus (+).
- Vérifiez qu’une notification est reçue lorsqu’un élément est ajouté.
Configurer et exécuter le projet iOS (facultatif)
Cette section concerne l’exécution du projet Xamarin iOS pour les appareils iOS. Vous pouvez ignorer cette section si vous ne travaillez pas avec des appareils iOS.
Générer le fichier de demande de signature de certificat
Le service de notifications push d'Apple utilise des certificats pour authentifier vos notifications push. Suivez ces instructions pour créer le certificat push nécessaire pour envoyer et recevoir des notifications. Pour plus d’informations sur ces concepts, consultez la documentation officielle d’Apple Push Notification Service.
Générez le fichier demande de signature de certificat (CSR), qu’Apple utilise pour générer un certificat Push signé.
Sur votre Mac, exécutez l’outil Trousseau d'accès. Vous pouvez l’ouvrir à partir du dossier Utilitaires ou du dossier Autre sur Launchpad.
Sélectionnez Trousseau d’accès, ouvrez Assistant de certification, puis cliquez sur Demander un certificat à une autorité de certification.
Remarque
Par défaut, Accès au trousseau sélectionne le premier élément de la liste. Cela peut poser problème si vous êtes dans la catégorie Certificats et que Apple Worldwide Developer Relations Certification Authority (Autorité de certification des relations des développeurs dans le monde entier) ne figure pas comme premier élément dans la liste. Veillez à disposer d’un élément non-clé, ou que la clé Apple Worldwide Developer Relations Certification Authority est sélectionnée, avant de générer la demande de signature de certificat (CSR).
Sélectionnez votre adresse e-mail d’utilisateur, entrez votre nom commun, veillez à spécifier Enregistré sur le disque, puis sélectionnez Continuer. Laissez le champ Adresse de messagerie d’autorité de certification vide, car il n’est pas requis.
Entrez un nom pour le fichier CSR dans Enregistrer en tant que, sélectionnez l’emplacement dans Où, puis sélectionnez Enregistrer.
Cette action enregistre le fichier CSR à l’emplacement sélectionné. L’emplacement par défaut est Bureau. Notez l’emplacement choisi pour ce fichier.
Ensuite, inscrivez votre application auprès d’Apple, activez les notifications Push, puis téléchargez le fichier de demande de signature de certificat exporté pour créer un certificat Push.
Inscription de votre application pour les notifications Push
Pour envoyer des notifications push vers une application iOS, inscrivez votre application auprès d'Apple et enregistrez-vous également pour les notifications push.
Si vous n’avez pas encore inscrit votre application, accédez au portail de provisionnement iOS dans le Centre pour développeurs Apple. Connectez-vous au portail avec votre ID Apple, puis sélectionnez Identifiants. Sélectionnez ensuite + pour inscrire une nouvelle application.
Sur l’écran Enregistrer un nouvel identifiant, sélectionnez le bouton radio Identifiants d'application. Ensuite, sélectionnez Continuer.
Mettez à jour les trois valeurs suivantes pour votre nouvelle application, puis sélectionnez Continue :
Description : tapez un nom descriptif pour votre application.
ID de l’offre groupée : entrez un identifiant de bundle au format Organization Identifier.Product Name comme indiqué dans le Guide de distribution d’application. Les valeurs Organization Identifier et Product Name doivent correspondre à l’identificateur d’organisation et au nom de produit que vous utiliserez pour créer le projet Xcode. Dans la capture d’écran ci-dessous, la valeur NotificationHubs est utilisée comme identificateur d’organisation, tandis que la valeur GetStarted correspond au nom du produit. Vérifiez que la valeur Bundle Identifier correspond à celle de votre projet Xcode, afin que Xcode utilise le profil de publication correct.
Notifications Push : cochez l’option Notifications Push dans la section Capabilities (Fonctionnalités).
L’ID de votre application est généré et vous êtes invité à confirmer les informations. Sélectionnez Continue (Continuer), puis Register (Inscrire) pour confirmer le nouvel ID d’application.
Une fois que vous avez sélectionné Inscrire, vous voyez le nouvel ID d'application en tant qu'élément de la liste dans la page Certificats, Identificateurs & Profils.
Dans la page Certificates, Identifiers & Profiles, sous Identifiers (Identifiants), recherchez l’élément de ligne ID d’application que vous venez de créer, puis sélectionnez sa ligne pour afficher l’écran Edit your App ID Configuration (Modifier votre configuration d’ID d’application).
Création d’un certificat pour Notification Hubs
Un certificat est nécessaire pour permettre au hub de notification de fonctionner avec APNS. Vous pouvez effectuer cette opération de deux manières :
- Créez un .p12 qui peut être téléchargé directement sur Notification Hub.
- Créez un .p8 utilisable pour l’authentification basée sur des jetons (l’approche la plus récente).
L’approche la plus récente présente un certain nombre d’avantages (par rapport à l’utilisation de certificats) comme indiqué dans authentification basée sur un jeton (HTTP/2) pour APNS. Toutefois, des étapes ont été fournies pour les deux approches.
OPTION 1 : Création d’un certificat Push .p12 qui peut être chargé directement dans Notification Hub
Faites défiler la page jusqu’à l’option cochée Push Notifications (Notifications Push), puis sélectionnez Configure (Configurer) pour créer le certificat.
Modifier la page de l'ID d'application
La fenêtre Apple Push Notification service SSL Certificates (Certificats SSL du service Apple Push Notification) s’affiche. Sélectionnez le bouton Créer un certificat sous la section certificat SSL de développement.
L’écran Create a new Certificate (Créer un certificat) s’affiche.
Remarque
Ce didacticiel utilise un certificat de développement. Le même processus est utilisé lors de l’inscription d’un certificat de production. Veillez simplement à utiliser le même type de certificat lors de l’envoi de notifications.
Sélectionnez Choisir un fichier, accédez à l’emplacement où vous avez enregistré le fichier CSR à partir de la première tâche, puis double-cliquez sur le nom du certificat pour le charger. Ensuite, sélectionnez Continuer.
Une fois que le portail a créé un certificat, sélectionnez le bouton Télécharger. Enregistrez le certificat et notez son emplacement pour le retrouver facilement.
page de téléchargement de certificat généré
Le certificat est téléchargé et enregistré sur votre ordinateur dans votre dossier Téléchargements.
Remarque
Par défaut, le certificat de développement téléchargé se nomme aps_development.cer.
Double-cliquez sur le certificat Push téléchargé aps_development.cer. Cette action installe le nouveau certificat dans le trousseau d'accès, comme illustré dans l’image suivante :
Remarque
Bien que le nom de votre certificat soit différent, le nom est préfixé par Apple Development iOS Push Services.
Dans Trousseau d’accès, cliquez avec le bouton droit sur le certificat push que vous avez créé dans la catégorie Certificats . Sélectionnez Exporter, nommez le fichier, sélectionnez le format .p12, puis sélectionnez Enregistrer.
Vous pouvez choisir de protéger le certificat par un mot de passe, mais cela est facultatif. Cliquez sur OK si vous souhaitez ignorer l’étape de création du mot de passe. Notez le nom du fichier et l’emplacement du certificat .p12 exporté. Ils sont utilisés pour activer l’authentification avec des API.
Remarque
Le nom et l’emplacement de votre fichier .p12 peuvent être différents de ceux montrés dans ce tutoriel.
OPTION 2 : Création d’un certificat .p8 qui peut être utilisé pour l’authentification basée sur des jetons
Prenez note des détails suivants :
- Préfixe d’ID d’application (il s’agit d’un ID d’équipe)
- ID de paquet
De retour dans Certificats, identificateurs et profils, cliquez sur Clés.
Remarque
Si vous disposez déjà d’une clé configurée pour APNS, vous pouvez réutiliser le certificat .p8 que vous avez téléchargé juste après l’avoir créée. Si c’est le cas, vous pouvez ignorer les étapes 3 via 5.
Cliquez sur le bouton + (ou sur le bouton Créer une clé) pour créer une clé.
Fournissez une valeur appropriée pour Nom de Clé, puis cochez l’option Service de notifications push Apple (APNs), et cliquez sur Continuer, puis sur Inscrire à l’écran suivant.
Cliquez sur Télécharger, puis déplacez le fichier .p8 (préfixé par AuthKey_) vers un répertoire local sécurisé, puis cliquez sur Terminé.
Remarque
Veillez à conserver votre fichier .p8 dans un emplacement sécurisé (et à enregistrer une sauvegarde). Après avoir téléchargé votre clé, elle ne peut pas être téléchargée à nouveau, car la copie du serveur est supprimée.
Dans Clés, cliquez sur la clé que vous venez de créer (ou une clé existante si vous avez choisi de l’utiliser à la place).
Notez la valeur de l’ID de clé.
Ouvrez votre certificat .p8 dans une application appropriée de votre choix, par exemple Visual Studio Code notez la valeur de clé. Il s’agit de la valeur comprise entre -----BEGIN PRIVATE KEY----- et -----END PRIVATE KEY----- .
-----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----
Remarque
Il s’agit de la valeur de jeton qui sera utilisée ultérieurement pour configurer notification Hub.
À la fin de ces étapes, vous devez disposer des informations suivantes pour une utilisation ultérieure dans Configurer votre hub de notification avec des informations APN:
- ID de l’équipe (voir l’étape 1)
- ID de bundle (voir l’étape 1)
- ID de clé (voir l’étape 7)
- valeur de jeton c’est-à-dire la valeur de clé .p8 (voir l’étape 8)
Créer un profil d’approvisionnement pour l’application
Revenez au portail de provisionnement iOS, sélectionnez Certificates, Identifiers & Profiles (Certificats, identifiants et profils), sélectionnez Profiles (Profils) dans le menu de gauche, puis sélectionnez + pour créer un profil. L’écran Register a New Provisioning Profile (Inscrire un nouveau profil de provisionnement) s’affiche.
Sélectionnez iOS App Development (Développement d’application iOS) sous Development (Développement) comme type de profil de provisionnement, puis sélectionnez Continue (Continuer).
Ensuite, sélectionnez l’ID d’application que vous avez créé dans la liste déroulante ID d’application, puis sélectionnez Continuer.
Dans la fenêtre Select certificates (Sélectionner des certificats), sélectionnez le certificat de développement utilisé pour la signature de code, puis sélectionnez Continuer. Ce certificat n’est pas le certificat Push que vous avez créé. S’il n’en existe pas, vous devez le créer. Si un certificat existe, passez à l’étape suivante. Pour créer un certificat de développement s’il n’en existe pas déjà :
- Si vous voyez No Certificates are available (Aucun certificat n’est disponible), sélectionnez Create Certificate (Créer un certificat).
- Dans la section Software (Logiciels), sélectionnez Apple Development (Développement Apple). Ensuite, sélectionnez Continuer.
- Dans l’écran Create a new Certificate (Créer un certificat), sélectionnez Choose File (Choisir un fichier).
- Accédez au fichier de demande de signature du certificat que vous avez créé précédemment, sélectionnez-le, puis sélectionnez Ouvrir.
- Sélectionnez Continuer.
- Téléchargez le certificat de développement et n’oubliez pas l’emplacement dans lequel il est enregistré.
Revenez à la page Certificates, Identifiers & Profiles (Certificats, identifiants et profils), sélectionnez Profiles dans le menu de gauche, puis sélectionnez + pour créer un profil. L’écran Register a New Provisioning Profile (Inscrire un nouveau profil de provisionnement) s’affiche.
Dans la fenêtre Select certificates (Sélectionner des certificats), sélectionnez le certificat de développement que vous venez de créer. Ensuite, sélectionnez Continuer.
Sélectionnez les appareils à utiliser pour le test, puis sélectionnez Continue.
Enfin, choisissez un nom pour le profil dans Nom du profil d’approvisionnement, puis sélectionnez Générer.
Une fois le profil de provisionnement créé, sélectionnez Télécharger. N’oubliez pas l’emplacement où il est enregistré.
Accédez à l’emplacement du profil de provisionnement, puis double-cliquez sur le profil pour l’installer sur votre machine de développement Xcode.
Créer un hub de notification
Dans cette section, vous allez créer un hub de notification et configurer l’authentification avec des API à l’aide du certificat push .p12 ou de l’authentification basée sur un jeton. Si vous souhaitez utiliser un hub de notification que vous avez déjà créé, vous pouvez passer directement à l’étape 5.
Connectez-vous au portail Azure.
Sélectionnez Tous les services dans le menu de gauche, puis sélectionnez Notification Hubs dans la section Mobile. Sélectionnez l’icône d’étoile en regard du nom du service pour l’ajouter à la section FAVORIS dans le menu de gauche. Après avoir ajouté Notification Hubs à FAVORIS, sélectionnez-le dans le menu à gauche.
Dans la page Notification Hubs, sélectionnez Ajouter dans la barre d’outils.
Dans la page Notification Hub, procédez comme suit :
Entrez un nom dans Notification Hub.
Entrez un nom dans Créer un espace de noms. Un espace de noms contient un ou plusieurs hubs.
Sélectionnez une valeur dans la zone de liste déroulante Emplacement. Cette valeur spécifie l’emplacement où vous voulez créer le hub.
Sélectionnez un groupe de ressources existant dans groupe de ressources, ou créez un nom pour un nouveau groupe de ressources.
Sélectionnez Créer.
Sélectionnez Notifications (icône de cloche), puis Accéder à la ressource. Vous pouvez également actualiser la liste dans la page Notification Hubs et sélectionner votre hub.
portail Azure
Sélectionnez Stratégies d’accès dans la liste. Notez que les deux chaînes de connexion sont disponibles pour vous. Vous en aurez besoin pour gérer les notifications Push.
Important
N’utilisez pas la stratégie DefaultFullSharedAccessSignature dans votre application. Cela est destiné à être utilisé uniquement dans votre serveur.
Configurer votre hub de notification avec des informations APN
Sous Notification Services, sélectionnez Apple (APNS) puis suivez les étapes appropriées en fonction de l’approche que vous avez choisie précédemment dans la section Création d’un certificat pour Notification Hubs.
Remarque
Utilisez le en mode de production pour le Mode Application uniquement si vous souhaitez envoyer des notifications push aux utilisateurs qui ont acheté votre application depuis le magasin.
OPTION 1 : Utilisation d’un certificat Push .p12
Sélectionnez Certificate.
Sélectionnez l’icône du fichier.
Sélectionnez le fichier .p12 exporté précédemment, puis sélectionnez Ouvrir.
S’il y a lieu, entrez le mot de passe correct.
Sélectionnez le mode Bac à sable.
Cliquez sur Enregistrer.
OPTION 2 : Utilisation de l’authentification basée sur les jetons
Sélectionnez Jeton.
Entrez les valeurs suivantes déjà en votre possession :
- ID de clé
- Identifiant de bundle
- ID de l’équipe
- Jeton
Choisissez Bac à sable.
Cliquez sur Enregistrer.
Vous avez maintenant configuré votre hub de notification avec APNs. Vous disposez également des chaînes de connexion pour inscrire votre application et envoyer des notifications Push.
Configurer le hub de notification pour APNS
- Sur votre Mac, lancez keychain Access. Dans la barre de navigation gauche, sous Catégorie, ouvrez Mes certificats. Recherchez le certificat SSL que vous avez téléchargé dans la section précédente, puis divulguer son contenu. Sélectionnez uniquement le certificat (ne sélectionnez pas la clé privée). Ensuite l’exporter.
- Dans le portail Azure , sélectionnez Parcourir tout>App Services. Sélectionnez ensuite votre back-end d'applications mobiles.
- Sous Paramètres, sélectionnez Push du service d'application. Sélectionnez ensuite le nom de votre hub de notification.
- Accédez à Apple Push Notification Services>Téléverser le certificat. Chargez le fichier .p12, en sélectionnant le mode approprié (selon que votre certificat SSL client précédemment utilisé est en production ou en environnement de test). Enregistrez les modifications.
Votre service est maintenant configuré pour fonctionner avec des notifications Push sur iOS.
Ensuite, vous allez configurer le paramètre de projet iOS dans Xamarin Studio ou Visual Studio.
Configurer le projet iOS dans Xamarin Studio
Dans Xamarin.Studio, ouvrez Info.plistet mettez à jour l’identificateur de bundle avec l’ID de bundle que vous avez créé précédemment avec votre nouvel ID d’application.
Faites défiler jusqu’à modes d’arrière-plan. Sélectionnez la case Activer les modes d'arrière-plan et la case Notifications à distance.
Double-cliquez sur votre projet dans le Panneau de solution pour ouvrir Options de projet.
Sous Build, choisissez Signature de bundle iOS, puis sélectionnez l'identité et le profil d'approvisionnement correspondant que vous venez de configurer pour ce projet.
Cela garantit que le projet utilise le nouveau profil pour la signature de code. Pour obtenir la documentation officielle sur l’approvisionnement d’appareils Xamarin, consultez Xamarin Device Provisioning .
Configurer le projet iOS dans Visual Studio
Dans Visual Studio, cliquez avec le bouton droit sur le projet, puis cliquez sur Propriétés.
Dans les pages de propriétés, cliquez sur l’onglet application iOS, puis mettez à jour l'd’identificateur avec l’ID que vous avez créé précédemment.
Dans l’onglet signature du bundle iOS, sélectionnez l’identité et le profil d’approvisionnement correspondants que vous venez de configurer pour ce projet.
Cela garantit que le projet utilise le nouveau profil pour la signature de code. Pour obtenir la documentation officielle sur l’approvisionnement d’appareils Xamarin, consultez Xamarin Device Provisioning .
Double-cliquez sur Info.plist pour l’ouvrir, puis activez RemoteNotifications sous modes d’arrière-plan.
Ajouter des notifications Push à votre application iOS
Dans le projet iOS, ouvrez AppDelegate.cs et ajoutez l’instruction suivante en haut du fichier de code.
using Newtonsoft.Json.Linq;
Dans la classe AppDelegate, ajoutez une surcharge pour l’événement RegisteredForRemoteNotifications afin de s'inscrire aux notifications :
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) { const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}"; JObject templates = new JObject(); templates["genericMessage"] = new JObject { {"body", templateBodyAPNS} }; // Register for push with your mobile app Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush(); push.RegisterAsync(deviceToken, templates); }
Dans AppDelegate, ajoutez également le remplacement suivant pour le gestionnaire d’événements DidReceiveRemoteNotification :
public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler) { NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary; string alert = string.Empty; if (aps.ContainsKey(new NSString("alert"))) alert = (aps[new NSString("alert")] as NSString).ToString(); //show alert if (!string.IsNullOrEmpty(alert)) { UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null); avAlert.Show(); } }
Cette méthode gère les notifications entrantes pendant l’exécution de l’application.
Dans la classe AppDelegate, ajoutez le code suivant à la méthode FinishedLaunching :
// Register for push notifications. var settings = UIUserNotificationSettings.GetSettingsForTypes( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet()); UIApplication.SharedApplication.RegisterUserNotificationSettings(settings); UIApplication.SharedApplication.RegisterForRemoteNotifications();
Cela permet la prise en charge des notifications à distance et des demandes d’inscription Push.
Votre application est désormais mise à jour pour prendre en charge les notifications Push.
Tester les notifications Push dans votre application iOS
Cliquez avec le bouton droit sur le projet iOS, puis cliquez sur Définir comme projet de démarrage.
Appuyez sur le bouton Exécuter ou F5 dans Visual Studio pour générer le projet et démarrer l’application dans un appareil iOS. Cliquez ensuite sur OK pour accepter les notifications Push.
Remarque
Vous devez accepter explicitement les notifications Push de votre application. Cette requête se produit uniquement la première fois que l’application s’exécute.
Dans l’application, tapez une tâche, puis cliquez sur l’icône plus (+).
Vérifiez qu’une notification est reçue, puis cliquez sur OK pour ignorer la notification.
Configurer et exécuter des projets Windows (facultatif)
Cette section concerne l’exécution des projets WinApp et WinPhone81 Xamarin.Forms pour les appareils Windows. Ces étapes prennent également en charge les projets de plateforme Windows universelle (UWP). Vous pouvez ignorer cette section si vous ne travaillez pas avec des appareils Windows.
Inscrire votre application Windows pour les notifications Push auprès du service de notification Windows (WNS)
Dans l’Explorateur de solutions Visual Studio, cliquez avec le bouton droit sur le projet d’application du Windows Store. Sélectionnez ensuite Store>Associer une application auStore.
Dans l’Assistant, sélectionnez Suivant. Connectez-vous ensuite avec votre compte Microsoft. Dans Réserver un nouveau nom d’application, tapez un nom pour votre application, puis sélectionnez Réservez.
Une fois l’inscription de l’application créée, sélectionnez le nouveau nom de l’application. Sélectionnez suivant, puis Associer. Ce processus ajoute les informations d’inscription du Windows Store requises au manifeste de l’application.
Répétez les étapes 1 et 3 pour le projet d’application Du Windows Phone Store à l’aide de la même inscription que celle que vous avez créée précédemment pour l’application du Windows Store.
Accédez au centre de développement Windows , puis connectez-vous avec votre compte Microsoft. Dans Mes applications, sélectionnez la nouvelle inscription d’application. Développez ensuite Services>notifications de type push.
Sur la page notifications Push, sous Windows Push Notification Services (WNS) et Microsoft Azure Mobile Apps, sélectionnez site Live Services. Notez les valeurs de l'Package SID et de la valeur actuelle de dans le Secret d’Application .
Paramètre d'application
Important
Le secret de l’application et le SID de package sont des informations d’identification de sécurité importantes. Ne partagez pas ces valeurs avec n’importe qui ou ne les distribuez pas avec votre application.
Configurer le hub de notification pour WNS
Dans le portail Azure , sélectionnez Parcourir tout>App Services. Sélectionnez ensuite votre back-end d'applications mobiles. Sous Paramètres, sélectionnez Push du service d'application. Sélectionnez ensuite le nom de votre hub de notification.
Allez à Windows (WNS). Entrez ensuite la clé de sécurité (clé secrète client) et package SID que vous avez obtenu à partir du site Live Services. Ensuite, sélectionnez Enregistrer.
Votre back-end est maintenant configuré pour utiliser WNS pour envoyer des notifications Push.
Ajouter des notifications Push à votre application Windows
Dans Visual Studio, ouvrez App.xaml.cs dans un projet Windows et ajoutez les instructions suivantes.
using Newtonsoft.Json.Linq; using Microsoft.WindowsAzure.MobileServices; using System.Threading.Tasks; using Windows.Networking.PushNotifications; using <your_TodoItemManager_portable_class_namespace>;
Remplacez
<your_TodoItemManager_portable_class_namespace>
par l’espace de noms de votre projet portable qui contient la classeTodoItemManager
.Dans App.xaml.cs, ajoutez la méthode initNotificationsAsync suivante :
private async Task InitNotificationsAsync() { var channel = await PushNotificationChannelManager .CreatePushNotificationChannelForApplicationAsync(); const string templateBodyWNS = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>"; JObject headers = new JObject(); headers["X-WNS-Type"] = "wns/toast"; JObject templates = new JObject(); templates["genericMessage"] = new JObject { {"body", templateBodyWNS}, {"headers", headers} // Needed for WNS. }; await TodoItemManager.DefaultManager.CurrentClient.GetPush() .RegisterAsync(channel.Uri, templates); }
Cette méthode récupère le canal de notification Push et enregistre un modèle pour recevoir des notifications basées sur des modèles à partir de votre hub de notification. Une notification de modèle qui prend en charge messageParam sera remise à ce client.
Dans App.xaml.cs, mettez à jour la définition de la méthode du gestionnaire d'événements OnLaunched en ajoutant le modificateur
async
. Ajoutez ensuite la ligne de code suivante à la fin de la méthode :await InitNotificationsAsync();
Cela garantit que l’inscription de notification Push est créée ou actualisée chaque fois que l’application est lancée. Il est important de le faire pour garantir que le canal push WNS est toujours actif.
Dans l’Explorateur de solutions pour Visual Studio, ouvrez le fichier Package.appxmanifest et définissez Capable Toast sur Oui sous Notifications.
Générez l’application et vérifiez que vous n’avez aucune erreur. Votre application cliente doit maintenant s’inscrire aux notifications de modèle à partir du serveur principal Mobile Apps. Répétez cette section pour chaque projet Windows dans votre solution.
Tester les notifications Push dans votre application Windows
- Dans Visual Studio, cliquez avec le bouton droit sur un projet Windows, puis cliquez sur définir comme projet de démarrage.
- Appuyez sur le bouton Exécuter pour générer le projet et démarrer l’application.
- Dans l’application, tapez un nom pour un nouvel objet todoitem, puis cliquez sur l’icône plus (+) pour l’ajouter.
- Vérifiez qu’une notification est reçue lorsque l’élément est ajouté.
Étapes suivantes
Vous pouvez en savoir plus sur les notifications Push :
- L’envoi de notifications push à partir d’Azure Mobile Apps
- Firebase Cloud Messaging
- Notifications à distance avec Firebase Cloud Messaging
-
Diagnostiquer les problèmes de notification Push
Il existe différentes raisons pour lesquelles les notifications peuvent être supprimées ou ne se terminent pas sur les appareils. Cette rubrique vous montre comment analyser et déterminer la cause racine des échecs de notification Push.
Vous pouvez également passer à l’un des didacticiels suivants :
-
Ajouter l’authentification à votre application
Découvrez comment authentifier les utilisateurs de votre application avec un fournisseur d’identité. -
Activer la synchronisation hors connexion pour votre application
Découvrez comment ajouter la prise en charge hors connexion de votre application à l’aide d’un back-end Mobile Apps. Avec la synchronisation hors connexion, les utilisateurs peuvent interagir avec une application mobile (affichage, ajout ou modification de données), même s’il n’existe aucune connexion réseau.