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