Quelqu'un peut-il donner un exemple d'envoi d'une notification de test d'une application Cocoa au Centre de notifications? par exemple. quand je clique sur un NSButton
Réponse
Trop de publicités?Les Notifications dans la Montagne du Lion sont gérées par deux classes. NSUserNotification
et NSUserNotificationCenter
. NSUserNotification
est votre avis, il a un titre, un message etc. qui peuvent être définis par des propriétés. Pour fournir une notification indiquant que vous avez créé, vous pouvez utiliser l' deliverNotification:
méthode de la NSUserNotificationCenter. La Pomme docs avoir des informations détaillées sur NSUserNotification & NSUserNotificationCenter mais le code de base de publier une notification ressemble à ceci:
- (IBAction)showNotification:(id)sender{
NSUserNotification *notification = [[NSUserNotification alloc] init];
notification.title = @"Hello, World!";
notification.informativeText = @"A notification";
notification.soundName = NSUserNotificationDefaultSoundName;
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
}
Qui va produire une notification avec un titre, un message et qui va jouer le son par défaut lors de l'affichage. Il y a beaucoup plus de choses que vous pouvez faire avec les notifications que ce (telles que la planification des notifications) et que tout est détaillé dans la documentation je lien.
Un petit point, les notifications ne seront affichées que lorsque votre application est la clé de l'application. Si vous voulez que vos notifications à afficher peu importe si votre application est la clé ou pas, vous aurez besoin de spécifier un délégué NSUserNotificationCenter
et remplacer la méthode du délégué userNotificationCenter:shouldPresentNotification:
de sorte qu'elle retourne OUI. La documentation pour l' NSUserNotificationCenterDelegate
peut être trouvé ici
Voici un exemple d'offrir un délégué à NSUserNotificationCenter et puis, forçant les notifications pour être affichée que si votre application est la clé. Dans votre application AppDelegate.m de fichier, le modifier comme ceci:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
}
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification{
return YES;
}
Et dans AppDelegate.h, déclarer que la classe est conforme à la NSUserNotificationCenterDelegate protocole:
@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>