public async void Run(IBackgroundTaskInstance taskInstance) { Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; BackgroundTaskDeferral _deferral = taskInstance.GetDeferral(); ArelAPI.Connector API = new ArelAPI.Connector(); Boolean canUpdate = true; Boolean isOnline = await API.IsOnlineAsync(); if (!isOnline) //Si le token n'est plus valide, on le rafraîchit avec le refreshToken { bool isReLogged = await API.RenewAccessTokenAsync(); if (!isReLogged) //Si on peut rafraîchir le jeton, on continue, sinon on notifie l'utilisateur qu'il doit ré-entrer ses logins { Show(new ToastContent() { Scenario = ToastScenario.Default, Visual = new ToastVisual() { TitleText = new ToastText() { Text = "AREL - Synchronisation Planning" }, BodyTextLine1 = new ToastText() { Text = "Vos identifiants ont expirés." }, BodyTextLine2 = new ToastText() { Text = "Reconnectez-vous pour maintenir la synchronisation." } }, }); canUpdate = false; } } //On appelle la fonction de màj du calendrier windows qui est dans Planning.xaml.cs if (canUpdate) { API.UpdateWindowsCalendar(DateTime.Now.ToString("yyyy-MM-dd"), DateTime.Now.AddDays(14).ToString("yyyy-MM-dd"), API.GetUserFullName(ArelAPI.DataStorage.getData("user"), "Mon Planning AREL")); } //On re-enregistre la tâche si le paramètre est présent if (bool.Parse(ArelAPI.DataStorage.getData("backgroundTask"))) { var builder = new BackgroundTaskBuilder(); TimeTrigger hourlyTrigger = new TimeTrigger(120, false); //On rafraîchit le planning toutes les 2 heures. builder.Name = "ARELSyncPlanningTask"; builder.TaskEntryPoint = "SyncTask.ARELPlanningBackgroundTask"; builder.SetTrigger(hourlyTrigger); builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable)); builder.Register(); } _deferral.Complete(); }