示例#1
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            var deferral = args.TaskInstance.GetDeferral();

            switch (args.TaskInstance.Task.Name)
            {
            case ToastHelper.ToastTaskName:
                if (args.TaskInstance.TriggerDetails is Windows.UI.Notifications.ToastNotificationActionTriggerDetail details)
                {
                    // Perform tasks
                    switch (details.Argument)
                    {
                    case "Next":
                        MediaHelper.MoveNext();
                        break;

                    case "Pause":
                        MediaHelper.Pause();
                        break;

                    case "Play":
                        MediaHelper.Play();
                        break;
                    }
                }
                break;
            }
            deferral.Complete();
        }
示例#2
0
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            m_deferral = args.TaskInstance.GetDeferral();
            args.TaskInstance.Canceled += (s, r) =>
            {
                Logger.Instance.LogMessage($"Task canceled for {r}");
                m_deferral.Complete();
            };
            Logger.Instance.LogMessage($"{args.TaskInstance.Task.Name} activated in background");

            if (args.TaskInstance.TriggerDetails is RawNotification)
            {
                var notification = args.TaskInstance.TriggerDetails as RawNotification;
                Logger.Instance.LogMessage($"RawNotification received {notification.Content}");

                await Task.Run(() =>
                {
                    if (NotificationProvider != null)
                    {
                        AccountProvider      = new MicrosoftAccountProvider();
                        NotificationProvider = new GraphNotificationProvider(AccountProvider, "");
                    }

                    NotificationProvider.ReceiveNotification(notification.Content);
                });
            }

            await Task.Delay(TimeSpan.FromSeconds(30));

            Logger.Instance.LogMessage($"Task completed");
        }
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            IBackgroundTaskInstance taskInstance = args.TaskInstance;

            if (taskInstance.TriggerDetails is AppServiceTriggerDetails)
            {
                AppServiceTriggerDetails appService = taskInstance.TriggerDetails as AppServiceTriggerDetails;

                AppServiceDeferral          = taskInstance.GetDeferral(); // Ottiene un deferral così che il servizio non termina
                taskInstance.Canceled      += OnAppServicesCanceled;      // Associa un gestore di cancellazione al task in background
                Connection                  = appService.AppServiceConnection;
                Connection.RequestReceived += OnAppServiceRequestReceived;
                Connection.ServiceClosed   += AppServiceConnection_ServiceClosed;

                // Sezione critica
                lock (ThisLock)
                {
                    Connection.AppServiceName = ConnectionIndex.ToString();
                    Connections.Add(ConnectionIndex, Connection);
                    AppServiceDeferrals.Add(ConnectionIndex, AppServiceDeferral);
                    ConnectionIndex++;
                }
            }
        }
 public void HandleActivation(BackgroundActivatedEventArgs args)
 {
     if (backgroundTasks.TryGetValue(args.TaskInstance?.Task?.Name ?? string.Empty, out var task))
     {
         task.Run(args.TaskInstance).FireAndForget();
     }
 }
示例#5
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            BackgroundTaskDeferral deferral = args.TaskInstance.GetDeferral();

            // Background activation through toast
            deferral.Complete();
        }
示例#6
0
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            m_deferral = args.TaskInstance.GetDeferral();
            args.TaskInstance.Canceled += (s, r) =>
            {
                Logger.Instance.LogMessage($"Task canceled for {r}");
                m_deferral.Complete();
            };

            Logger.Instance.LogMessage($"{args.TaskInstance.Task.Name} activated in background with {args.TaskInstance.TriggerDetails.GetType().ToString()}");

            if (args.TaskInstance.TriggerDetails is RawNotification)
            {
                var rawNotification = args.TaskInstance.TriggerDetails as RawNotification;
                Logger.Instance.LogMessage($"RawNotification received {rawNotification.Content}");
                await ConnectedDevicesManager.ReceiveNotificationAsync(rawNotification.Content);

                // HACK: Crack the push body to extract the notificationId
                // var result = JsonConvert.DeserializeObject<RawNotificationPayload>(rawNotification.Content);
                // var notificationId = result.activities != null && result.activities.Count > 0 ? result.activities[0].id : "Graph Notifications";
                // var toast = ConnectedDevicesManager.BuildToastNotification(notificationId, "New notification");
                // var toastNotifier = Windows.UI.Notifications.ToastNotificationManager.CreateToastNotifier();
                // toastNotifier.Show(toast);

                await Task.Delay(TimeSpan.FromSeconds(15));
            }

            Logger.Instance.LogMessage($"Task completed");
        }
