Exécuter de nouveaux événements en arrière-plan sms reçus
La plateforme SMS haut débit mobile fournit des événements système distincts pour les nouvelles données SMS reçues, selon qu’il s’agit d’une notification SMS administrative provenant d’un opérateur de réseau mobile ou d’un sms général. L’événement système en arrière-plan d’une nouvelle notification SMS administrative reçue d’un opérateur de réseau mobile est uniquement accessible par une application haut débit mobile.
Les applications doivent déjà avoir reçu le consentement de l’utilisateur pour utiliser SMS pour lire les nouveaux messages SMS reçus dans une tâche en arrière-plan. Les applications ne peuvent pas lire le contenu d’un nouveau message SMS reçu à partir d’une tâche en arrière-plan si elles accèdent à SMS pour la première fois, car l’application ne peut pas déclencher l’invite de consentement de l’appareil SMS système à partir d’une tâche en arrière-plan.
Les exemples de code suivants illustrent une tâche en arrière-plan conçue pour s’exécuter lorsqu’un nouveau message SMS est reçu.
Code de tâche en arrière-plan C#
namespace SmsBackgroundSample
{
public sealed class SmsBackgroundTask : IBackgroundTask
{
// The Run method is the entry point of a background task.
public void Run(IBackgroundTaskInstance taskInstance)
{
// Associate a cancellation handler with the background task.
taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);
ManualResetEvent manualEventWaiter = new ManualResetEvent(false);
manualEventWaiter.Reset();
// Do the background task activity.
DisplayToastAsync(taskInstance, manualEventWaiter);
// Wait until the async operation is done. We need to do this else the background process will exit.
manualEventWaiter.WaitOne(5000);
Debug.Print("Background " + taskInstance.Task.Name + (" process ran"));
}
async void DisplayToastAsync(IBackgroundTaskInstance taskInstance, ManualResetEvent manualEventWaiter)
{
SmsReceivedEventDetails smsDetails = (SmsReceivedEventDetails)taskInstance.TriggerDetails;
SmsBinaryMessage smsEncodedmsg = (SmsBinaryMessage) smsDetails.BinaryMessageMessage;
SmsTextMessage smsTextMessage = Windows.Devices.Sms.SmsTextMessage.FromBinaryMessage(smsEncodedmsg);
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
XmlNodeList stringElements = toastXml.GetElementsByTagName("text");
stringElements.Item(0).AppendChild(toastXml.CreateTextNode(smsTextMessage.From));
stringElements.Item(1).AppendChild(toastXml.CreateTextNode(smsTextMessage.Body));
ToastNotification notification = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(notification);
manualEventWaiter.Set();
}
}
Code d’application JavaScript pour inscrire la tâche en arrière-plan
var triggerAway = new Windows.ApplicationModel.Background.SystemTrigger(Windows.ApplicationModel.Background.SystemTriggerType.smsReceived, false);
var builderAway = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
builderAway.setTrigger(triggerAway);
builderAway.taskEntryPoint = "HelloWorldBackground.BackgroundTask1";
builderAway.name = "Sms";
var taskAway = builderAway.register();
taskAway.addEventListener("progress", new ProgressHandler(taskAway).onProgress);
taskAway.addEventListener("completed", new CompleteHandler(taskAway).onCompleted);