Cordova 如何使用WinJS在UWP中处理WNS(推送通知)

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:

我用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上调用“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);
    }