Обновите значок в строке меню центра уведомлений MacOS после программного изменения «Не беспокоить» - PullRequest
0 голосов
/ 26 февраля 2020

Я реализовал функцию «Не беспокоить центр уведомлений MacOS» на Ma c программным способом.

Среда: macOS Mojave 10.14.6, Xcode 11.3.1.

Вот мой код (Objective- C):


- (void)setDoNotDisturbEnabled:(BOOL)flag{
    CFStringRef appID = CFSTR("com.apple.notificationcenterui");

    CFPreferencesSetValue(CFSTR("doNotDisturb"),
                          (__bridge CFPropertyListRef)([NSNumber numberWithBool:flag]),
                          appID,
                          kCFPreferencesCurrentUser,
                          kCFPreferencesCurrentHost);

    if(flag){
        CFPreferencesSetValue(CFSTR("doNotDisturbDate"),
                              (__bridge CFPropertyListRef)([NSDate dateWithTimeIntervalSinceNow:0]),
                              appID,
                              kCFPreferencesCurrentUser,
                              kCFPreferencesCurrentHost);
    }else{
        CFPreferencesSetValue(CFSTR("doNotDisturbDate"),
                              NULL,
                              appID,
                              kCFPreferencesCurrentUser,
                              kCFPreferencesCurrentHost);
    }

    [[[NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.notificationcenterui"] firstObject] forceTerminate];
}

Когда я прохожу " ДА "для метода, значок в строке меню тускнеет, и после нажатия на него я вижу, что переключатель" Не беспокоить "включен.

Когда я передаю" НЕТ "методу, переключатель" Не беспокоить " выключен, но затемненный значок не восстанавливает нормальное состояние.

Небольшой поток, если кто-нибудь может помочь мне исправить это, будет идеальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...