示例#7
0
        public static MediaCommandType?GetMediaCommand(BackgroundActivatedEventArgs args, bool manageDeferral = false)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            var deferral = args.TaskInstance.GetDeferral();

            if (!(args.TaskInstance.TriggerDetails is GattCharacteristicNotificationTriggerDetails triggerDetails))
            {
                if (manageDeferral)
                {
                    deferral.Complete();
                }

                return(null);
            }

            var bytes = new byte[triggerDetails.Value.Length];

            DataReader.FromBuffer(triggerDetails.Value).ReadBytes(bytes);

            return(bytes[0].GetMediaCommandType());
        }
示例#8
0
 protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     base.OnBackgroundActivated(args);
     if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails details)
     {
         if (details.CallerPackageFamilyName == Package.Current.Id.FamilyName)
         {
             try
             {
                 _appServiceDeferral         = args.TaskInstance.GetDeferral();
                 args.TaskInstance.Canceled += (s, e) =>
                 {
                     _appServiceDeferral?.Complete();
                     _appServiceDeferral = null;
                     Connection          = null;
                     AppServiceDisconnected?.Invoke(this, null);
                 };
                 Connection = details.AppServiceConnection;
                 AppServiceConnected?.Invoke(this, args.TaskInstance.TriggerDetails as AppServiceTriggerDetails);
                 _logger.Info("辅助进程服务连接成功");
             }
             catch (Exception ex)
             {
                 _logger.Error("辅助进程服务连接失败");
                 _logger.Error(ex);
             }
         }
     }
     else
     {
         _logger.Error("辅助进程服务连接失败");
         _logger.Error(args.TaskInstance.TriggerDetails.GetType());
     }
 }
示例#9
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            var          def     = args.TaskInstance.GetDeferral();
            ToastContent content = new ToastContent()
            {
                Visual = new ToastVisual()
                {
                    BindingGeneric = new ToastBindingGeneric()
                    {
                        Children =
                        {
                            new AdaptiveText()
                            {
                                Text = "Hello world"
                            },
                            new AdaptiveText()
                            {
                                Text = "Nice toast"
                            },
                        }
                    }
                }
            };
            ToastNotification toast = new ToastNotification(content.GetXml());

            ToastNotificationManager.CreateToastNotifier().Show(toast);
            def.Complete();
        }
示例#10
0
 /// <summary>
 /// 后台任务处理事件
 /// </summary>
 /// <param name="args"></param>
 protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     base.OnBackgroundActivated(args);
     IBackgroundTaskInstance taskInstance = args.TaskInstance;
     //DoYourBackgroundWork(taskInstance);
     //ShowMsg();
 }
示例#11
0
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            deferral = args.TaskInstance.GetDeferral();
            args.TaskInstance.Canceled += (s, r) =>
            {
                Debug.WriteLine($"Task canceled for {r}");
                deferral.Complete();
            };

            Debug.WriteLine($"{args.TaskInstance.Task.Name} activated in background with {args.TaskInstance.TriggerDetails.GetType().ToString()}");

            if (args.TaskInstance.TriggerDetails is RawNotification)
            {
                var rawNotification = args.TaskInstance.TriggerDetails as RawNotification;
                Debug.WriteLine($"RawNotification received {rawNotification.Content}");

                if (NotificationsManager == null)
                {
                    NotificationsManager = new GraphNotificationsManager();
                }

                await NotificationsManager.HandlePushNotificationAsync(rawNotification.Content);
            }

            deferral.Complete();
            Debug.WriteLine($"Task completed");
        }
示例#12
0
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            RawNotification notification = (RawNotification)args.TaskInstance.TriggerDetails;

            var deferral = args.TaskInstance.GetDeferral();

            base.OnBackgroundActivated(args);

            ToastContent content = new ToastContent()
            {
                Launch = "blah",
                Visual = new ToastVisual()
                {
                    BindingGeneric = new ToastBindingGeneric()
                    {
                        Children =
                        {
                            new AdaptiveText()
                            {
                                Text = "It worked!!!"
                            }
                        }
                    }
                }
            };

            ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(content.GetXml()));

            await Task.Delay(5000);

            deferral.Complete();
        }
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            IBackgroundTaskInstance taskInstance = args.TaskInstance;

            BackGroundRequestTask(taskInstance);
        }
