Remarque
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.
À l’aide d’un Assistant dans Visual Studio, vous pouvez générer des notifications Push à partir d’un service mobile créé avec Azure Mobile Services. L’Assistant Visual Studio génère du code pour vous aider à commencer. Cette rubrique explique comment l’Assistant modifie votre projet, ce que fait le code généré, comment utiliser ce code et ce que vous pouvez faire en regard de tirer le meilleur parti des notifications Push. Voir vue d'ensemble des Windows Push Notification Services (WNS).
Comment l'Assistant modifie votre projet
L’Assistant Notification Push modifie votre projet de la manière suivante :
- Ajoute une référence au client managé Mobile Services (MobileServicesManagedClient.dll). Non applicable aux projets JavaScript.
- Ajoute un fichier dans un sous-dossier sous les services et nomme le fichier push.register.cs, push.register.vb, push.register.cpp ou push.register.js.
- Crée une table de canaux sur le serveur de base de données pour le service mobile. Le tableau contient des informations requises pour envoyer des notifications Push aux instances d’application.
- Crée des scripts pour quatre fonctions : supprimer, insérer, lire et mettre à jour.
- Crée un script avec une API personnalisée, notifyallusers.js, qui envoie une notification Push à tous les clients.
- Ajoute une déclaration à votre App.xaml.cs, App.xaml.vb ou fichier App.xaml.cpp, ou ajoute une déclaration à un nouveau fichier, service.js, pour les projets JavaScript. La déclaration déclare un objet MobileServiceClient, qui contient les informations requises pour se connecter au service mobile. Vous pouvez accéder à cet objet MobileServiceClient, nommé MyServiceNameClient, à partir de n’importe quelle page de votre application à l’aide du nom De l’application.Client MyServiceName.
Le fichier services.js contient le code suivant :
var <mobile-service-name>Client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
"https://<mobile-service-name>.azure-mobile.net/",
"<your client secret>");
Inscription pour les notifications Push
Dans push.register.*, la méthode UploadChannel inscrit l’appareil pour recevoir des notifications Push. Le Windows Store effectue le suivi des instances installées de votre application et fournit le canal de notification Push. See PushNotificationChannelManager.
Le code client est similaire pour le back-end JavaScript et le back-end .NET. Par défaut, lorsque vous ajoutez des notifications Push pour un service principal JavaScript, un exemple d’appel à l’API personnalisée notifyAllUsers est inséré dans la méthode UploadChannel.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json.Linq;
namespace App2
{
internal class mymobileservice1234Push
{
public async static void UploadChannel()
{
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
try
{
await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri);
await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers");
}
catch (Exception exception)
{
HandleRegisterException(exception);
}
}
private static void HandleRegisterException(Exception exception)
{
}
}
}
Imports Microsoft.WindowsAzure.MobileServices
Imports Newtonsoft.Json.Linq
Friend Class mymobileservice1234Push
Public Shared Async Sub UploadChannel()
Dim channel = Await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync()
Try
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri)
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri, New String() {"tag1", "tag2"})
Await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers")
Catch exception As Exception
HandleRegisterException(exception)
End Try
End Sub
Private Shared Sub HandleRegisterException(exception As Exception)
End Sub
End Class
#include "pch.h"
#include "services\mobile services\mymobileservice1234\mymobileservice1234Push.h"
using namespace AzureMobileHelper;
using namespace web;
using namespace concurrency;
using namespace Windows::Networking::PushNotifications;
void mymobileservice1234Push::UploadChannel()
{
create_task(PushNotificationChannelManager::CreatePushNotificationChannelForApplicationAsync()).
then([] (PushNotificationChannel^ newChannel)
{
return mymobileservice1234MobileService::GetClient().get_push().register_native(newChannel->Uri->Data());
}).then([]()
{
return mymobileservice1234MobileService::GetClient().invoke_api(L"notifyAllUsers");
}).then([](task<json::value> result)
{
try
{
result.wait();
}
catch(...)
{
HandleExceptionsComingFromTheServer();
}
});
}
void mymobileservice1234Push::HandleExceptionsComingFromTheServer()
{
}
(function () {
"use strict";
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.addEventListener("activated", function (args) {
if (args.detail.kind == activation.ActivationKind.launch) {
Windows.Networking.PushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync()
.then(function (channel) {
mymobileserviceclient1234Client.push.registerNative(channel.Uri, new Array("tag1", "tag2"))
return mymobileservice1234Client.push.registerNative(channel.uri);
})
.done(function (registration) {
return mymobileservice1234Client.invokeApi("notifyAllUsers");
}, function (error) {
// Error
});
}
});
})();
Les balises de notification Push permettent de restreindre les notifications à un sous-ensemble de clients. Vous pouvez utiliser la méthode registerNative (ou RegisterNativeAsync) pour s’inscrire à toutes les notifications Push sans spécifier de balises, ou vous pouvez vous inscrire auprès de balises en fournissant le deuxième argument, un tableau de balises. Si vous vous inscrivez avec une ou plusieurs balises, vous recevez uniquement des notifications qui correspondent à ces balises.
Scripts côté serveur (uniquement pour le back-end JavaScript)
Pour les services mobiles qui utilisent le serveur principal JavaScript, les scripts côté serveur s’exécutent lors des opérations de suppression, d’insertion, de lecture ou de mise à jour. Les scripts n’implémentent pas ces opérations, mais ils s’exécutent lorsqu’un appel du client à l’API REST Windows Mobile déclenche ces événements. Les scripts passent ensuite le contrôle aux opérations elles-mêmes en appelant request.execute ou request.response pour émettre une réponse au contexte appelant. Voir Référence de l'API REST Azure Mobile Services.
Diverses fonctions sont disponibles dans le script côté serveur. Consultez Inscrire des opérations de table dans azure Mobile Services. Pour obtenir une référence à toutes les fonctions disponibles, consultez référence de script de serveur Mobile Services.
Le code d’API personnalisé suivant dans Notifyallusers.js est également créé :
exports.post = function(request, response) {
response.send(statusCodes.OK,{ message : 'Hello World!' })
// The following call is for illustration purpose only
// The call and function body should be moved to a script in your app
// where you want to send a notification
sendNotifications(request);
};
// The following code should be moved to appropriate script in your app where notification is sent
function sendNotifications(request) {
var payload = '<?xml version="1.0" encoding="utf-8"?><toast><visual><binding template="ToastText01">' +
'<text id="1">Sample Toast</text></binding></visual></toast>';
var push = request.service.push;
push.wns.send(null,
payload,
'wns/toast', {
success: function (pushResponse) {
console.log("Sent push:", pushResponse);
}
});
}
La fonction sendNotifications envoie une notification unique en tant que notification toast. Vous pouvez également utiliser d’autres types de notifications Push.
Conseil Pour obtenir de l'aide lors de la modification des scripts, consultez l'activation d'IntelliSense pour JavaScript côté serveur.
Types de notifications Push
Windows prend en charge les notifications qui ne sont pas des notifications Push. Pour obtenir des informations générales sur les notifications, consultez Choix d’une méthode de remise de notification.
Les notifications toast sont faciles à utiliser et vous pouvez consulter un exemple dans le code Insert.js sur la table du canal qui est générée pour vous. Si vous envisagez d’utiliser des notifications de vignette ou de badge, vous devez créer un modèle XML pour la vignette et le badge, et vous devez spécifier l’encodage des informations empaquetées dans le modèle. Consultez Utilisation des vignettes, des badges et des notifications contextuelles.
Étant donné que Windows répond aux notifications Push, il peut gérer la plupart de ces notifications lorsque l’application n’est pas en cours d’exécution. Par exemple, une notification Push peut informer un utilisateur lorsqu’un nouveau message électronique est disponible même lorsque l’application de messagerie locale n’est pas en cours d’exécution. Windows gère une notification toast en affichant un message, tel que la première ligne d’un sms. Windows gère une notification de vignette ou de badge en mettant à jour la vignette dynamique d’une application pour refléter le nombre de nouveaux messages électroniques. De cette façon, vous pouvez inviter les utilisateurs de votre application à le vérifier pour obtenir de nouvelles informations. Votre application peut recevoir des notifications brutes lorsqu’elle est en cours d’exécution et vous pouvez les utiliser pour envoyer des données à votre application. Si votre application n’est pas en cours d’exécution, vous pouvez configurer une tâche en arrière-plan pour surveiller les notifications Push.
Vous devez utiliser des notifications Push en fonction des instructions pour les applications Windows, car ces notifications utilisent les ressources d’un utilisateur et peuvent être distraites si elles sont surutilisées. Consultez recommandations et la liste de contrôle pour les notifications Push.
Si vous mettez à jour des vignettes actives avec des notifications Push, vous devez également suivre les instructions de Recommandations et liste de contrôle pour les vignettes et les badges.
Next steps
Utilisation des services de notification Push Windows (WNS)
Vous pouvez appeler windows Push Notification Services (WNS) directement si Mobile Services ne fournit pas suffisamment de flexibilité, si vous souhaitez écrire du code serveur en C# ou Visual Basic, ou si vous avez déjà un service cloud et que vous souhaitez envoyer des notifications Push à partir de celui-ci. En appelant directement WNS, vous pouvez envoyer des notifications Push à partir de votre propre service cloud, comme un rôle de travail qui surveille les données d’une base de données ou d’un autre service web. Votre service cloud doit s’authentifier auprès de WNS pour envoyer des notifications Push à vos applications. Découvrez comment s’authentifier auprès du service de notification Push Windows (JavaScript) ou (C#/C++/VB).
Vous pouvez également envoyer des notifications Push en exécutant une tâche planifiée dans votre service mobile. Consultez Planifier des travaux périodiques dans Services Mobiles.
Avertissement Une fois que vous avez exécuté l'Assistant des notifications push, n'exécutez pas l'Assistant une deuxième fois pour ajouter un code de registrement pour un autre service mobile. L’exécution de l’Assistant plusieurs fois par projet génère du code qui provoque un chevauchement des appels à la méthode CreatePushNotificationChannelForApplicationAsync, ce qui cause une exception au moment de l'exécution. Si vous voulez vous inscrire à des notifications push pour plusieurs services mobiles, exécutez l’assistant une fois, puis modifiez le code d’inscription pour vous assurer que les appels à CreatePushNotificationChannelForApplicationAsync ne soient pas exécutés en même temps. Par exemple, vous pouvez réaliser cela en déplaçant le code généré par l'assistant dans push.register.* (y compris l’appel à CreatePushNotificationChannelForApplicationAsync) en dehors de l'événement OnLaunched, mais les spécificités de cette opération dépendent de l'architecture de votre application.
Related topics
- Vue d’ensemble de Windows Push Notification Services (WNS)
- vue d’ensemble des notifications brutes
- Se connecter à Windows Azure Mobile Services (JavaScript)
- Connexion à Windows Azure Mobile Services (C#/C++/VB)
- Démarrage rapide : Ajout de notifications Push pour un service mobile (JavaScript)
Windows developer