Linguaggio: HTML | XAML

Guida introduttiva: Ascolto in background di eventi di recinti virtuali (XAML)

Applies to Windows and Windows Phone

In questo argomento vengono illustrati i passaggi necessari per configurare un'attività in background che rimanga in attesa di notifiche di Geofencein un'app di Windows Runtime scritta in C++, C# o Visual Basic.

Roadmap: che relazione c'è tra questo argomento e gli altri? Vedi:

Introduzione

Dopo aver creato i recinti virtuali, devi aggiungere la logica per gestire gli eventi dei recinti virtuali. A seconda della configurazione della proprietà MonitoredStates, può verificarsi un evento quando:

  • L'utente entra in un'area di interesse.
  • L'utente esce da un'area di interesse.
  • Il recinto virtuale scade o viene rimosso. Tieni presente che le app in background non vengono attivate per gli eventi di rimozione.

In questo argomento viene descritto come configurare un'attività in background per indicare all'app che si è verificato un evento di recinto virtuale. Puoi anche gestire gli eventi direttamente dall'app quando è in esecuzione. Per altre info, vedi Guida introduttiva: Gestione in primo piano delle notifiche dei recinti virtuali e Linee guida per i recinti virtuali.

Il rilevamento in background di eventi dei recinti virtuali richiede diversi passaggi:

  • Dichiarare l'attività in background nel manifesto dell'app.
  • Registrare l'attività in background nell'app. Se l'app deve avere accesso a Internet, ad esempio per usare un servizio cloud, puoi impostare un flag a tale scopo quando viene attivato l'evento. Puoi anche impostare un flag per accertarti che l'utente sia presente quando viene attivato l'evento in modo che riceva immediatamente la notifica.
  • In Windows, devi fare in modo che l'utente aggiunga l'app alla schermata di blocco nelle impostazioni di Windows. Se testi l'applicazione nel simulatore di Microsoft Visual Studio, aggiungi l'applicazione alla schermata di blocco all'esterno del simulatore.
  • Quando l'app è in esecuzione in primo piano, richiedi all'utente di concedere le autorizzazioni per i dati sulla posizione.

Registrare gli eventi di modifica dello stato del recinto virtuale

Nel manifesto dell'app, nella scheda Dichiarazioni, aggiungi una dichiarazione per un'attività in background relativa alla posizione. A tale scopo, esegui le operazioni seguenti:

  • Aggiungi una dichiarazione di tipo attività in background.
  • Imposta un tipo di attività Posizione.
  • Imposta un punto di ingresso nell'app da chiamare all'attivazione dell'evento.

Registrare l'attività in background

Il codice seguente consente di registrare le attività in background relative ai recinti virtuali. Ricorda che al momento della creazione del recinto virtuale abbiamo verificato le autorizzazioni per i i dati sulla posizione. Per ulteriori informazioni, vedi Guida introduttiva: Configurazione di un recinto virtuale.


async private void RegisterBackgroundTask(object sender, RoutedEventArgs e)
{
    // Get permission for a background task from the user. If the user has already answered once,
    // this does nothing and the user must manually update their preference via PC Settings.
    BackgroundAccessStatus backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync();

    // Regardless of the answer, register the background task. If the user later adds this application
    // to the lock screen, the background task will be ready to run.
    // Create a new background task builder
    BackgroundTaskBuilder geofenceTaskBuilder = new BackgroundTaskBuilder();

    geofenceTaskBuilder.Name = SampleBackgroundTaskName;
    geofenceTaskBuilder.TaskEntryPoint = SampleBackgroundTaskEntryPoint;

    // Create a new location trigger
    var trigger = new LocationTrigger(LocationTriggerType.Geofence);

    // Associate the locationi trigger with the background task builder
    geofenceTaskBuilder.SetTrigger(trigger);

    // If it is important that there is user presence and/or
    // internet connection when OnCompleted is called
    // the following could be called before calling Register()
    // SystemCondition condition = new SystemCondition(SystemConditionType.UserPresent | SystemConditionType.InternetAvailable);
    // geofenceTaskBuilder.AddCondition(condition);

    // Register the background task
    geofenceTask = geofenceTaskBuilder.Register();

    // Associate an event handler with the new background task
    geofenceTask.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);

    BackgroundTaskState.RegisterBackgroundTask(BackgroundTaskState.LocationTriggerBackgroundTaskName);

    switch (backgroundAccessStatus)
    {
    case BackgroundAccessStatus.Unspecified:
    case BackgroundAccessStatus.Denied:
        rootPage.NotifyUser("This application must be added to the lock screen before the background task will run.", NotifyType.ErrorMessage);
        break;

    }
}




  • Applies to Windows Phone

Nota  In Windows Phone devi chiamare RequestAccessAsync, ma l'utente non vedrà alcun messaggio e non è necessario aggiungere l'app alla schermata di blocco. La chiamata è necessaria semplicemente per avvisare il sistema che l'app sta registrando un'attività in background.

Argomenti correlati

Roadmap
Roadmap per app di Windows Runtime scritte in C# e Visual Basic
Roadmap per app di Windows Runtime in C++
Progettazione dell'esperienza utente per le app
Attività
Guida introduttiva: Configurazione di un recinto virtuale
Guida introduttiva: Gestione in primo piano delle notifiche dei recinti virtuali
Guida introduttiva: Gestione delle notifiche dei recinti virtuali mediante un'attività in background
Riferimento
Geoshape
Geofence
Geolocator
Altre risorse
Linee guida per la funzionalità per i recinti virtuali

 

 

Mostra:
© 2014 Microsoft