0

通知センターにObjective-Cで通知を出す

なぜかMacアプリ作ってます。今をときめくiPhoneアプリでなくMacアプリ。
備忘録として、Macの通知センターにobjective-cで通知させる方法です。

Screen Shot 2013-09-09 at 7.08.17 PM

とか

Screen Shot 2013-09-09 at 7.07.50 PM

とかみたいなやつですね。

■Notification.h

#import <Cocoa/Cocoa.h>
@interface Notification : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>
- (void)notify:(NSString *)title subtitle:(NSString *)subtitle informativeText:(NSString *)informativeText url:(NSString *)url;
@end

■Notification.m

#import "Notification.h"
@implementation Notification
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
}
- (void)notify:(NSString *)title subtitle:(NSString *)subtitle informativeText:(NSString *)informativeText url:(NSString *)url
{
[NSUserNotificationCenter defaultUserNotificationCenter].delegate = self;
 
NSUserNotification *userNotification = [[NSUserNotification alloc] init];
userNotification.title = title;
userNotification.subtitle = subtitle;
userNotification.informativeText = informativeText;
userNotification.userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:url, @"url", nil];
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification];
}

// ダブルクリックでURLで指定した先に飛ぶ
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
{
NSURL *url = [NSURL URLWithString:[notification.userInfo valueForKey:@"url"]];
[[NSWorkspace sharedWorkspace] openURL:url];
}
@end

で、通知を出したいところでこのクラスのnotifyというメソッドを呼び出す。

notification = [[Notification alloc] init];
    [notification notify:@"タイトル" subtitle:@"サブタイトル" informativeText:@"テキスト" url:@"http://yahoo.com"];

subtitleは、あまり使われてない印象。
これを引数でタイトルやテキストを指定できるアプリケーションにして、LLから呼び出せるようにしとけば俺々ツール作る時に便利ですねー。

大阪のWEB屋です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です