Freigeben über


Entwickeln einer App zur Behandlung des MobileOperatorNotification-Ereignisses

In diesem Thema wird erläutert, wie Sie eine mobile Breitband-App entwickeln, die das MobileOperatorNotification-Ereignis verarbeitet.

Bewährte Methoden

Für die Verarbeitung von Hintergrundereignissen sollten Sie die folgenden bewährten Methoden verwenden:

  • Registrieren Sie sich nicht für Hintergrundereignisse, für die Sie keine Maßnahmen ergreifen können. Die Verarbeitung dieser Ereignisse verbraucht das App-Kontingent unnötig.

  • Führen Sie beim Empfang eines Hintergrundereignisses keine großen Verarbeitungsmengen aus.

  • Erwägen Sie, die Verarbeitung auf das nächste Starten der App zu verschieben.

  • Erwägen Sie, eine Popupbenachrichtigung anzuzeigen und die Kachel als Reaktion auf ein Hintergrundereignis zu aktualisieren. Ihre mobile Breitband-App kann die Nutzlast des Hintergrundereignisses verarbeiten.

Schritt 1: Vertragsdeklaration für Hintergrundaufgaben

Damit Windows die Hintergrundaufgaben erkennt, die von einer mobilen Breitband-App bereitgestellt werden, muss die App deklarieren, dass sie eine Erweiterung der Systemfunktionalität bereitstellt.

Führen Sie die folgenden Schritte aus, um die Deklaration in der Datei package.appxmanifest für Ihr Visual Studio-Projekt vorzunehmen:

So deklarieren Sie einen Hintergrundaufgabenvertrag

  1. Doppelklicken Sie in Projektmappen-Explorer auf die Datei package.appxmanifest für Ihr Projekt.

  2. Wählen Sie auf der Registerkarte Deklarationen unter Verfügbare Deklarationendie Option Hintergrundaufgaben aus, und klicken Sie dann auf Hinzufügen.

  3. Geben Sie unter der Überschrift Eigenschaften die folgenden App-Informationen ein:

    • Geben Sie im Feld Startseite unter App-Einstellungen für eine mobile Breitband-App, die JavaScript und HTML verwendet, den Dateinamen ein, der die Hintergrundaufgabe in der App verarbeitet (z. B.backgroundtask.js).

    • Klicken Sie unter der Überschrift Unterstützte Aufgabentypen auf das Kontrollkästchen Systemereignis .

Wenn dies ordnungsgemäß erfolgt, sollten Sie ein Erweiterungselement ähnlich dem folgenden in der Datei package.appxmanifest haben.

<Extension Category="windows.backgroundTasks" StartPage="backgroundtask.js">
  <BackgroundTasks>
    <Task Type="systemEvent" />
  </BackgroundTasks>
</Extension>

Schritt 2: Hintergrundtaskhandler

Wenn Ihre App eine Benachrichtigungsdeklaration des Mobilfunkanbieters bereitstellt, muss sie einen Handler für die Aktivierung der Hintergrundaufgabe bereitstellen. Der Handler ruft die Netzwerkkonto-ID des Mobilfunkanbieters und die Ereignisdaten von Windows.Networking.NetworkOperators.NetworkOperatorNotificationEventDetails ab.

Da die einzige benutzeroberfläche, die von der Hintergrundaufgabe unterstützt wird , Popup ist, kann der Hintergrundaufgabenhandler Popup anzeigen oder NetworkOperatorNotificationEventDetails im lokalen Speicher speichern.

Die folgenden Codebeispiele veranschaulichen eine Hintergrundaufgabe, die ausgeführt werden soll, wenn eine neue administrative SMS-Benachrichtigung empfangen wird.

C#

using Windows.Networking.NetworkOperators;

