I am writing a Windows Phone 8.1 application using the GeoFence API. My problem is that I cannot initiate a location change in the background task because the application exits with code 1.
I read several threads about this error, but not one solution solved my problem.
- I checked if my BackgroundTask is a Runtime component, and it is.
- I checked the name of my class and that is correct.
- I checked if I use any wait function in my BackgroundTask function and I did not find it.
- I checked if I registered a background task in the application manifest and yes I did (with an entry point in c)
In fact, the error appears even before running the Run function from BackgroundTask.
namespace BackgroundTask { public sealed class geoFenceBackgroundTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { ToastTemplateType toastTemplate = ToastTemplateType.ToastText02; XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text"); toastTextElements[0].AppendChild(toastXml.CreateTextNode("MY APP")); toastTextElements[1].AppendChild(toastXml.CreateTextNode("Test"));
And my registration function:
async private void RegisterBackgroundTask() { // 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 = "geoFenceBackgroundTask"; geofenceTaskBuilder.TaskEntryPoint = "BackgroundTask.geoFenceBackgroundTask"; // 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 var geofenceTask = geofenceTaskBuilder.Register(); geofenceTask.Completed += (sender, args) => { // MY CODE HERE }; geofenceTask = geofenceTaskBuilder.Register(); }
I have no other ideas. Any help?
source share