2016-01-04 14 views
8

Tôi muốn ứng dụng OSX của mình gọi một chức năng khi màn hình của người dùng khả dụng, ví dụ: máy tính của họ bật dậy khi ngủ hoặc người dùng bật màn hình của họ. Về cơ bản bất cứ lúc nào người dùng đi từ không có màn hình hoạt động để có một hoạt động, tôi muốn chức năng của tôi được gọi.OSX/Swift: Chức năng gọi khi màn hình khả dụng

Tôi không chắc chắn nếu cách tốt nhất để làm điều này là:

nào sau đây dường như như cách tốt nhất để làm điều này, hay tôi nên làm điều gì khác hoàn toàn? Một số ví dụ về mã Swift sẽ thực sự hữu ích vì các đoạn mã thực hiện bất kỳ mã nào trong số này dường như ít và rất xa. Cảm ơn.

Trả lời

3

Tôi đã có thể nhận thông báo về khóa màn hình và mở khóa màn hình trên OS X 10.10.5. Xin lỗi tôi không biết Swift chưa vì vậy đây là Objective-C:

NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter]; 
[center addObserver:self selector:@selector(screenIsLocked) name:@"com.apple.screenIsLocked" object:nil]; 
[center addObserver:self selector:@selector(screenIsUnlocked) name:@"com.apple.screenIsUnlocked" object:nil]; 

- (void)screenIsLocked { 
    NSLog(@"screen is locked"); 
} 

- (void)screenIsUnlocked { 
    NSLog(@"screen is unlocked"); 
} 
1

Vâng, trước hết bạn phải kiểm tra, cho dù bạn có thể có được giải pháp cho mọi tình huống với các công nghệ khác nhau. Có rất nhiều tình huống bật màn hình (khởi động lại hệ thống, tỉnh táo từ giấc ngủ, màn hình kết nối/disconneting,…) và tôi không chắc chắn, cho dù tất cả chúng đều được kích hoạt bởi tất cả các công nghệ.

Tuy nhiên, như một quy tắc chung: Bạn muốn biết khi nào màn hình được kích hoạt. Vì vậy, sử dụng thông báo cho bạn biết rằng màn hình được kích hoạt. Đây là NSWorkspaceScreensDidWakeNotification. Khi nó hoạt động, tôi sẽ luôn sử dụng kỹ thuật gần nhất với những gì tôi muốn.

+0

Tôi hy vọng rằng NSWorkspaceScreensDidWakeNotification sẽ là đủ. Như bạn đã nói, tôi có lẽ sẽ phải kiểm tra tất cả các hoàn cảnh khác nhau tự bật màn hình. Tôi đã hy vọng cho một loại thông báo ô dù bắt tất cả những điều này nhưng nó không giống như có một. – yesthisisjoe

+0

Có khả năng có giao lộ và một trong các công nghệ sử dụng một giao lộ khác. Đơn giản chỉ cần kiểm tra nó. (Khó, bởi vì rất khó để nhận ra tất cả các tình huống. Tuy nhiên, người dùng của bạn sẽ làm.: -]) Và: Có thể bạn không muốn nhận tất cả các thông báo, i. e. sau khi hệ thống khởi động. –

Các vấn đề liên quan