Sie können eine Benachrichtigung erhalten, wenn das System gerade ausgeschaltet wird, neu gestartet wird oder sich der Benutzer gerade abmeldet. Dies ist keine gewöhnliche Benachrichtigung, sondern eine Arbeitsbereichsbenachrichtigung.
Sie können für die Meldung wie folgt registrieren:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
//...more code...
self.powerOffRequestDate = [NSDate distantPast];
NSNotificationCenter *wsnCenter = [[NSWorkspace sharedWorkspace] notificationCenter];
[wsnCenter addObserver:self
selector:@selector(workspaceWillPowerOff:)
name:NSWorkspaceWillPowerOffNotification
object:nil];
}
in der Benachrichtigungs-Handler, sollten Sie nur das Datum sparen weg:
- (void)workspaceWillPowerOff:(NSNotification *)notification
{
self.powerOffRequestDate = [NSDate new];
}
hinzufügen
@property (atomic,strong,readwrite) NSDate *powerOffRequestDate;
auf die geeigneter Ort.
Wenn Ihre App zum Beenden aufgefordert wird, sollten Sie dieses Datum abrufen und überprüfen, ob der Computer gerade ausgeschaltet wird.
if([self.powerOffRequestDate timeIntervalSinceNow] > -60*5) {
// shutdown immediately
} else {
// ask user
}
wählte ich ein intervall von 5 Minuten für den folgenden Rand Fall: der Computer ausgeschaltet ist, aber ein andere app bricht das. Ihre App wird noch ausgeführt. 10 Minuten später schließt der Nutzer Ihre App. In diesem Fall sollte die App den Benutzer fragen. Das ist ein bisschen wie ein Hack, aber es ist kein "verrückter Hack", denke ich ...
Hoffe, das hilft.