2016-01-04 23 views
8

Desidero che la mia app OSX richiami una funzione quando lo schermo dell'utente diventa disponibile, ad esempio: il computer si riattiva o l'utente accende il proprio schermo. In pratica ogni volta che l'utente passa dall'avere nessuna schermata attiva ad averne una attiva, vorrei che venisse chiamata la mia funzione.OSX/Swift: funzione di chiamata quando lo schermo diventa disponibile

non sono sicuro se il modo migliore per farlo è quello di:

Quale di questi sembra come il modo migliore per farlo, o dovrei fare qualcos'altro interamente? Una sorta di codice Swift di esempio sarebbe davvero utile poiché frammenti di codice che implementano uno di questi elementi sembrano essere pochi e distanti tra loro. Grazie.

risposta

3

Sono stato in grado di ricevere notifiche per il blocco dello schermo e lo sblocco dello schermo su OS X 10.10.5. Mi dispiace non so Swift eppure così ecco 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

Beh, prima di tutto bisogna verificare, se è possibile ottenere la soluzione per tutte le situazioni con le diverse tecnologie. Ci sono molte situazioni che accendono il display (riavvio del sistema, risveglio dal sonno, schermate di connessione/disconnessione, ...) e non sono sicuro, indipendentemente dal fatto che siano tutte attivate da tutte le tecnologie.

Tuttavia, come regola generale: si desidera sapere quando lo schermo è attivato. Quindi usa la notifica che ti dice che lo schermo è attivato. Questo è NSWorkspaceScreensDidWakeNotification. Per quanto funzionerà, userò sempre la tecnica più vicina a ciò che voglio.

+0

Spero che NSWorkspaceScreensDidWakeNotification sia sufficiente. Come hai detto tu, probabilmente dovrò testare tutte le diverse circostanze che accendono il display da solo. Speravo in una sorta di notifica ombrello che catturasse tutto questo ma non sembra che ce ne sia uno. – yesthisisjoe

+0

Probabilmente ci sono intersezioni e una delle tecnologie ne usa un'altra. Basta controllare. (Difficile, perché è difficile riconoscere tutte le situazioni, ma i tuoi utenti lo faranno.: -]) E: Forse non vuoi ricevere tutte le notifiche, io. e. dopo l'avvio del sistema. –