namespace MNOMessageBackground
{
    public sealed class MNOBackgroundTask : IBackgroundTask
    {
       public void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance)
       {
         NetworkOperatorNotificationEventDetails notifyData = (NetworkOperatorNotificationEventDetails)taskInstance.TriggerDetails;

         //The network account ID is stored in notifyData.NetworkAccountId

            switch (notifyData.NotificationType)
            {
                case NetworkOperatorEventMessageType.Gsm: // 0
                    break;
                case NetworkOperatorEventMessageType.Cdma: // 1
                    break;
                case NetworkOperatorEventMessageType.Ussd: // 2
                    break;
                case NetworkOperatorEventMessageType.DataPlanThresholdReached: // 3
                    break;
                case NetworkOperatorEventMessageType.DataPlanReset: //4 
                    break;
                case NetworkOperatorEventMessageType.DataPlanDeleted: //5
                    break;
                case NetworkOperatorEventMessageType.ProfileConnected: //6
                    break;
                case NetworkOperatorEventMessageType.ProfileDisconnected: //7
                    break;
                case NetworkOperatorEventMessageType.RegisteredRoaming: //8
                    break;
                case NetworkOperatorEventMessageType.RegisteredHome: ///9
                    break;
                case NetworkOperatorEventMessageType.TetheringEntitlementCheck: //10
                    break;

                default:
                    break;
             }

            // Add code to save the message to app local storage, and optionally show toast notification and tile updates.
        }
    }
}

JavaScript