示例#14
0
        protected async override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            // Get a deferral, to prevent the task from closing prematurely
            // while asynchronous code is still running.
            base.OnBackgroundActivated(args);
            BackgroundTaskDeferral deferral = args.TaskInstance.GetDeferral();

            args.TaskInstance.Canceled += TaskInstance_Canceled;


            //await LocationManager.GetCoordinates();
            // Update the live tile
            try
            {
                await Task.Run(() =>
                {
                    UpdateTile();
                });
            }
            catch { }
            finally
            {
                // Inform the system that the task is finished.
                //args.TaskInstance.Canceled -= TaskInstance_Canceled;
                deferral.Complete();
            }
        }
示例#15
0
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            m_deferral = args.TaskInstance.GetDeferral();
            args.TaskInstance.Canceled += (s, r) =>
            {
                Logger.Instance.LogMessage($"Task canceled for {r}");
                m_deferral.Complete();
            };

            Logger.Instance.LogMessage($"{args.TaskInstance.Task.Name} activated in background with {args.TaskInstance.TriggerDetails.GetType().ToString()}");

            if (args.TaskInstance.TriggerDetails is RawNotification)
            {
                var rawNotification = args.TaskInstance.TriggerDetails as RawNotification;
                Logger.Instance.LogMessage($"RawNotification received {rawNotification.Content}");

                if (ConnectedDevicesManager == null)
                {
                    Logger.Instance.LogMessage($"Setup ConnectedDevicesManager");
                    ConnectedDevicesManager = new ConnectedDevicesManager();
                }

                await ConnectedDevicesManager.ReceiveNotificationAsync(rawNotification.Content);
            }

            m_deferral.Complete();
            Logger.Instance.LogMessage($"Task completed");
        }
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            BackgroundTaskDeferral deferral = args.TaskInstance.GetDeferral();
            await BackgroundTaskHandler.Current.Run();

            deferral.Complete();
        }
示例#17
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            IBackgroundTaskInstance taskInstance = args.TaskInstance;

            DockerUpdateTask.UpdateList().Wait();
        }
示例#18
0
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            var deferral = args.TaskInstance.GetDeferral();

            switch (args.TaskInstance.Task.Name)
            {
            case TOAST_BACKGROUND_TASK_NAME:
                if (args.TaskInstance.TriggerDetails is ToastNotificationActionTriggerDetail details && TryGetToken(out var token))
                {
                    var arguments = ParseArgs(details.Argument);
                    var userInput = details.UserInput;

                    if (arguments.TryGetValue("channelId", out var cId) && ulong.TryParse(cId, out var channelId))
                    {
                        if (userInput.TryGetValue("tbReply", out var t) && t is string text)
                        {
                            var client = new DiscordRestClient(new DiscordConfiguration()
                            {
                                Token = token, TokenType = TokenType.User
                            });
                            await client.CreateMessageAsync(channelId, text, false, null, Enumerable.Empty <IMention>(), null);
                        }
                    }
                }
                break;
            }

            deferral.Complete();
        }
示例#19
0
        /// <summary>
        /// Used for the In-Process background task
        /// https://docs.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-an-inproc-background-task
        /// </summary>
        /// <param name="args"></param>
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            IBackgroundTaskInstance taskInstance = args.TaskInstance;

            DumperTask.SetInstance(taskInstance);
        }
示例#20
0
        protected sealed override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            //var deferral = args.TaskInstance.GetDeferral();
            await OnBackgroundActivatedAsync(args);

            //deferral.Complete();
        }
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            try
            {
                var deferral = args.TaskInstance.GetDeferral();

                // Figure out which background task this was
                switch (args.TaskInstance.Task.Name)
                {
                case ToastHelper.TOAST_ACTION_BACKGROUND_TASK:
                    ToastHelper.HandleToastActionBackgroundActivation((ToastNotificationActionTriggerDetail)args.TaskInstance.TriggerDetails);
                    break;

                case ToastHelper.TOAST_TIME_TRIGGER_BACKGROUND_TASK:
                    ToastHelper.HandleTimeTriggerBackgroundActivation();
                    break;
                }

                deferral.Complete();
            }
            catch
            {
                // Report to your telemetry
            }
        }
示例#22
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);

            var deferral = args.TaskInstance.GetDeferral();

            // We make a toast notification saying what time it is.
            var manager  = ToastNotificationManager.GetDefault();
            var notifier = manager.CreateToastNotifier();

            var toastContent = new ToastContent()
            {
                Visual = new ToastVisual()
                {
                    BindingGeneric = new ToastBindingGeneric()
                    {
                        Children =
                        {
                            new AdaptiveText()
                            {
                                Text = $"Toast fired at {DateTime.Now:hh-mm}"
                            }
                        }
                    }
                }
            };

            notifier.Show(new ToastNotification(toastContent.GetXml()));

            deferral.Complete();
        }
