我正在使用https://github.com/mikaelbr/node-notifier包在shell中显示通知。
这是我的代码:
var notifier = require('node-notifier');
var path = require('path');
notifier.notify({
title: 'My awesome title',
message: 'Hello from node, Mr. User!',
icon: path.join(__dirname, 'coulson.jpg'), // absolute path (not balloons)
sound: true, // Only Notification Center or Windows Toasters
wait: true // wait with callback until user action is taken on notification
}, function (err, response) {
// response is response from notification
});
notifier.on('click', function (notifierObject, options) {
// Happens if `wait: true` and user clicks notification
});
notifier.on('timeout', function (notifierObject, options) {
// Happens if `wait: true` and notification closes
});
通知如下:
正如您所见,终端图标即将出现在名称之前。
你能帮我解决一下这个图标吗?
答案 0 :(得分:10)
node-notifier已知问题。
来自issue #71:
不,我担心通知是如何工作的,因为它是发起消息的终端。避免这种情况的唯一方法是使用自定义终端通知程序,其中交换终端图标为您自己。这不是一项大任务,您可以轻松set customPath通知中心记者。
这是因为OS X中的通知工作方式。通知会显示引荐的应用图标,因为我们使用terminal-notifier来推送通知,所以我们有终端通知器的图标。
要解决此问题,您需要使用自己的app.icns编译终端通知程序。下载源代码,在Xcode中更改自己的AppIcon包,重新编译终端通知程序并将其弹出到node-notifier中。 (
/node-notifier/vendor/terminal-notifier.app
)现在您已在node-notifier中拥有自己的终端通知程序,从OS X Notification Center代码中删除所有图标引用,并运行通知,就好像它没有图标一样。如果您的通知中显示旧的应用图标,则需要清除图标缓存。 (谷歌如何做到这一点)
来自mikaelb的另一个有价值的评论:
这是对的。但请记住,node-notifier使用终端通知器(github.com/mikaelbr/terminal-notifier)的分支来添加等待通知完成的选项,因此这应该用于添加您自己的图标。一种简单的方法是从vendor-folder复制/粘贴,并使用
customPath
指向您自己的供应商。
答案 1 :(得分:2)
我尝试了@Aleksandr M的步骤,但它似乎并不适合我。也许我对这些步骤不太了解。以下是它对我的影响。
我克隆了https://github.com/mikaelbr/terminal-notifier。然后使用xcode打开项目并删除Terminal.icns
文件,并将其替换为我的自定义图标Myicon.icns
。
然后通过将密钥terminal-notifier/Terminal Notifier/Terminal Notifier-Info.plist
设置为icon file
来修改Myicon
。
完成此操作后,只需构建项目就行不通了。我必须更改build version
和build identifier
的值(任何新值都可以)see this。
之后我用xcode构建了项目,然后复制了构建的.app
文件(你可以通过点击xcode Products
项目的Products > right click the file > show in finder
目录找到它)到我的电子项目
例如,您的最终路径可能如下所示。 electron-project/vendor/terminal-notifier.app
。
然后我{@ 3}}为@Aleksandr M建议。
这是我的样子
var notifier = new NotificationCenter({
customPath: 'vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier'
});
然后它奏效了!
答案 2 :(得分:0)
这解决了我的问题,你只需准备好你的icns文件:
下载后在终端运行此命令:customize-terminal-notifier
** path / customize-terminal-notifier-master / customize-terminal-notifier -i path / Terminal.icns -b com.bundle.identifier