Javascript Windows Phone 8.1上推送通知的后台任务

Javascript Windows Phone 8.1上推送通知的后台任务,javascript,push-notification,windows-phone-8.1,winjs,Javascript,Push Notification,Windows Phone 8.1,Winjs,我正在尝试在我的Windows Phone 8.1上注册一个后台任务以接收和处理推送通知。目前,当应用程序打开时(前台+后台),一切都正常,但当应用程序关闭时,app.js中定义的后台任务不起作用 这在package.phone中定义。appxmanifest: <Extension Category="windows.backgroundTasks" StartPage="js/lib/backgroundTask.js"> <BackgroundTasks>

我正在尝试在我的Windows Phone 8.1上注册一个后台任务以接收和处理推送通知。目前,当应用程序打开时(前台+后台),一切都正常,但当应用程序关闭时,app.js中定义的后台任务不起作用

这在package.phone中定义。appxmanifest

<Extension Category="windows.backgroundTasks" StartPage="js/lib/backgroundTask.js">
      <BackgroundTasks>
        <Task Type="pushNotification" />
      </BackgroundTasks>
    </Extension>
这就是我的app.js所做的:

  var taskName = "mySuperFancyBgTaskName";

  var registerBackgroundTask = function() {

    var btr = Windows.ApplicationModel.Background.BackgroundTaskRegistration;
    var iter = btr.allTasks.first();
    var taskRegistered = false;

    while (iter.hasCurrent){
        var ta = iter.current.value;
        if (ta.name == taskName){
            taskRegistered = true;
            break;
        }
        iter.moveNext();
    }

    if (!taskRegistered){
        var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
        var trigger = new Windows.ApplicationModel.Background.PushNotificationTrigger();
        builder.setTrigger( trigger );
        builder.taskEntryPoint = "js\\lib\\backgroundTask.js";
        builder.name = taskName;

        try{
            var task = builder.register();
            //task.addEventListener("completed", onPushNotification);
        }
        catch (e){
            console.error(e);
        }
    }
}


var channel;
var pushNotificationManager = Windows.Networking.PushNotifications.PushNotificationChannelManager;
var channelOperation = pushNotificationManager.createPushNotificationChannelForApplicationAsync();

channelOperation.then(function (newChannel) {
    channel = newChannel;
    saveChannelUriInSettings(channel.uri);
    console.log("opened push notification channel with uri: " + channel.uri);
    registerBackgroundTask();
},
    function (error) {
        console.log("Channel could not be retreived. " + error.number)
    }
);
似乎backgroundTask.js从未启动,因为localsettings中没有写入任何内容。尝试在那里做一些事情,但当然无法在那里调试

如果我这样做

var onPushNotification = function (e) { ...}
channel.addEventListener("pushnotificationreceived", onPushNotification);
接收原始推送通知工作正常。那么,如何让backgroundtask工作,以便它能够保存传入的推送通知呢?如果它正常工作,就不需要在应用程序中定义事件侦听器来捕获推送通知,对吗

感谢您的帮助-提前感谢

var onPushNotification = function (e) { ...}
channel.addEventListener("pushnotificationreceived", onPushNotification);