2016-01-25 15 views
15

Używam pakietu https://github.com/mikaelbr/node-notifier do wyświetlania powiadomień w powłoce.Usuń ikonę terminalu w powiadomieniu o węźle

To jest mój kod:

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

Zawiadomienie przychodzi tak:

enter image description here

Jak widać ikona terminala nadchodzi przed nazwą.

Czy możesz mi pomóc, jak usunąć tę ikonę?

Odpowiedz

8

Jest to znany problem z node-notifier.

Od issue #71:

mikaelbr:

Nie, obawiam się, że to, w jaki sposób praca powiadomienie, jako że jest to terminal, który inicjuje wiadomość. Jedynym sposobem, aby tego uniknąć, jest skorzystanie z niestandardowego programu do powiadamiania o terminalach, w którym ikona Terminal jest zamieniana na własną. To nie jest duże zadanie i możesz z łatwością set customPath zrobić reporter centrum powiadomień.

kurisubrooks:

Dzieje się tak ze względu na sposób pracy powiadomień w OS X. Powiadomienie wyświetli ikonę aplikacji odsyłającej, a ponieważ używamy do przesyłania powiadomień terminal-notifier, mamy ikonę powiadamiania o terminalu.

Aby obejść ten problem, należy skompilować program do powiadamiania terminalu za pomocą własnych aplikacji app.icns. Pobierz źródło, zmień pakiet AppIcon na własny w Xcode, przekompiluj terminal-notifier i włóż go do węzła-notifier. (/node-notifier/vendor/terminal-notifier.app)

Teraz, gdy masz już własny powiadamiacz terminala wewnątrz powiadamiania o węzłach, usuń wszystkie odniesienia do ikon z kodu Centrum powiadomień OS X i uruchom powiadomienie tak, jakby nie było ikony. Jeśli w powiadomieniach wyświetla się stara ikona aplikacji, wyczyść pamięć podręczną ikon. (Google, jak to zrobić)

Kolejny cenny komentarz od mikaelb:

Zgadza się. Pamiętaj jednak, że narzędzie do powiadamiania o węzłach używa rozwidlenia z powiadomieniem terminalowym (github.com/mikaelbr/terminal-notifier), aby dodać opcję oczekiwania na zakończenie powiadamiania, więc należy użyć tej opcji, aby dodać własną ikonę. Łatwym sposobem na to jest skopiowanie/wklejenie z folderu dostawcy i użycie customPath, aby wskazać swojego dostawcę.

+1

Zgadza się. Pamiętaj jednak, że narzędzie do powiadamiania o węźle używa widżetu powiadamiającego o terminalu (https://github.com/mikaelbr/terminal-notifier), aby dodać opcję oczekiwania na zakończenie powiadamiania, więc powinno to zostać użyte do dodania własnej ikony . Łatwym sposobem na to jest skopiowanie/wklejenie z folderu dostawcy i użycie 'customPath' do wskazania własnego dostawcy. – mikaelb

+0

@mikaelb Dzięki. Dodałem komentarz do odpowiedzi, aby się nie zgubić. –

1

Próbowałem kroków @Aleksandra M, ale nie sprawdziło się to dla mnie. Może nie zrozumiałem wystarczająco dobrze kroków. Oto jak to działa dla mnie.

Sklonowałem https://github.com/mikaelbr/terminal-notifier. Następnie otwórz projekt za pomocą kodu xcode i usuń plik Terminal.icns i zastąp go moją własną ikoną Myicon.icns.

Następnie edytowano terminal-notifier/Terminal Notifier/Terminal Notifier-Info.plist, ustawiając klucz icon file na Myicon.

Po wykonaniu tego po prostu budowanie projektu NIE DZIAŁA. Musiałem zmienić wartości build version i build identifier (każda nowa wartość zrobiłaby) see this.

Po prostu zbudowany projekt z Xcode i kopiowane wbudowany .app plik (można go znaleźć, klikając katalog Products projektu od Xcode Products > right click the file > show in finder) do mojego projektu elektronów

np twoja ostateczna ścieżka może wyglądać lubię to. electron-project/vendor/terminal-notifier.app.

Następnie I set customPath jako @Aleksandr M. zasugerował.

Oto co mój wyglądał

var notifier = new NotificationCenter({ customPath: 'vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier' });

a następnie to działa!

Powiązane problemy