向山狮通知中心发送通知

有人可以举一个从Cocoa应用程序发送testing通知到通知中心的例子吗? 例如。 当我点击一个NSButton

山狮的通知由两个class级处理。 NSUserNotificationNSUserNotificationCenterNSUserNotification是你的实际通知,它有一个标题,一个消息等可以通过属性设置。 要传递您创build的通知,您可以使用deliverNotification:提供的deliverNotification:方法。 Apple文档具有NSUserNotification & NSUserNotificationCenter的详细信息,但发布通知的基本代码如下所示:

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

这将产生一个标题,一条消息的通知,并会显示默认的声音。 还有更多的事情可以通过通知来完成(比如计划通知),这些都在我链接到的文档中详细介绍。

一个小问题,只有当你的应用程序是关键应用程序时才会显示通知。 如果您希望显示通知而不pipe您的应用程序是否为键,那么您需要为NSUserNotificationCenter指定一个委托并覆盖委托方法userNotificationCenter:shouldPresentNotification:以便返回YES。 NSUserNotificationCenterDelegate的文档可以在这里find

以下是向NSUserNotificationCenter提供委托的示例,然后强制显示通知,而不pipe您的应用程序是否为关键。 在您的应用程序的AppDelegate.m文件中,像这样编辑它:

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

在AppDelegate.h中,声明该类符合NSUserNotificationCenterDelegate协议:

 @interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>