0

WinJS でアプリをコーディングしましたが、問題ありません。しかし、このアプリにプッシュ通知 (トーストなど) を送信する必要があります。PHP のサーバー側は問題なく、Apache Cordova アプリ (Android および Windows Phone 8.1) でテストされています。

しかし、WinJS を使用した UWP Windows 10 アプリでは、WNS 応答/呼び出しを処理してユーザーに通知する方法がわかりません (Cordova では、プラグイン Phonegap Push-Notificationsを使用しましたが、プラグインはすべてのタスクとハンドラーを実装しているため、非常に簡単です) )。

4

1 に答える 1

0

単純な...

次のコードで 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();
    })();

次に、default.js で宣言var pushNotifications = Windows.Networking.PushNotifications;します 関数を作成します (スタンドアロンまたは名前空間に)...

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);
    }

次に...アプリのアクティベーション後にdefault.jsで「registraTaskPush」関数を呼び出します。「registraTaskPush」関数は、WNS へのチャネル呼び出しを実装し、チャネル URL をサーバーに送信してデータベースに保存します。通知がサーバーによって開始されると、データベースは保存されているすべての WNS URL を返し、コードがこの URL 間を移動し、すべてのプッシュを送信します。

また、「registraTaskPush」はバックグラウンドタスクをWindowsシステムに登録し、アプリを閉じていてもプッシュ通知を受け取れるようにします。

于 2016-04-13T18:32:53.360 に答える