示例#23
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            var appServiceDetails = args.TaskInstance.TriggerDetails as
                                    AppServiceTriggerDetails;

            if ((appServiceDetails != null) &&
                (appServiceDetails.Name == AppServiceName) &&
                (appServiceDetails.IsRemoteSystemConnection))
            {
                var deferral = args.TaskInstance.GetDeferral();

                args.TaskInstance.Canceled += (s, e) =>
                {
                    deferral.Complete();
                };

                appServiceDetails.AppServiceConnection.RequestReceived += async(s, e) =>
                {
                    var requestDeferral = e.GetDeferral();

                    await this.ProcessAppServiceRequestAsync(e);

                    appServiceDetails.AppServiceConnection.Dispose();
                    requestDeferral.Complete();
                    deferral.Complete();
                };
            }
        }
示例#24
0
 protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails)
     {
         SetupAppServiceConnection(args.TaskInstance);
     }
 }
示例#25
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            var taskInstance = args.TaskInstance;

            Singleton <RomeConnectionManager> .Instance.Initialize(taskInstance);
        }
示例#26
0
        /// <summary>
        /// Invoked when the application is activated in the background.
        /// </summary>
        /// <param name="e">Makes all data avalible from the IBackgroundTask.Run method avalible to your event when your app is activated by a background trigger.</param>
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs e)
        {
            var deferral = e.TaskInstance.GetDeferral();

            // Todo: Handle in-process background tasks.
            deferral.Complete();
        }
 protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     if (TheASConnectionListener == null ||
         !await TheASConnectionListener.HandleBackgroundActivationAsync(args.TaskInstance))
     {
         // Handle other stuff
     }
 }
 protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     base.OnBackgroundActivated(args);
     if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails)
     {
         AppServiceManager.OnAppServiceActivated(args);
     }
 }
        public static async Task OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            var deferral = args.TaskInstance.GetDeferral();

            await StartJobs();

            deferral.Complete();
        }
示例#30
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);

            var taskWrapper = new AppTaskInstanceWrapper(args.TaskInstance);

            AppData.ExtensionClient.Initialize(taskWrapper);
        }
示例#31
0
 /// <summary>
 /// Initializes the app service on the host process 
 /// </summary>
 protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     base.OnBackgroundActivated(args);
     if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails)
     {
         appServiceDeferral = args.TaskInstance.GetDeferral();
         AppServiceTriggerDetails details = args.TaskInstance.TriggerDetails as AppServiceTriggerDetails;
         Connection = details.AppServiceConnection;
     }
 }
示例#32
0
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);

            var deferral = args.TaskInstance.GetDeferral();

            Debug.WriteLine("Background Task Activated");

            eventAggregator.PublishOnCurrentThread(new BackgroundTaskMessage());

            deferral.Complete();
        }
示例#33
0
        //protected override void OnActivated(IActivatedEventArgs args)
        //{
        //    base.OnActivated(args);

        //    AppManager.Init();

        //    var rootFrame = Window.Current.Content as Frame;

        //    if (rootFrame == null)
        //    {
        //        rootFrame = new Frame();
        //        rootFrame.NavigationFailed += OnNavigationFailed;
        //        Window.Current.Content = rootFrame;
        //    }

        //    if (rootFrame.Content == null)
        //        rootFrame.Navigate(typeof(MainPage));

        //    Window.Current.Activate();
        //}
        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);

            IBackgroundTaskInstance taskInstance = args.TaskInstance;
            var appServiceDeferral = taskInstance.GetDeferral();
            taskInstance.Canceled += (s, e) => { appServiceDeferral.Complete(); };

            var appService = taskInstance.TriggerDetails as AppServiceTriggerDetails;
            var appServiceConnection = appService.AppServiceConnection;
            appServiceConnection.RequestReceived += OnAppServiceRequestReceived;
            appServiceConnection.ServiceClosed += (s, e) => { appServiceDeferral.Complete(); };
        }
 /// <summary>
 /// Override the Application.OnBackgroundActivated method to handle background activation in 
 /// the main process. This entry point is used when BackgroundTaskBuilder.TaskEntryPoint is 
 /// not set during background task registration.
 /// </summary>
 /// <param name="args"></param>
 protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
 {
     BackgroundActivity.Start(args.TaskInstance);
 }