Comment demander, créer et enregistrer un canal de notification (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Remarque  Vous n’utilisez pas JavaScript ? Voir Comment demander, créer et enregistrer un canal de notification (XAML).

 

Vous pouvez ouvrir un URI (Uniform Resource Identifier) de canal sur lequel votre application peut recevoir des notifications Push. Vous pouvez ensuite transmettre le canal à votre serveur qui s’en servira pour envoyer des notifications Push, puis le fermer lorsque vous n’en avez plus besoin. Un canal est une adresse unique qui représente un utilisateur unique sur un seul et même périphérique pour une application ou vignette secondaire spécifique.

Il est préférable de demander un nouveau canal chaque fois que votre application est lancée et de mettre à jour le serveur cloud lorsque l’URI change. Pour plus de détails, voir Remarques.

Important  Les canaux de notification expirent automatiquement au bout de 30 jours.

 

Ce que vous devez savoir

Technologies

  • Windows Runtime

Prérequis

  • Connaissances pratiques des concepts et termes liés aux vignettes et aux notifications, ainsi que du format XML. Cette rubrique suppose également que vous savez créer une application du Windows Store de base en JavaScript à l’aide des API Windows Runtime.
  • Bonne connaissance des concepts, des exigences et du fonctionnement des notifications Push et des services de notifications Push Windows (WNS). Pour plus d’informations, voir Vue d’ensemble des services de notifications Push Windows (WNS).

Instructions

Étape 1: Demander un URI de canal

Cet exemple demande un URI de canal. La demande est effectuée auprès de la plateforme cliente de notification qui à son tour demande l’URI de canal auprès des services de notifications Push Windows (WNS). Lorsque la demande est terminée, la valeur renvoyée est un objet PushNotificationChannel qui contient l’URI.


var channel;
var pushNotifications = Windows.Networking.PushNotifications;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();

return channelOperation.then(function (newChannel) {
    channel = newChannel;
    // Success. The channel URI is found in newChannel.uri.
    },
    function (error) {
        // Could not create a channel. Retrieve the error through error.number.
    }
);

Étape 2: Envoyer l’URI de canal à votre serveur

L’URI de canal est empaqueté dans une requête HTTP POST et envoyé au serveur.

Important  Ces informations doivent être envoyées au serveur de manière sécurisée. Il est préférable de demander à l’application de s’authentifier auprès du serveur au moment de transmettre l’URI de canal. Chiffrez les informations et utilisez un protocole sécurisé tel que HTTPS.

 


var serverUrl = "https://www.contoso.com";

var xhr = new WinJS.xhr({
        type: "POST", 
        url: serverUrl,
        headers: {"Content-Type": "application/x-www-form-urlencoded"},
        data: "channelUri=" + channel.uri
}).then(function (req) {
        // Channel URI successfully sent to server. Retrieve the response from req.response.
    },
    function (req) {
        // Could not send channel URI to server. Retrieve the error through req.statusText.
    }
);

Remarques

Demande de canaux

Un nouveau canal doit être demandé chaque fois que vous appelez votre application. Pour cela, utilisez la logique suivante :

  1. Demandez un canal.
  2. Comparez le nouveau canal et votre ancien canal. S’ils sont identiques, vous n’avez plus rien à faire. Notez que, pour être en mesure de comparer le canal par la suite, votre application doit le stocker localement chaque fois qu’elle réussit à l’envoyer à votre service.
  3. Si le canal a changé, envoyez le nouveau à votre service web. Incluez une logique de gestion des erreurs qui envoie toujours un nouveau canal dans les cas suivants :
    • Votre application n’a jamais envoyé de canal au service web auparavant.
    • La dernière tentative d’envoi du canal au service web par votre application a échoué.

Des appels différents à la méthode createPushNotificationChannelForApplicationAsync ne renvoient pas toujours un canal différent. Si le canal n’a pas changé depuis le dernier appel, votre application doit préserver son effort et le trafic Internet en ne renvoyant pas le même canal à votre service. Une application peut disposer de plusieurs URI de canal valides en même temps. Comme chaque canal unique reste valide jusqu’à ce qu’il arrive à expiration, cela ne pose aucun problème d’en demander un nouveau car la date d’expiration des précédents canaux n’en est pas affectée.

Lorsque vous demandez un nouveau canal à chaque appel de l’application, vous augmentez vos chances d’avoir toujours accès à un canal valide, ce qui est particulièrement important si votre scénario de vignette ou toast requiert un contenu actif en permanence. Si vous pensez qu’un utilisateur n’exécutera pas l’application plus d’une fois tous les 30 jours, vous pouvez implémenter une tâche d’exécution régulière du code de demande de canal en arrière-plan.

Gestion des erreurs dans les demandes de canaux

L’appel sur la méthode createPushNotificationChannelForApplicationAsync peut échouer si Internet n’est pas disponible. Pour gérer ceci, ajoutez une logique de nouvelle tentative au code fourni à l’étape 2. Nous vous recommandons trois tentatives espacées de 10 secondes entre chaque tentative infructueuse. Si les trois tentatives échouent, votre application devra attendre que l’utilisateur relance l’application pour recommencer.

Fermeture de canaux

Votre application peut arrêter immédiatement la remise des notifications sur tous les canaux en appelant la méthode close. Bien qu’une telle opération ne soit pas courante pour votre application, certains scénarios peuvent nécessiter l’arrêt de toute remise de notification à votre application. Par exemple, si votre application dispose du concept des comptes d’utilisateurs et qu’un utilisateur se déconnecte de cette application, il faut logiquement s’attendre à ce que la vignette n’affiche plus les informations personnelles de cet utilisateur. Pour réussir à effacer le contenu de la vignette et arrêter la remise des notifications, vous devez procéder de la manière suivante :

  1. Arrêtez toutes les mises à jour de vignette en appelant la méthode PushNotificationChannel.close sur tous vos canaux de notification qui remettent des notifications par vignette, notifications de toast, notifications de badge ou notifications brutes à un utilisateur. L’appel de la méthode close garantit qu’aucune autre notification ne peut être remise au client pour cet utilisateur.
  2. Effacez le contenu de la vignette en appelant la méthode TileUpdater.clear afin de supprimer les données du précédent utilisateur de la vignette.

Rubriques associées

Exemple de notifications Push et périodiques

Vue d’ensemble des services de notifications Push Windows (WNS)

Démarrage rapide : envoi d’une notification Push

Comment s’authentifier auprès des services de notifications Push Windows (WNS)

Comment gérer l’expiration et le renouvellement des canaux

Recommandations et liste de vérification sur les notifications Push

En-têtes des demandes et des réponses du service de notifications Push