In Mac OS X 10.8 (Mountain Lion) Apple introduced User Notifications. They are displayed in the notification center. They can also be displayed as small popup message.
Displaying such a notification is quite easy. Cocoa Framework provides NSUserNotification class. The following code shows a usage example:
NSUserNotification *notification = [[NSUserNotification alloc] init];
notification.title = @"Hello, World!";
notification.informativeText = [NSString stringWithFormat:@"details details details"];
notification.soundName = NSUserNotificationDefaultSoundName;
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
That should display a notification in the Notification Center. What about the popup message? It's not displayed by default. To display it, there must
be implemented
NSUserNotificationCenterDelegate protocol. In the example I've created, I implemented it in my
AppDelegate class. The method we need is called
userNotificationCenter:shouldPresentNotification:. Here is an example of its implementation:
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center
shouldPresentNotification:(NSUserNotification *)notification
}
Of course, we need to set a class as a delegate of the
NSUserNotificationCenter. A good method for that is
applicationDidFinishLaunching: in
AppDelegate class:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
And that's it! The message popup will be displayed together with the notification. I really recommend to check the documentation of classes that appered in this article. There are many other features like setting additional buttons or methods that are called when the notification is displayed or deliverd.