/// <summary> /// Registers the background task for this characteristic. /// /// NOTE: Background tasks must have background access requested. /// In this app, this happens in GlobalSettings.Initialize() on the "BackgroundExecutionManager.RequestAccessAsync();" call. /// </summary> private void RegisterBackgroundTasksForToast() { if (!GlobalSettings.BackgroundAccessRequested) { // UI should never let us reach this, but just to be safe. Utilities.OnException(new InvalidOperationException("Cannot toast when background access missing.")); return; } // Check if task already exists var taskRegistered = false; foreach (var task in BackgroundTaskRegistration.AllTasks) { if (task.Value.Name == _toastName) { taskRegistered = true; ToastRegistered = true; break; } } // If not registered, register it if (taskRegistered == false) { string displayString = string.Format("{0}{1}{2}{3}{4}", ServiceM.DeviceM.Name, BTLE_BackgroundTasksForToasts.ToastBackgroundTask.ToastSplit, ServiceM.Name, BTLE_BackgroundTasksForToasts.ToastBackgroundTask.ToastSplit, this.Name); ApplicationData.Current.LocalSettings.Values[_toastName] = displayString; GlobalSettings.AddToast(this); var builder = new BackgroundTaskBuilder(); var trigger = new GattCharacteristicNotificationTrigger(_characteristic); builder.Name = _toastName; builder.TaskEntryPoint = typeof(ToastBackgroundTask).FullName; builder.SetTrigger(trigger); var taskRegistration = builder.Register(); // hook up completion handlers taskRegistration.Completed += OnTaskRegistrationCompleted; // update state ToastRegistered = true; } }
public async void RegisterBatteryNotificationTask(GattCharacteristicNotificationTrigger trigger) { foreach (var task in BackgroundTaskRegistration.AllTasks) { if (task.Value.Name == nameof(BatteryNotificationTask)) { task.Value.Unregister(false); } } var builder = new BackgroundTaskBuilder { Name = nameof(BatteryNotificationTask), TaskEntryPoint = typeof(BatteryNotificationTask).FullName }; builder.SetTrigger(trigger); BackgroundTaskRegistration t = builder.Register(); await client.LogAsync($"Successfully registered battery notification task"); }