CocoaアプリからNotifications Centerにテスト通知を送信する例を教えてもらえますか?例えば。 NSButton
をクリックすると
Mountain Lionでの通知は2つのクラスで処理されます。 NSUserNotification
およびNSUserNotificationCenter
。 NSUserNotification
は実際の通知であり、プロパティを介して設定できるタイトル、メッセージなどがあります。作成した通知を配信するには、NSUserNotificationCenterで利用可能なdeliverNotification:
メソッドを使用できます。 Apple docsには 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];
[notification release];
}
これにより、タイトル、メッセージを含む通知が生成され、表示されたときにデフォルトのサウンドが再生されます。通知でできることはこれだけではありません(通知のスケジュール設定など)。これについては、リンク先のドキュメントで詳しく説明しています。
1つの小さな点は、アプリケーションが主要なアプリケーションである場合にのみ通知が表示されることです。アプリケーションがキーかどうかに関係なく通知を表示したい場合は、NSUserNotificationCenter
のデリゲートを指定し、デリゲートメソッドuserNotificationCenter:shouldPresentNotification:
をオーバーライドして、YESを返す必要があります。 NSUserNotificationCenterDelegate
のドキュメントは here にあります。
NSUserNotificationCenterにデリゲートを提供し、アプリケーションがキーかどうかに関係なく通知を強制的に表示する例を次に示します。アプリケーションのAppDelegate.mファイルで、次のように編集します。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
}
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification{
return YES;
}
そして、AppDelegate.hで、クラスがNSUserNotificationCenterDelegateプロトコルに準拠していることを宣言します。
@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>