VS2017写UWP应用部署后后台任务时不能正常工作?

发布于 2022-09-06 05:03:39 字数 2495 浏览 15 评论 0

问题描述

最近写了一个UWP应用,想利用BackgroundTask做Toast通知和Tile更新,在实际调试中,这两者均能正常工作,但是,当摆脱VS2017,直接打开部署的应用,满足了触发器的条件却无通知弹出,这让我很费解,求大佬解答。

Toast通知代码

public async void Run(IBackgroundTaskInstance taskInstance)
        {
            BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
            var AllAlert = await Alert_Manager.Alert_Tile_Init();
            var AllInvasion = await InvasionManager.GetInvasion();
            string AlertText = TakeAlertWorthy(AllAlert);
            string InvasionText = TakeInvasionWorthy(AllInvasion);
            if (!String.IsNullOrEmpty(AlertText))
            {
                // SendNotification为封装的通知推送函数
                SendNotification(AlertText);
            }
            if (!String.IsNullOrEmpty(InvasionText))
            {
                SendNotification(InvasionText);
            }
            deferral.Complete();
        }

MainPage里的注册代码

protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            // 检查后台是否启用
            var status = await BackgroundExecutionManager.RequestAccessAsync();
            if (status == BackgroundAccessStatus.Unspecified || status == BackgroundAccessStatus.Denied)
            {
                await new MessageDialog("后台已被锁定").ShowAsync();
            }
            // 设置builder
            bool isToastRegistered = false;
            string AlertToastTaskName = "Warframe_AlertToastTask";
            isToastRegistered = BackgroundTaskRegistration.AllTasks.Any(p => p.Value.Name == AlertToastTaskName);
            if (!isToastRegistered)
            {
                var builder = new BackgroundTaskBuilder
                {
                    Name = AlertToastTaskName,
                    TaskEntryPoint = "AlertToast.AlertToastTask",
                    IsNetworkRequested = true
                };
                TimeTrigger trigger = new TimeTrigger(16, false);
                builder.SetTrigger(trigger);
                BackgroundTaskRegistration task = builder.Register();
                Debug.WriteLine($"{builder.Name}已经注册成功");
            }
        }

如此这般,哦,对了,Package.appxmanifest里的设置也应该没问题(也都添加了引用):
Package.appxmanifest

求问,调试如果把线程切到后台程序可以正常工作,但是不用VS打开应用,而是直接打开部署在电脑中的应用,则后台程序看不到启动的迹象,等待了半个多小时,磁贴也没更新(磁贴代码未放出),通知也没提醒,想问问这究竟是什么情况?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文