VS2017写UWP应用部署后后台任务时不能正常工作?
问题描述
最近写了一个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里的设置也应该没问题(也都添加了引用):
求问,调试如果把线程切到后台程序可以正常工作,但是不用VS打开应用,而是直接打开部署在电脑中的应用,则后台程序看不到启动的迹象,等待了半个多小时,磁贴也没更新(磁贴代码未放出),通知也没提醒,想问问这究竟是什么情况?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论