Отправить уведомление в центр уведомлений о горном льве

Может ли кто-нибудь дать пример отправки тестового уведомления из приложения Cocoa в Центр уведомлений? например. когда я нажимаю на NSButton

Уведомления в Mountain Lion обрабатываются двумя classами. NSUserNotification и NSUserNotificationCenter . NSUserNotification – это ваше фактическое уведомление, оно имеет заголовок, сообщение и т. Д., NSUserNotification могут быть установлены через свойства. Чтобы предоставить созданное уведомление, вы можете использовать метод deliverNotification: ansible в NSUserNotificationCenter. Документы 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]; } 

Это приведет к уведомлению с заголовком, сообщением и воспроизведет звук по умолчанию при его отображении. Есть гораздо больше, что вы можете делать с уведомлениями, чем только это (например, уведомления о планировании), и это подробно описано в документации, к которой я привязан.

Одна небольшая точка, уведомления будут отображаться только в том случае, если ваше приложение является ключевым приложением. Если вы хотите, чтобы ваши уведомления отображались независимо от того, является ли ваше приложение ключевым или нет, вам нужно указать делегат для NSUserNotificationCenter и переопределить метод делегата userNotificationCenter:shouldPresentNotification: чтобы он возвращал YES. Документацию для NSUserNotificationCenterDelegate можно найти здесь

Ниже приведен пример предоставления делегата NSUserNotificationCenter, а затем принудительное отображение уведомлений независимо от того, является ли ваше приложение ключевым. В файле приложения AppDelegate.m измените его следующим образом:

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

И в AppDelegate.h объявите, что class соответствует протоколу NSUserNotificationCenterDelegate:

 @interface AppDelegate : NSObject  
  • Приложение iOS: как очистить уведомления?
  • API, чтобы определить, работает ли на iPhone или iPad
  • Сохранить видео Youtube для iPhone в приложении
  • Могу ли я получить доступ к брелкам на iPhone?
  • Почему вы используете символ подчеркивания для переменной экземпляра, но не соответствующее ему свойство?
  • Запустите NSRunLoop в командной строке программы Cocoa
  • UIWebView - Как определить последнее сообщение webViewDidFinishLoad?
  • Множественное перечисление значений в Obj-C
  • Как прокрутить UITableView в определенную позицию
  • NSDateFormatter и yyyy-MM-dd
  • Как передать объект с помощью NSNotificationCenter
  • Давайте будем гением компьютера.