Ausführen neuer empfangener SMS-Hintergrundereignisse
Die MOBILE BREITBAND-SMS-Plattform bietet separate Systemereignisse für neue EMPFANGENe SMS-Daten, je nachdem, ob es sich um eine administrative SMS-Benachrichtigung eines Mobilfunknetzbetreibers oder eine allgemeine SMS-Nachricht handelt. Auf das Hintergrundsystemereignis für eine neue administrative SMS-Benachrichtigung, die von einem Mobilfunknetzbetreiber empfangen wird, kann nur über eine mobile Breitband-App zugegriffen werden.
Apps müssen bereits die Benutzerzustimmung erhalten haben, um SMS zum Lesen neuer empfangener SMS-Nachrichten in einer Hintergrundaufgabe zu verwenden. Apps können den Inhalt einer neuen empfangenen SMS-Nachricht aus einer Hintergrundaufgabe nicht lesen, wenn sie zum ersten Mal auf SMS zugreifen, da die App die System-SMS-Geräteeingabeaufforderung nicht über eine Hintergrundaufgabe auslösen kann.
Die folgenden Codebeispiele veranschaulichen eine Hintergrundaufgabe, die ausgeführt werden soll, wenn eine neue SMS-Nachricht empfangen wird.
C#-Hintergrundaufgabencode
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();
}
}
JavaScript-App-Code zum Registrieren einer Hintergrundaufgabe
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);