Usuń znaczek powiadomienia stacji dokującej dla aplikacji spoza centrum powiadomień

12

Czy w przypadku uciążliwych aplikacji, które ustawiają ikonę powiadomienia o znaczku, ale których nie ma w Centrum powiadomień ustawień, istnieje sposób na zablokowanie ikony znaczka?


Na przykład Spotify tworzy powiadomienie dla każdego nieznaczącego zdarzenia, bez możliwości zablokowania go w aplikacji.

Osobiście nie rozumiem, w jaki sposób aplikacje mogą wyświetlać ikonę znaczka, nie będąc w centrum powiadomień.


Przykład:

wprowadź opis zdjęcia tutaj

Jon Cox
źródło
Aplikacje oznaczające swoje ikony, jak na twoim zrzucie ekranu, długo poprzedzały włączenie Centrum powiadomień w OS X. Nie muszą do tego korzystać z funkcji powiadomień.
tubedogg
Ponadto jest to najlepsza poprawka, jaką do tej pory znalazłem: ukrywanie statusu uruchomionej aplikacji podczas pracy (co również ukrywa odznakę): apple.stackexchange.com/questions/68915/…
y3sh

Odpowiedzi:

27

Mam rozwiązanie, które udało mi się odtworzyć. Przetestowałem to na moim komputerze z systemem Yosemite 10.10.4 (14E46). Jeśli możesz znaleźć identyfikator pakietu (w pliku Info.plist dla pakietu aplikacji), możesz użyć tego skryptu, aby wymusić wyświetlanie aplikacji w okienku preferencji powiadomień.

# "Usernoted" seems to be the "user notifications daemon", so get it's PID.
pid=$(ps aux | grep -i [u]sernoted | awk '{print $2}')

# Find the sqlite3 database that this program has open. It's in a "private" folder (app sandboxing).
db="$(lsof -p $pid | grep com.apple.notificationcenter/db/db\$ | awk '{print $9}')"

# I got the bundleid from Spotify.app/Contents/Info.plist
bundleid="com.spotify.client"

# I use 0 as the flags because you can change all the settings in System Preferences
# 5 seems to be the default for show_count
# Grab the next-highest sort order
sql="INSERT INTO app_info (bundleid, flags, show_count, sort_order) VALUES ( '$bundleid', 0, 5, (SELECT MAX(sort_order) + 1 FROM app_info) );"

# Run the command
sqlite3 "$db" "$sql"

# Restart usernoted to make the changes take effect
killall usernoted

W tym momencie możesz otworzyć Preferencje systemowe -> Powiadomienia, a na dole listy znajdziesz aplikację, którą właśnie dodałeś. Na tej stronie możesz włączyć / wyłączyć oznaczanie ikoną.

Ryan Patterson
źródło
2
Bardzo sprytne rozwiązanie, dziękuję Ryan! (Chociaż już go „naprawiłem”, upuszczając Spotify i przełączając się na Apple Music.)
Jon Cox,
1
WRESZCIE rozwiązanie dla tego okropnego czarnucha. Dziękuję * 1000.
Josh Harrison
1
Jesteś mężczyzną.
Udi,
1
Chcę tylko potwierdzić, że to rozwiązanie nadal działa!
23tux
1
Konieczność wymiany grep com.apple.notificationcenter/db/db\$z grep 'com.apple.notificationcenter/db2/db$'jak Mac OS 10.14.1 (ewentualnie wcześniej, widzę to ponad 3 lat już)
Alex S
0

Dla osób, które są Mac Noobami, takich jak ja, utwórz i uruchom powyższy skrypt:

1. Otwórz TextEdit,
2. Przełącz edytor w tryb zwykłego tekstu - Format> Utwórz zwykły tekst.
(Pominięcie tego kroku nie pozwoli Ci zapisać go jako skryptu.)
3. Wklej powyższy skrypt w oknie TextEdit
4. Zapisz plik jako skrypt - Plik> Zapisz jako w TextEdit. Wprowadź nazwę pliku, a następnie rozszerzenie pliku „.sh”, a następnie zapisz dokument na pulpicie.
5. Otwórz aplikację Terminal
6. Przejdź do pulpitu w Terminalu - wpisz (następnie naciśnij enter):

cd Desktop
7. Ustaw uprawnienia do właśnie utworzonego pliku, aby móc go uruchomić - Wpisz w Terminalu (następnie naciśnij en):
sudo chmod 700 file.sh
(Zamień „file.sh” na nazwę skryptu.)
8. Uruchom plik - wpisz w Terminalu:
./file.sh
(Ponownie zastąp „file.sh” nazwą skryptu.)
9. Otwórz Powiadomienia w Preferencjach systemowych. Powinieneś być w stanie znaleźć aplikację Spotify i wyłączyć powiadomienia.

Źródło do tworzenia skryptu: Terminal 101: Zautomatyzuj terminal za pomocą skryptów Bash

Ch333
źródło
1
Dobry samouczek na temat wykonywania wykonywalnego skryptu powłoki, ale dla pozytywnego rozwiązania nie potrzebujesz skryptu bash. Wystarczy otworzyć terminal i wkleić polecenia. Pomiń linie zaczynające się od #, ponieważ jest to komentarz w bash.
y3sh