58 votes

Envoyer une notification au centre de notification de lion de montagne

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

153voto

alexjohnj Points 1168

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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X