現在、Cordovaにて、Phonegap PushPluginを利用し、プッシュ通知を受け取るアプリを開発しています。
少なくともWindows環境では、プッシュ通知は、アプリケーションが表に出ている時(起動中)であれば、cordova側(というかHTML側)のonNotificationメソッドで最初に受け取れるはずです。
実際にWindows8.1環境でVisualStudio2013にてデバッグでonNotificationメソッド内にブレークポイントを張ると、通知をWNS側で送った後、onNotificationメソッドがキックされてから、(ブレークが終わってから)OSによるトースト通知が来るように見えます。
そこで、やりたいことは、アプリケーションが表に出ているなら、OSによる通知を防ぎたいのです。
イベントのpreventDefaultのように、OSの通知をやめさせるようにすることはできないのでしょうか。
(ユーザーは、いつでもトースト通知自体を無効にはできるようですが、全体の無効の話ではありません。)
Windows環境にてテストしたコードは以下です。
lang
1<!DOCTYPE HTML> 2<html> 3 <head> 4 <title>好きなように通知したい。OSやだ</title> 5 </head> 6 <body> 7 <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 8 <script type="text/javascript" charset="utf-8" src="jquery_1.5.2.min.js"></script> 9 <script type="text/javascript"> 10 11 document.addEventListener('deviceready', onDeviceReady, true); 12 13 function onDeviceReady() { 14 window.onNotification = function (e) { 15 navigator.notification.alert(e.toastNotification.content.innerText); 16 }; 17 var pushNotification = window.plugins.pushNotification; 18 pushNotification.register(successHandler, errorHandler, { "channelName": "MyTestChannel", "ecb": "onNotification" }); 19 } 20 21 function successHandler(result) { 22 console.log('registered###' + result.uri); 23 // send uri to your notification server 24 } 25 function errorHandler(error) { 26 console.log('error###' + error); 27 } 28 29 </script> 30 <div id="home"> 31 <div id="app-status-div"> 32 <ul id="app-status-ul"> 33 <li>バックグラウンドやそもそも落ちてるんでないならOSの通知無効にしたい</li> 34 </ul> 35 </div> 36 </div> 37 </body> 38</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/06 09:11