Envie uma notificação para centro de notificação de Leão da montanha

Alguém pode dar um exemplo de envio de uma notificação de teste de um aplicativo Cocoa para o Centro de Notificações? por exemplo. quando clico em um NSButton

As notifications no Mountain Lion são tratadas por duas classs. NSUserNotification e NSUserNotificationCenter . NSUserNotification é a sua notificação real, tem um título, uma mensagem, etc., que pode ser definida através de propriedades. Para entregar uma notificação que você criou, você pode usar o método deliverNotification: disponível no NSUserNotificationCenter. Os documentos da Apple têm informações detalhadas sobre NSUserNotification e NSUserNotificationCenter, mas o código básico para postar uma notificação é semelhante ao seguinte:

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

Isso produzirá uma notificação com um título, uma mensagem e reproduzirá o som padrão quando for exibido. Há muito mais que você pode fazer com notifications do que apenas isso (como notifications de agendamento) e isso é detalhado na documentação que eu criei.

Um pequeno ponto, as notifications só serão exibidas quando o aplicativo for o aplicativo principal. Se você quiser que suas notifications sejam exibidas independentemente de seu aplicativo ser importante ou não, você precisará especificar um delegado para NSUserNotificationCenter e replace o método delegado userNotificationCenter:shouldPresentNotification: para que ele retorne YES. A documentação do NSUserNotificationCenterDelegate pode ser encontrada aqui

Aqui está um exemplo de fornecer um delegado ao NSUserNotificationCenter e, em seguida, forçar a exibição de notifications, independentemente de o aplicativo ser a chave. No arquivo AppDelegate.m do seu aplicativo, edite-o assim:

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

E no AppDelegate.h, declare que a class está em conformidade com o protocolo NSUserNotificationCenterDelegate:

 @interface AppDelegate : NSObject