(function () {
    "use strict";

    //
    // The background task instance's activation parameters are available via
    // Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.
    //
    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current,
        networkOperatorEventType = Windows.Networking.NetworkOperators.NetworkOperatorEventMessageType,
        key = null,
        settings = Windows.Storage.ApplicationData.current.localSettings;

    try {

        
        var details = backgroundTaskInstance.triggerDetails;

// The network account ID is stored in details.networkAccountId.

        switch (details.notificationType) {
            case networkOperatorEventType.gsm:
                showToast("Mobile Broadband message", details.message);
                break;
            case networkOperatorEventType.cdma:
                showToast("Mobile Broadband message", details.message);
                break;
            case networkOperatorEventType.ussd:
                showToast("Mobile Broadband message", details.message);
                break;
            case networkOperatorEventType.dataPlanThresholdReached:
                showToast("Mobile Broadband message", "Data plan threshold reached");
                break;
            case networkOperatorEventType.dataPlanReset:
                showToast("Mobile Broadband message", "Data plan reset");
                break;
            case networkOperatorEventType.dataPlanDeleted:
                showToast("Mobile Broadband message", "Data plan deleted");
                break;
            case networkOperatorEventType.profileConnected:
                showToast("Mobile Broadband message", "Profile connected");
                break;
            case networkOperatorEventType.profileDisconnected:
                showToast("Mobile Broadband message", "Profile disconnected");
                break;
            case networkOperatorEventType.registeredRoaming:
                showToast("Mobile Broadband message", "Registered roaming");
                break;
            case networkOperatorEventType.registeredHome:
                showToast("Mobile Broadband message", "Registered home");
                break;
            case networkOperatorEventType.tetheringEntitlementCheck:
                showToast("Mobile Broadband message", "Entitlement check completed");
                break;
            default:
                showToast("Mobile Broadband message", "Unknown message");
                break;
        }

        //
        // A JavaScript background task must call close when it is done.
        //
 close();
    }
    catch (exception) {
// Display error message.
close();
    }

Anzeigen von Kachel- und Popupbenachrichtigungen

Es wird empfohlen, dass Sie sowohl Popup- als auch Kachelbenachrichtigungen in Ihrer mobilen Breitband-App anzeigen, da ein Benutzer eine Popupbenachrichtigung aufgrund ihrer vorübergehenden Natur verpassen kann. Entwurfsrichtlinien für Popupbenachrichtigungen und Kachelupdates finden Sie unter Entwerfen der Benutzeroberfläche einer mobilen Breitband-App.

So aktivieren Sie Popupbenachrichtigungen

  1. Doppelklicken Sie in Projektmappen-Explorer auf die Datei package.appxmanifest für Ihr Projekt.

  2. Legen Sie auf der Registerkarte Anwendungsbenutzeroberfläche unter der Überschrift BenachrichtigungenPopupfähig auf Ja fest.

Wenn dies ordnungsgemäß erfolgt, sollten Sie ein Erweiterungselement ähnlich dem folgenden in der Datei package.appxmanifest haben.

<VisualElements … ToastCapable="true"… />

Der folgende Code zeigt, wie eine Popupbenachrichtigung in einem Hintergrundaufgabenhandle angezeigt wird:

JavaScript

function showToast(title, body) {
        var notifications = Windows.UI.Notifications;
        var toastNotificationManager = Windows.UI.Notifications.ToastNotificationManager;
        var toastXml = toastNotificationManager.getTemplateContent(notifications.ToastTemplateType.toastText02);

        var temp = "the parameter will pass to app when app activated from tap Toast ";
        toastXml.selectSingleNode("/toast").setAttribute("launch", temp);

        var textNodes = toastXml.getElementsByTagName("text");
        textNodes[0].appendChild(toastXml.createTextNode(title));
        textNodes[1].appendChild(toastXml.createTextNode(body));

        var toast = new notifications.ToastNotification(toastXml);
        toastNotificationManager.createToastNotifier().show(toast);
    }

Sms abrufen

Wenn die Hintergrundaufgabe durch eine eingehende SMS-Nachricht ausgelöst wurde, enthalten die Hintergrundaufgabendetails das SMS-Objekt in seiner Nutzlast.

JavaScript

(function () {
    "use strict";

    //
    // The background task instance's activation parameters are available via
    // Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.
    //
    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current,

    try {
        
        var details = backgroundTaskInstance.triggerDetails;
        if (details.notificationType === networkOperatorEventType.gsm
        || details.notificationType === networkOperatorEventType.cdma)
        {
     var textMessage = new Windows.Devices.Sms.SmsTextMessage.fromBinaryMessage(details.smsMessage);
            
         // textMessage can be used to get other SmsMessage properties    
         // like sender number, timestamp, message part count etc.
         showToast("From: " + textMessage.from + "; TimeStamp: " + textMessage.timestamp, details.message);
        }

Verwenden des lokalen Speichers

Die Hintergrundaufgabe kann den lokalen Speicher verwenden, um die Nachricht zu speichern, die Sie vom Hintergrundereignis erhalten, sodass die App diese Informationen später verwenden kann.

JavaScript

    //
    // Save the message 
    //
    var settings = Windows.Storage.ApplicationData.current.localSettings;
    var keyMessage = "BA5857FA-DE2C-4A4A-BEF2-49D8B4130A39";


    //
    // The background task instance's activation parameters are available via
    // Windows.UI.WebUI.WebUIBackgroundTaskInstance.current
    //
    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;

    var details = backgroundTaskInstance.triggerDetails;
    settings.values[keyMessage] = details.message;

Der folgende Code veranschaulicht, wie die vom Hintergrundtaskhandler in der App gespeicherte Nachricht abgerufen wird:

JavaScript

var settings = Windows.Storage.ApplicationData.current.localSettings;
    var keyMessage = "BA5857FA-DE2C-4A4A-BEF2-49D8B4130A39";
    var operatorMessage = settings.values[keyMessage];

Schritt 3: Behandeln des Aktivierungsereignisses

Wenn das Popup einen Parameter festlegt, wird er über detail.arguments an die App übergeben.

In JavaScript oder C# behandeln Sie das WinJS.Application.onactivated-Ereignis und untersuchen dann die Ereignisargumente, die an den Ereignishandler übergeben werden. Die Aktivierung von Popup übergibt das Ereignisargument vom Typ Windows.UI.WebUI.WebUILaunchActivatedEventArgs. Wenn die detail.kind-Eigenschaft des Ereignisarguments Windows.ApplicationModel.Activation.ctivationKind ist. Die App bietet entweder die Startoberfläche oder die Benachrichtigungsoberfläche, je nachdem, ob die detail.argument-Eigenschaft des Ereignisarguments auf NULL festgelegt ist.

JavaScript

WinJS.Application.addEventListener("activated", activated; false);

function activated(eventArgs)
{
  if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.launch)
  {
    if (!eventArgs.detail.arguments)
    {
      // Initialize logic for the Start experience here.
    }
    else
    {
      // Initialize logic for the Notification experience here.
    }
  }
}

Schritt 4: Behandeln von Vervollständigungshandlern für Hintergrundaufgaben

Die Vordergrund-App kann auch einen Vervollständigungshandler registrieren, der benachrichtigt wird, wenn die Hintergrundaufgabe abgeschlossen ist. Die Vervollständigung status oder eine ausnahme, die in der Run-Methode der Hintergrundaufgabe auftritt, wird an den Vervollständigungshandler in der Vordergrund-App übergeben. Wenn die App nach Abschluss der Aufgabe angehalten wurde, erhält sie die Vervollständigungsbenachrichtigung, wenn die App das nächste Mal fortgesetzt wird. Wenn sich die App im Status Beendet befand, erhält sie keine Vervollständigungsbenachrichtigung. Wenn die Hintergrundaufgabe die Informationen beibehalten muss, die sie erfolgreich ausgeführt hat, müssen sie die Informationen mithilfe des Status-Managers oder eines anderen Mittels beibehalten, z. B. eine Datei, die die App lesen kann, wenn sie zum Status "Ausgeführt" zurückkehrt.

Wichtig Obwohl das Hintergrundereignis des Mobilfunkanbieters automatisch vom System für die App registriert wird, muss die App dennoch mindestens einmal ausgeführt werden, um sich bei den Hintergrundabschluss- oder Fortschrittshandlern zu registrieren.

C#

foreach (var cur in BackgroundTaskRegistration.AllTasks)
{
   if(cur.Value.Name == “MobileOperatorNotificationHandler”)
   {
       cur.Value.Progress += new BackgroundTaskProgressEventHandler(OnProgress);
       cur.Value.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
   }
}

//
// Handle background task completion.
private void OnCompleted(IBackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs e)
{
   var taskCompletion = task as IBackgroundTaskRegistration;
   var completionArgs = args.Context as BackgroundTaskCompletedEventArgs;
   
  //
  // If the background task threw an exception, display the exception in the error text box.
  if (completionArgs.Status != null)
  {
    throw completionArgs.Status;
  }
}

// Handle background task progress.
private void OnProgress(IBackgroundTaskRegistration sender, BackgroundTaskProgressEventArgs e)
{
  var taskRegistration = task as IBackgroundTaskRegistration;
  var progressArgs = args.Context as BackgroundTaskProgressEventArgs;
  // progressArgs.Progress has the progress percentage
}

JavaScript

var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks.first();
var hascur = iter.hasCurrent;
while (hascur) {
    var cur = iter.current.value;
    if (cur.name === “MobileOperatorNotificationHandler”) {
        cur.addEventListener("progress", new ProgressHandler(cur).onProgress);
        cur.addEventListener("completed", new CompleteHandler(cur).onCompleted);
    }
    hascur = iter.moveNext();
}

//
// Handle background task progress.
//
function ProgressHandler(task) {
    this.onProgress = function (args) {
       try {
           var progress = "Progress: " + args.progress + "%";
       } catch (ex) {
           displayError(ex);
       }
   };
}

//
// Handle background task completion.
//
function CompleteHandler(task) {
    this.onCompleted = function (args) {
        try {
            var key = task.taskId;
        } catch (ex) {
            displayError(ex);
        }
    };
}

Problembehandlung

Verwenden Sie diese Abschnitte, um probleme zu beheben, die auftreten können.

Auslösen der Metadatenanalyse zum Registrieren von Hintergrundaufgaben

Wenn das mobile Breitbandgerät verbunden ist, Windows 8, Windows 8.1 und Windows 10 für Benutzer automatisch die mobile Breitband-App und die zugehörigen Dienstmetadaten installiert und Hintergrundaufgaben registriert, die in den Dienstmetadaten definiert sind. In Windows 8.1 wird die App jedoch nicht automatisch an den Startbildschirm angeheftet.

Entwickler können Windows 8, Windows 8.1 und Windows 10 manuell auslösen, um Dienstmetadaten zu analysieren und Hintergrundaufgaben zu registrieren, indem sie die F5-Taste drücken (oder im Fenster Geräte und Drucker auf dem Desktop mit der rechten Maustaste klicken und Aktualisieren auswählen). Die Registrierung von Hintergrundaufgaben über die Dienstmetadatenanalyse ist nur erfolgreich, wenn die App bereitgestellt wird.

Überprüfen, ob Hintergrundaufgaben ordnungsgemäß registriert sind

Entwickler können überprüfen, ob der Geräteeinrichtungs-Manager (DSM) die Dienstmetadaten ordnungsgemäß analysiert hat, indem sie die Ereignisprotokolle unter Anwendungs- und Dienstprotokolle\Microsoft\Windows\DeviceSetupManager anzeigen.

  1. Öffnen Sie die Ereignisanzeige.

  2. Wählen Sie auf der Registerkarte Menü die Option Ansicht aus, und klicken Sie dann auf Analyse- und Debugprotokolle anzeigen.

  3. Navigieren Sie zu Anwendungs- und Dienstprotokolle\Microsoft\Windows\DeviceSetupManager.

Zu den interessanten Ereignissen zählen die Ereignis-ID 220, die angibt, dass DSM die Hintergrundaufgabe für das MobileOperatorNotification-Ereignis erfolgreich registriert hat, und die Ereignis-ID 7900, die alle Fehler angibt, die im Metadatenpaket gefunden werden.

Überprüfen, ob Die Bereitstellungsmetadaten erfolgreich angewendet wurden

Stellen Sie beim Anwenden von Bereitstellungsmetadaten sicher, dass ProvisionFromXmlDocumentResults.AllElementsProvisioned true ist. Wenn nicht, überprüfen Sie die ProvisionResultsXml, um weitere Details zum Fehler zu erhalten. Zu den häufigen Fehlern für mobiles Breitband gehören:

  • Ein Konflikt zwischen der SIM-Karte auf dem PC und der Bereitstellungsdatei (Profil schlägt mit ERROR_NOT_FOUND fehl).

  • Ein Konflikt zwischen der CarrierId in der Bereitstellungsdatei und der Dienstnummer in den Erfahrungsmetadaten.

Überprüfen, ob Hintergrundaufgaben vom System Event Broker ausgeführt werden

Sie können überprüfen, ob Windows das MobileOperatorNotification-Ereignis generiert und ob die Hintergrundaufgabe der App vom Ereignisbroker ausgeführt wird, indem Sie die Ereignisanzeige überprüfen. Die Protokollierung für diese Ereignisse ist standardmäßig deaktiviert und kann durch Ausführen der folgenden Schritte aktiviert werden:

  1. Öffnen Sie die Ereignisanzeige.

  2. Wählen Sie auf der Registerkarte Menü die Option Ansicht aus, und klicken Sie dann auf Analyse- und Debugprotokolle anzeigen.

  3. Navigieren Sie zu Anwendungs- und Dienstprotokolle\Microsoft\Windows\BackgroundTaskInfrastructure.

  4. Klicken Sie mit der rechten Maustaste auf Diagnoseprotokoll , und wählen Sie Protokoll aktivieren aus.

Nachdem Sie die Protokolle aktiviert haben, führt eine erfolgreiche Ausführung der Hintergrundaufgabe zu einem Ereignis der Ereignis-ID = 1 mit der folgenden Beschreibung: "Eine instance einer Hintergrundaufgabe mit Einstiegspunkt <background_task_namespace_name>.<> background_task_class_name und name MobileOperatorNotificationHandler wurde in Sitzung 1 erstellt und mit der ID angegeben{11111111-1111-1111-1111-111111111111}.

Wenn die Hintergrundaufgabe nicht ausgeführt wird, überprüfen Sie zunächst, ob die Namen Ihrer Hintergrundaufgaben, die in den Dienstmetadaten angegeben sind, mit den Namen in der AppXManifest.xml-Datei Ihres Pakets übereinstimmen. Stellen Sie sicher, dass nach der Bereitstellung der App die Analyse der Dienstmetadaten ausgelöst und das mobile Breitbandgerät eingefügt wird.

Überprüfen, ob Windows SMS- und USSD-Benachrichtigungen empfängt

Sie können überprüfen, ob Windows SMS- und USSD-Benachrichtigungen empfängt, indem Sie in Ereignisanzeige nach SmsRouter-Ereignissen suchen.

In Ereignisanzeige finden Sie unter Anwendungs- und Dienstprotokolle\Microsoft\Windows \Mobile-Broadband-Experience-SmsRouter\Microsoft-Windows-SMSRouter Einträge wie "Der SMSRouter hat eine SMS-Operatorbenachrichtigungsnachricht empfangen" und "Der SMSRouter hat eine SMS-Nachricht empfangen". Unter Anwendungs- und Dienstprotokolle\Microsoft\Windows \Mobile-Broadband-Experience-SmsApi\SMSApi befinden sich Einträge wie "App: Microsoft.SDKSamples.SmsSendReceive sent SMS message on mobile broadband device: {11111111-1111-1111-1111-111111111111}".

Empfangene SMS-Nachrichten werden nicht als Operatorbenachrichtigungen erkannt

Wenn empfangene SMS nicht als Operatorbenachrichtigungen erkannt werden, überprüfen Sie die benutzerdefinierten Filterregeln für administrative SMS-Benachrichtigungen in den Metadaten für die Kontobereitstellung. Weitere Informationen zur Bereitstellung von Metadaten finden Sie unter Kontobereitstellung.

Wenn die Metadaten für die Kontobereitstellung die Absendertelefonnummer angeben, überprüfen Sie mithilfe der SMS-APIs, ob die angegebene Zahlenformatierung mit der in der empfangenen Nachricht übereinstimmt. Um zu überprüfen, ob dies korrekt übereinstimmt, ändern Sie vorübergehend das Muster in [^]\* , um alle Nachrichten dieses Absenders zu entsprechen.

Beispieldatei für backgroundtask.js

//
// A JavaScript background task runs a specified JavaScript file.
//
(function () {
    "use strict";

    //
    // The background task instance's activation parameters are available via Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.
    //
    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current,
        networkOperatorEventType = Windows.Networking.NetworkOperators.NetworkOperatorEventMessageType,
        key = null,
        settings = Windows.Storage.ApplicationData.current.localSettings;

    try {       
        var details = backgroundTaskInstance.triggerDetails;

        switch (details.notificationType) {
            case networkOperatorEventType.gsm:
                var textMessage = new Windows.Devices.Sms.SmsTextMessage.fromBinaryMessage(details.smsMessage);
                showToast("Gsm Msg From: " + textMessage.from + "; TimeStamp: " + textMessage.timestamp, details.message);
                
                break;
            case networkOperatorEventType.cdma:
                showToast("Mobile Broadband message", details.message);
                break;
            case networkOperatorEventType.ussd:
                showToast("Mobile Broadband message", details.message);
                break;
            case networkOperatorEventType.dataPlanThresholdReached:
                showToast("Mobile Broadband message", "Data plan threshold reached");
                break;
            case networkOperatorEventType.dataPlanReset:
                showToast("Mobile Broadband message", "Data plan reset");
                break;
            case networkOperatorEventType.dataPlanDeleted:
                showToast("Mobile Broadband message", "Data plan deleted");
                break;
            case networkOperatorEventType.profileConnected:
                showToast("Mobile Broadband message", "Profile connected");
                break;
            case networkOperatorEventType.profileDisconnected:
                showToast("Mobile Broadband message", "Profile disconnected");
                break;
            case networkOperatorEventType.registeredRoaming:
                showToast("Mobile Broadband message", "Registered roaming");
                break;
            case networkOperatorEventType.registeredHome:
                showToast("Mobile Broadband message", "Registered home");
                break;
            case networkOperatorEventType.tetheringEntitlementCheck:
                showToast("Mobile Broadband message", "Entitlement check completed");
                break;
            default:
                showToast("Mobile Broadband message", "Unknown message");
                break;
        }
        taskSucceeded();
    }
    catch (exception) {
        taskFailed();
    }

    function showToast(title, body) {

        var notifications = Windows.UI.Notifications;
        var toastNotificationManager = Windows.UI.Notifications.ToastNotificationManager;
        var toastXml = toastNotificationManager.getTemplateContent(notifications.ToastTemplateType.toastText02);

        //
        // Pass to app through eventArguments.arguments.
        //
        var temp = "\"Title\"" + ":" + "\"" + title + "\"" + "," + "\"Message\"" + ":" + "\"" + body + "\"";
        if (temp.length > 251) {
            temp = temp.substring(0, 251);
        }
        toastXml.selectSingleNode("/toast").setAttribute("launch", "'{" + temp + "}'");

        var textNodes = toastXml.getElementsByTagName("text");
        textNodes[0].appendChild(toastXml.createTextNode(title));
        textNodes[1].appendChild(toastXml.createTextNode(body));

        var toast = new notifications.ToastNotification(toastXml);
        toastNotificationManager.createToastNotifier().show(toast);        
    }

    //
    // This function is called when the background task is completed successfully.
    //
    function taskSucceeded() {
        //
        // Use the succeeded property to indicate that this background task completed successfully.
        //
        backgroundTaskInstance.succeeded = true;
        backgroundTask.taskInstance.progress = 100;
        console.log("Background " + backgroundTask.taskInstance.task.name + " Completed");

        //
        // Write to localSettings to indicate that this background task completed.
        //
        key = backgroundTaskInstance.task.taskId.toString();
        settings.values[key] = "Completed";

        //
        // A JavaScript background task must call close when it is done.
        //
        close();
    }

    //
    // If the task was canceled or failed, stop the background task.
    //
    function taskFailed() {
        console.log("Background " + backgroundTask.taskInstance.task.name + " Failed");
        backgroundTaskInstance.succeeded = false;

        key = backgroundTaskInstance.task.taskId.toString();
        settings.values[key] = "Failed";

        close();
    }
})();

Aktivieren von Mobilfunkanbieterbenachrichtigungen und Systemereignissen

Erstellen und Konfigurieren von Internetfreigabefunktionen