Guida introduttiva: Creazione e registrazione di un'attività in background per una notifica non elaborata (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Nota  Se non usi JavaScript, vedi Guida introduttiva: Creazione e registrazione di un'attività in background per una notifica non elaborata (XAML).

 

Puoi come creare e registrare una funzione di attività in background per la tua app di Windows Store. Il codice viene eseguito in risposta alla ricezione di una notifica non elaborata, offrendo la funzionalità all'app quando non è in primo piano.

Per completare questa procedura devi modificare tre file distinti: il codice dell'app, il manifesto dell'app e un nuovo file JavaScript che contiene il codice dell'attività in background.

Prerequisiti

Per una piena comprensione di questo argomento o per usare il codice fornito, devi avere:

Istruzioni

1. Creare la classe attività in background

Crea un nuovo file JavaScript (.js) nel progetto. In questo caso, assegneremo al file il nome examplebackgroundtask.js. L'esecuzione del codice del file in background verrà attivata dalla ricezione di una notifica non elaborata. Aggiungi al file lo scheletro di funzione JavaScript visualizzato di seguito.

La funzione doWork di questo esempio (naturalmente puoi assegnarle il nome che preferisci) contiene il codice che costituisce l'attività in background effettiva. Prima di tutto recupera il contenuto della notifica tramite la classe Windows.UI.WebUI.WebUIBackgroundTaskInstance, che viene usata per ottenere informazioni sull'istanza corrente dell'attività in background. Il corpo del codice, specifico del contenuto della notifica non elaborata definita dall'app, sostituirà il commento "// ...".

Importante  Nota che il codice dell'attività termina chiamando la funzione incorporata close di JavaScript. Questo metodo deve essere chiamato ogni volta che un'attività in background di JavaScript viene completata o annullata. Se l'attività in background non si chiude, il relativo processo può continuare a esistere, consumando memoria e durata della batteria fino al completamento dell'attività.

 


(function () {
    "use strict";

    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;

    function doWork() {
        var notificationContent = backgroundTaskInstance.triggerDetails.content; 

        // ...

        close();
    }

    doWork();
})();

2. Dichiarare l'attività in background nel manifesto dell'app

Nota  Come prerequisito di questo passaggio, l'app deve scegliere un'opzione della schermata di blocco e fornire un logo per poter supportare le attività in background. Per altre informazioni, vedi Guida introduttiva: Visualizzazione degli aggiornamenti di riquadri e notifiche nella schermata di blocco.

 

Perché l'app possa registrare un'attività in background, devi dichiarare l'attività in background e il relativo trigger nel manifesto dell'app. Questa operazione può essere eseguita direttamente in XML o tramite l'editor manifesto di Microsoft Visual Studio.

  • Per usare l'editor manifesto, fai doppio clic sul file Package.appxmanifest del tuo progetto in Visual Studio. Nella scheda Dichiarazioni seleziona Attività di background dall'elenco a discesa Dichiarazioni disponibili. Come trigger, seleziona Notifica Push in Proprietà. Nella casella Pagina iniziale immetti il nome del file con estensione js dell'attività in background, nel nostro caso examplebackgroundtask.js.

    Se l'app usa più di un'attività in background, ripeti questo passaggio per ogni attività, selezionando per ognuna un file diverso.

  • Per aggiungere le informazioni direttamente nell'XML del manifesto, apri il manifesto in un editor di testo. Nell'elemento Extensions aggiungi un elemento Extension per la classe attività in background. L'attributo Category deve essere impostato su "windows.backgroundTasks" e l'attributo StartPage deve avere il nome del file con estensione js dell'attività in background, nel nostro caso examplebackgroundtask.js.

    Se l'app usa più di un'attività in background, aggiungi un elemento Extension distinto per ogni attività, selezionando per ogni elemento un file con estensione js diverso.

    Devi elencare tutti i tipi di trigger usati da un'attività in background. Poiché stiamo creando un'attività in background che viene attivata in risposta a una notifica non elaborata, dichiareremo un trigger di notifica push. Aggiungi un elemento BackgroundTasks all'elemento Extension, con il relativo elemento Task impostato su "pushNotification".

    L'elemento Extension completo è mostrato qui.


<Extension Category="windows.backgroundTasks" StartPage="js\examplebackgroundtask.js">
  <BackgroundTasks>
    <Task Type="pushNotification"/>
  </BackgroundTasks>
</Extension>

3. Registrare l'attività in background nell'app

Gli esempi seguenti forniscono il codice che dovrai aggiungere alla tua app (ad esempio nel file Default.js) per registrare l'attività in background come risposta a una notifica non elaborata.

Verifica prima di tutto se l'attività in background è già registrata. Questo passaggio è importante. Se la tua app non verifica l'esistenza di una registrazione dell'attività in background, potrebbe registrare la stessa attività più volte. Ciò potrebbe causare problemi di prestazioni e un uso eccessivo della CPU che potrebbe impedire il completamento dell'attività.

L'esempio seguente scorre la proprietà Windows.ApplicationModel.Background.BackgroundTaskRegistration.AllTasks e imposta un flag su true se l'attività è già registrata.


var taskRegistered = false;
var exampleTaskName = "Example background task class name";

var background = Windows.ApplicationModel.Background;
var iter = background.BackgroundTaskRegistration.AllTasks.first();

while (iter.hasCurrent) {
    var task = iter.current.value;
    
    if (task.name === exampleTaskName) {
        taskRegistered = true;
        break;
    }

    iter.moveNext();
}

Se l'app rileva che l'attività in background non è registrata, può registrarla chiamando il metodo Windows.ApplicationModel.Background.BackgroundTaskBuilder.register. Nella chiamata a questo metodo includi il nome del file con estensione js dell'attività in background, nel nostro caso examplebackgroundtask.js, e un oggetto PushNotificationTrigger.


if (taskRegistered != true) {
    var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
    var trigger = new Windows.ApplicationModel.Background.PushNotificationTrigger();

    builder.name = exampleTaskName;
    builder.taskEntryPoint = "js\\ExampleBackgroundTask.js";
    builder.setTrigger(trigger);

    var task = builder.register();
}

A questo punto dovresti aver compreso le nozioni di base della creazione di una classe attività in background da usare con le notifiche non elaborate, incluso come registrare l'attività in background dalla tua app. Dovresti anche essere in grado di aggiornare il manifesto dell'app affinché Windows consenta all'app di registrare le attività in background.

Nota  Puoi scaricare l'esempio di attività in background per visualizzare questi e altri esempi di codice nel contesto di un'app JavaScript completa e avanzata che usa diversi tipi di attività in background.

 

Argomenti correlati

Esempio di notifiche non elaborate

Panoramica delle notifiche non elaborate

Linee guida ed elenco di controllo per le notifiche non elaborate

Guida introduttiva: Intercettazione delle notifiche push per le app in esecuzione

RawNotification