Javascript Windows Phone 8.1上推送通知的后台任务
我正在尝试在我的Windows Phone 8.1上注册一个后台任务以接收和处理推送通知。目前,当应用程序打开时(前台+后台),一切都正常,但当应用程序关闭时,app.js中定义的后台任务不起作用 这在package.phone中定义。appxmanifest: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>
<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);