Bạn có thể nhận được thông báo khi hệ thống sắp tắt nguồn, khởi động lại hoặc nếu người dùng chỉ đăng xuất. Đây không phải là thông báo bình thường, mà là thông báo vùng làm việc.
Bạn có thể đăng thông báo như thế này:
- (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];
}
trong xử lý thông báo, bạn chỉ nên tiết kiệm đi ngày:
- (void)workspaceWillPowerOff:(NSNotification *)notification
{
self.powerOffRequestDate = [NSDate new];
}
Thêm
@property (atomic,strong,readwrite) NSDate *powerOffRequestDate;
đến nơi thích hợp.
khi ứng dụng của bạn được yêu cầu chấm dứt, bạn sẽ nhận được ngày đó và kiểm tra xem máy tính sắp tắt hay chưa.
if([self.powerOffRequestDate timeIntervalSinceNow] > -60*5) {
// shutdown immediately
} else {
// ask user
}
tôi đã chọn một intervall của 5 phút đối với trường hợp cạnh sau đây: Máy tính nên tắt nguồn, nhưng ứng dụng khác hủy bỏ đó. Ứng dụng của bạn vẫn đang chạy. 10 phút sau, người dùng đóng ứng dụng của bạn. Trong trường hợp đó, ứng dụng phải hỏi người dùng. Đây là một chút của một hack, nhưng nó không phải là một "điên hack" Tôi nghĩ rằng ...
Hy vọng điều này sẽ giúp.