2016-01-04 17 views
8

Kullanıcı ekranım kullanıma hazır olduğunda OSX uygulamasının bir işlevi çağırmasını istiyorum, örn .: bilgisayar uykudan uyanıyor veya kullanıcı ekranını açıyor. Temel olarak, kullanıcının herhangi bir ekranı aktif olana kadar aktif olan herhangi bir zamanda, işlevimin çağrılmasını istiyorum.OSX/Swift: Ekran kullanılabilir olduğunda çağrı işlevi

dinleyin: Bunu yapmanın en iyi yolu ise

emin değilim Bunu yapmanın en iyi yolu gibi mi, yoksa tamamen başka bir şey mi yapmalıyım? Bunlardan herhangi birini uygulayan kod snippet'leri çok az ve çok uzak olduğu için, bazı örnek Swift kodu gerçekten yararlı olacaktır. Teşekkürler.

cevap

3

OS X 10.10.5'te ekran kilidi ve ekran kilidi açma ile ilgili bildirimleri alabildim. Üzgünüm Swift bilmiyorum henüz çok burada Objective-C var: Eğer farklı teknolojiler ile tüm durumlar için çözüm alabilirsiniz da test etmek zorunda her şeyden önce

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

Kuyusu,. Ekranı açan birçok durum var (sistem yeniden başlatılıyor, uykudan uyanıyor, bağlanıyor/ekranlar çözülüyor, ...) ve hepsinin tüm teknolojiler tarafından tetiklenip tetiklenmediği konusunda emin değilim. Ancak, genel bir kural olarak: Ekran aktive edildiğinde bilmek istersiniz. Bu yüzden ekranın aktif olduğunu bildiren bildirimi kullanın. Bu NSWorkspaceScreensDidWakeNotification. Çalıştığı sürece her zaman istediğime en yakın olan tekniği kullanırdım.

+0

NSWorkspaceScreensDidWakeNotification öğesinin yeterli olacağını umuyorum. Söylediğin gibi, muhtemelen görüntüyü kendim açan tüm farklı koşulları test etmeliyim. Tüm bunları yakalayan bir çeşit şemsiye bildirimini umuyordum ama bir tane gibi görünmüyor. – yesthisisjoe

+0

Muhtemelen kavşaklar var ve teknolojilerden biri diğerini kullanıyor. Sadece kontrol et. (Zor, çünkü tüm durumları tanımak zor. Ancak, kullanıcılarınız yapacak.: -]) Ve: Belki tüm bildirimleri almak istemiyorsunuz, i. e. sistem başlatıldıktan sonra. –

İlgili konular