WinRT - 在通用应用程序中启动/注册IBackgroundTask

我想在我的应用程序启动时启动我的IBackgroundTask。WinRT - 在通用应用程序中启动/注册IBackgroundTask

我已经加入我的任务到.appxmanifest.xml文件,现在我的扩展标记看起来像这样

<Extensions> 

<Extension Category="windows.backgroundTasks" EntryPoint="CordovaApp.Library.UploadTask">

<BackgroundTasks>

<Task Type="systemEvent" />

<Task Type="timer" />

</BackgroundTasks>

</Extension>

</Extensions>

我IBackgroundTask类被称为UploadTask并在其中有outtype设置为另一个项目举行Windows运行时组件。

下面是代码的削减版本,所以你可以看到命名空间等

namespace CordovaApp.Library 

{

public sealed class UploadTask : IBackgroundTask

{

public async void Run(IBackgroundTaskInstance taskInstance)

{

var connectionProfile = NetworkInformation.GetInternetConnectionProfile();

// connectionProfile can be null (e.g. airplane mode)

if (connectionProfile != null && connectionProfile.IsWlanConnectionProfile)

{

// custom code here

}

}

}

}

我已经加入到这个项目中的引用,我的通用运行时组件项目。

一切都很好。

现在开始申请,我想我必须使用WinJs,所以我有以下代码。

var uploadTaskName = 'UploadTask'; 

var tasks = Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks;

var uploadTaskFound = false;

for (var i = 0; i < tasks.length; i++) {

if (tasks[i].Value.name == uploadTaskName) {

successCallback();

return;

}

}

Windows.ApplicationModel.Background.BackgroundExecutionManager.requestAccessAsync().then(function() {

var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();

builder.name = "Upload Task";

builder.taskEntryPoint = "CordovaApp.Library.UploadTask";

builder.setTrigger(new Windows.ApplicationModel.Background.TimeTrigger(15, false));

return builder.register();

}).done(function() {

successCallback();

}, function(err) {

errorCallback(err);

});

现在requestAccessAsync方法总是抛出的

0x80004005 - JavaScript runtime error: Unspecified error WinRT information: The application is not lock-screen capable.

一个例外,其注册的一切是否正确?我在笔记本电脑上通过Visual Studio 2013运行此操作。

回答:

似乎因为该应用程序已经安装,未给出权限。

通过卸载应用程序并重新运行它,然后系统提示我允许/禁止后台服务运行。检查允许,现在似乎工作

以上是 WinRT - 在通用应用程序中启动/注册IBackgroundTask 的全部内容, 来源链接: utcz.com/qa/262716.html

回到顶部