2017-12-14 16 views
2

ボタンをクリックしたときに通知を表示する必要のある単純なアプリケーションを作成しようとしています。問題は、通知が表示されないが、console.logsが表示されていることです。通知は開発モードで動作する必要がありますか? (意味だけelectron .を実行している、と私はアプリ構築してインストールする必要はありません)ノードノーティファイア表示ウィンドウ付き電子10通知

のWindows OS:

  • 版:Windowsの10ホームを
  • バージョン:1709
  • ビルド: 16299.98
  • 注:トーストSystem->Notification & Actions
下(バナー、アクションセンター)が有効になっています

コード:

// main.js 
const { app, BrowserWindow, ipcMain, Notification } = require("electron"); 

const path = require("path"); 
const url = require("url"); 

let win; 

function createWindow() { 
    // Create the browser window. 
    win = new BrowserWindow({ width: 800, height: 600 }); 

    // and load the index.html of the app. 
    win.loadURL(
    url.format({ 
     pathname: path.join(__dirname, "index.html"), 
     protocol: "file:", 
     slashes: true 
    }) 
); 

    // Open the DevTools. 
    // win.webContents.openDevTools() 

    // Emitted when the window is closed. 
    win.on("closed",() => { 
    // Dereference the window object, usually you would store windows 
    // in an array if your app supports multi windows, this is the time 
    // when you should delete the corresponding element. 
    win = null; 
    }); 
} 

const appId = "elite-notifier"; 

app.setAppUserModelId(appId); 
app.on("ready", createWindow); 

console.log("notifying"); 
ipcMain.on("notify",() => { 
    console.log("notified"); 
    const WindowsToaster = require("node-notifier").WindowsToaster; 
    const notifier = new WindowsToaster({ 
    withFallback: false 
    }); 
    notifier.notify(
    { 
     title: "My awesome title", 
     message: "Hello from node, Mr. User!", 
     sound: true, // Only Notification Center or Windows Toasters 
     wait: false // Wait with callback, until user action is taken against notification 
    }, 
    function(err, response) { 
     // Response is response from notification 
     console.log("responded..."); 
    } 
); 
}); 


// index.html 
<!DOCTYPE html> 
<html> 

<head> 
    <meta charset="UTF-8"> 
    <title>Hello World!</title> 
</head> 

<body> 
    <h1>Notifier!</h1> 
    <button type="button" id="notify">Click here to trigger a notification!</button> 
     <script type="text/javascript"> 
     const { ipcRenderer } = require('electron'); 

     const button = document.getElementById('notify'); 
     console.log('BUTTON: ', button) 
     button.addEventListener('click', function(event) { 
      console.log('clicked...'); 
      ipcRenderer.send('notify') 
     }); 
     </script> 
</body> 

</html> 
+0

私のためにWindows 8では、以前のバージョンのノード通知機能(4.6.1) – Mike

答えて

1

:) anthonyraymondのコメントに基づいてhttps://github.com/mikaelbr/node-notifier/issues/144#issuecomment-319324058

、あなたがあなたのWindowsマシンにあなたのアプリINSTALLEDを持っている必要がありますappId。このようにpackage.jsonappIdを設定することができます。

{ 
    "name": "myapp", 
    "version": "1.0.0", 
    "description": "test", 
    "main": "main.js", 
    "build": { 
    "appId": "com.myapp.id" 
    } 
} 

appIdjava/androidフォーマット、私のアプリはちょうどelite-notifierappIdを持っていることをする必要はありません。

通知者の機能notifyを呼び出すときは、appIdを渡すことができます。

notifier.notify(
    { 
     appName: "com.myapp.id", <-- yes, the key here is appName :) 
     title: "Hello", 
     message: "Hello world!", 
     wait: true 
    }, 
    function(err, response) { 
     // Response is response from notification 
     console.log("responded..."); 
    } 
); 

インストールした後、これは、1つをインストールし、上のミスマッチが存在しますので、インストール後にアプリのappIdを変更しないだろうと提供(electron .コマンドを実行して)も、開発モードで動作しますアプリの開発版。

1

あなたは、これはsupported from the renderer process using the HTML5 notification APIで、IPCを使用して、メインプロセスからの通知を送信する必要はありません。私はそれが、今ここにすべての人々に感謝を作業持って

let myNotification = new Notification('Title', { 
    body: 'Lorem Ipsum Dolor Sit Amet' 
}) 

myNotification.onclick =() => { 
    console.log('Notification clicked') 
} 
+0

を指摘してくれてありがとう、それは複雑さを軽減するのに大いに役立つはずです。私は今働いている、私はすぐに答えを投稿します。 –

関連する問題