发送通知到山狮的通知中心(Send notification to Mountain lion no

2019-06-17 15:25发布

有人可以给从可可应用通知中心发送测试通知的例子吗? 例如。 当我点击一个NSButton

Answer 1:

在山狮的通知是由两类处理。 NSUserNotificationNSUserNotificationCenterNSUserNotification是您的实际通知,它有一个标题,消息等,可以通过属性设置。 为了提供您已经创建了一个通知,您可以使用deliverNotification:方法NSUserNotificationCenter可用。 苹果的文档有详细的资料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];
}

这会产生一个通知,一个标题,一个消息时,它显示的是将播放默认声音。 还有很多更多,您可以用通知的不仅仅是这一点(如调度通知)做的,这就是我链接到文档中的所有细节。

一个小点,通知将只在您的应用程序的关键应用程序中显示。 如果你想,无论你的应用是关键还是不是你的通知显示,你需要指定一个委托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,声明类符合NSUserNotificationCenterDelegate协议:

@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>


文章来源: Send notification to Mountain lion notification center