В настоящее время я пытаюсь обнаружить выход пользователя из системы в macOS 10.14 (Mojave). Я нашел это, которое работало в прошлом:
Событие Catching Logoff (не выключено) на MAC с использованием цели C
Код, который я использую:
NSAppleEventManager* m = [NSAppleEventManager sharedAppleEventManager];
NSAppleEventDescriptor* desc = [m currentAppleEvent];
switch ([[desc attributeDescriptorForKeyword:kAEQuitReason] int32Value])
{
case kAELogOut:
case kAEReallyLogOut:
// log out
break;
case kAEShowRestartDialog:
case kAERestart:
// system restart
break;
case kAEShowShutdownDialog:
case kAEShutDown:
// system shutdown
break;
default:
// ordinary quit
break;
}
Но полученное мной значение всегда равно нулю (0).
Что-то изменилось в Мохаве или есть другой механизм? Этот код вызывается в функции applicationShouldTerminate
в моем AppDelegate
.