non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

Node-webkitで通知センターを使う

おはようございます。次男の入園式に長男も何故か一緒に入場行進したkjunichiです。
 

Node-webkitで通知センターを使った

node-webkit向けのNodObjCの導入はこちらを参考にしてください。

Cocoa APIを直接叩きたかった

じつは相当前から通知センターをNodObjCで叩こうとしているのだが、さっぱりなので、今回はAppleScriptでの実装に甘んじた。

<button id="play">notice</button>
<script>
var $ = require('NodObjC');
$.framework('Foundation');
$.framework('Cocoa');

var app = $.NSApplication('sharedApplication');

var btn = document.getElementById("play");
btn.addEventListener('click',function () {
      // create an NSString of the applescript command that will be run
      var command = $.NSString('stringWithUTF8String','display notification "無理やり通知する!" with title "node-webkit" subtitle "applescriptで"');

      // create an NSAppleScript instance with the `command` NSString
      var appleScript = $.NSAppleScript('alloc')('initWithSource', command)

      // finally execute the NSAppleScript instance synchronously
      var resultObj = appleScript('executeAndReturnError', null)

      // resultObj may be `null` or an NSAppleEventDescriptor instance , so check first
      if (resultObj) {
        // print out the value
        console.dir(resultObj('stringValue').toString())
      }
});
</script>

まとめ

Node-webkitではHTML5の通知APIは使えないものの

夢中になってnode-webkitでNodObjCを動かしたが、今回の通知センターはAppleScriptを使っての実装なので、osascriptをnode.jsから外部コマンド起動すれば出来るんじゃなかろうかと。

Link

関連記事

7年前の記事

2年前の記事

1年前の記事

3年後の記事