2012-08-05 15 views

cevap

148

Bildirimler tıkladığınızda iki sınıf tarafından ele alınır. NSUserNotification ve NSUserNotificationCenter. NSUserNotification gerçek bildiriminiz, özellikleri ile ayarlanabilen bir başlığa, bir mesaja vb. Sahiptir. Oluşturduğunuz bir bildirimi teslim etmek için, NSUserNotificationCenter'da bulunan deliverNotification: yöntemini kullanabilirsiniz. Elma docs NSUserNotification & NSUserNotificationCenter hakkında ayrıntılı bilgi ama bir bildirim göndermek için temel kod şuna benzer: Bu bir başlıkla bir bildirim üreteceğiniz

- (IBAction)showNotification:(id)sender{ 
    NSUserNotification *notification = [[NSUserNotification alloc] init]; 
    notification.title = @"Hello, World!"; 
    notification.informativeText = @"A notification"; 
    notification.soundName = NSUserNotificationDefaultSoundName; 

    [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; 
} 

, bir mesaj ve bu varsayılan sesi oynayacağız görüntüleniyor. Bildirimlerle yapabileceğiniz çok daha fazla şey var (bildirim zamanlamaları gibi) ve hepsi de bağlandığım belgelerle ilgili.

Küçük bir nokta, bildirim yalnızca uygulamanız anahtar uygulama olduğunda görüntülenecektir. Eğer bildirimleri olursa olsun uygulama anahtar ise veya olmasın görüntülemek istiyorsanız, size NSUserNotificationCenter için temsilci belirlemek ve onu EVET döndürmesini sağlayacak şekilde userNotificationCenter:shouldPresentNotification: temsilci yöntemi geçersiz gerekir. NSUserNotificationCenterDelegate belgeleri için here

belgelerine ulaşabilirsiniz. Burada bir örnek vermek için NSUserNotificationCenter'a bir örnek vermeniz ve ardından uygulamanızın anahtar olup olmadığına bakılmaksızın görüntülenecek bildirimleri zorlamak için bir örnek verilmiştir. uygulamanızın AppDelegate.m dosyasında, şöyle düzenleyin:

@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate> 
+0

Eğer userNotificationCenter geçersiz kılmak nasıl anlatabilir misin:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; } - (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification{ return YES; } 

Ve AppDelegate.h içinde

, sınıf NSUserNotificationCenterDelegate protokole uygun olduğunu beyan ? (üzgünüm, bu gerçekten yeniyim :)) – haseo98

+3

@ haseo98 Yup, Sadece cevabım için bir örnek ekledim. – alexjohnj

+0

Im uyumsuz tip 'id ' parametresine 'AppDelegate * const __strong' gönderme, yöntemin applicationDidFinishLaunching bölümünün yanında bir hata alıyorum. Herhangi bir fikir? – haseo98

İlgili konular