在不运行应用程序的情况下注册后台任务

Posted

技术标签:

【中文标题】在不运行应用程序的情况下注册后台任务【英文标题】:Register a Background Task without running the app 【发布时间】:2016-12-02 11:49:02 【问题描述】:

tl;dr:如何在不运行应用的情况下注册后台任务?

加长版

我想注册一个后台任务以在用户每次使用 SystemTriggerType.UserPresent 登录时运行。

我找到了有关注册任务的信息,但这是必须执行的代码。如果任务只需要在应用程序运行之后执行,那就没问题了。但是如何在不运行应用程序的情况下注册任务? 可以通过

注册后台任务
var builder = new BackgroundTaskBuilder();

然后

builder.Name = taskName;
builder.TaskEntryPoint = taskEntryPoint;
builder.SetTrigger(trigger);
BackgroundTaskRegistration task = builder.Register();

正如这里提到的: Register a background task.

但正如我所说 - 我的问题是如何在应用程序执行之前运行此代码。

【问题讨论】:

【参考方案1】:

您可以在清单中使用 preInstalledConfigTask 扩展名。此任务将在您的应用程序安装后开始。

有时您的应用程序需要在更新后立即更新 安装。该合同将使您能够立即启动 在没有任何用户交互的情况下更新任务以确保您的应用程序 立即更新。

Here 是所有可用扩展的完整列表。

preInstalledConfigtask 可以使用清单编辑器进行设置:

 <Extensions>
    <Extension Category="windows.preInstalledConfigTask" EntryPoint="PreInstallTask.Task" />
  </Extensions>

您将在manifest schema 中找到扩展定义

【讨论】:

谢谢。 +1。虽然在我可以验证之前我还没有接受。目前,虽然任务(UserPresent,而不是 preInstalled)似乎已注册,但即使我注销并再次登录也不会调用它。 (而且我认为即使我只锁定屏幕也应该调用它。)【参考方案2】:

我最近遇到了同样的问题,之前的答案中缺少的是预安装配置仅针对 OEM 和 MO 触发。 See here.

话虽如此,您可能无法做您想做的事,因为除非您不管理操作系统并发送图像 + 在开发者中心拥有必要的权限,否则任务永远不会触发。 See here.

【讨论】:

以上是关于在不运行应用程序的情况下注册后台任务的主要内容,如果未能解决你的问题,请参考以下文章

如何在不杀死未完成的芹菜任务的情况下重新启动heroku应用程序

如果应用程序正在启动,如何停止后台任务?

后台任务和运行应用检测

在现代待机模式下触发后台任务

是否可以在不唤醒手机的情况下在后台使用 iphone 注册和收集匹配的 UUID?

iOS的后台任务