Cordova 如何使用WinJS在UWP中处理WNS(推送通知)
我用WinJS编写了一个应用程序,没关系。但是我需要向这个应用发送推送通知(比如toast)。服务器端使用PHP,一切正常,并在Apache Cordova应用程序(Android和Windows Phone 8.1)上进行了测试 但在使用WinJS的UWP Windows 10应用程序中,我不知道如何处理WNS响应/呼叫并通知用户(在Cordova中,我使用了一个插件Phonegap,它非常简单,因为该插件实现了所有任务和处理程序)。很简单 使用以下代码创建backgroundTask.js:Cordova 如何使用WinJS在UWP中处理WNS(推送通知),cordova,push-notification,win-universal-app,winjs,wns,Cordova,Push Notification,Win Universal App,Winjs,Wns,我用WinJS编写了一个应用程序,没关系。但是我需要向这个应用发送推送通知(比如toast)。服务器端使用PHP,一切正常,并在Apache Cordova应用程序(Android和Windows Phone 8.1)上进行了测试 但在使用WinJS的UWP Windows 10应用程序中,我不知道如何处理WNS响应/呼叫并通知用户(在Cordova中,我使用了一个插件Phonegap,它非常简单,因为该插件实现了所有任务和处理程序)。很简单 使用以下代码创建backgroundTask.js:
(function () {
"use strict";
var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;
var taskName = backgroundTask.task.name;
function doWork() {
var notificationContent = backgroundTaskInstance.triggerDetails.content;
close();
}
doWork();
})();
然后,声明var pushNotifications=Windows.Networking.pushNotifications在您的default.js上使用code>
创建一个函数(独立函数或命名空间)
然后…激活应用程序后,在default.js上调用“registrationaskpush”函数。
“RegistrationAskPush”函数实现对WNS的通道调用,并向服务器发送要保存在数据库中的通道URL。
当服务器启动通知时,数据库将返回存储的所有WNS URL,以便在此URL和“发送推送全部”之间进行代码导航
此外,“RegistrationAskPush”将后台任务注册到Windows系统,以便在应用程序关闭时接收推送通知。您好,您是否介意看一看并分享您的专业知识?非常感谢。
registraTaskPush: function (){
var taskRegistered = false;
var exampleTaskName = "Push";
var iter = background.BackgroundTaskRegistration.allTasks.first();
while (iter.hasCurrent) {
var task = iter.current.value;
if (task.name === exampleTaskName) {
taskRegistered = true;
break;
}
iter.moveNext();
}
if (taskRegistered != true) {
var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
var trigger = new Windows.ApplicationModel.Background.PushNotificationTrigger();
builder.name = exampleTaskName;
builder.taskEntryPoint = "js\\bgTasks.js";
builder.setTrigger(trigger);
var task = builder.register();
}
var channel;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();
return channelOperation.then(function (newChannel) {
channel = newChannel;
$.ajax({
url: 'url/save/channel/in/database', type: 'POST',
data: { 'r': channel.uri, 'tp': 'windows' }
});
},
function (error) {
console.log('Error: '+error);
}
);
channel.addEventListener("pushnotificationreceived", onPushNotification, false);
}