NSUserNotification - как открыть приложение при нажатии

Я использую NSUserNotification для отображения уведомлений. Это работает нормально. Проблема в том, что при нажатии на уведомление:

  1. уведомления приложений не удаляются из центра уведомлений.
  2. приложение (при сворачивании) не открывается.

кто-нибудь знаком с NSUserNotification, кто может предложить некоторые указатели?

уведомления.м

#import "Notice.h"

@implementation Notice

- (void) notify:(NSDictionary *)message {

    NSLog(@"Notification - Show it");

    NSUserNotification *notification = [[NSUserNotification alloc] init];
    [notification setTitle:[message valueForKey:@"title"]];
    [notification setInformativeText:[message valueForKey:@"content"]];
    [notification setDeliveryDate:[NSDate dateWithTimeInterval:0 sinceDate:[NSDate date]]];
    [notification setSoundName:NSUserNotificationDefaultSoundName];
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
    [center scheduleNotification:notification];
}

- (void) userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
{

    NSLog(@"Notification - Clicked");

    notification=nil;
    [center removeDeliveredNotification: notification];
}







#pragma mark WebScripting Protocol

+ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
{
    if (selector == @selector(notify:))
        return NO;

    return YES;
}

+ (NSString*) webScriptNameForSelector:(SEL)selector
{
    id  result = nil;

    if (selector == @selector(notify:)) {
        result = @"notify";
    }

    return result;
}

// right now exclude all properties (eg keys)
+ (BOOL) isKeyExcludedFromWebScript:(const char*)name
{
    return YES;
}

@end

спасибо

1 ответов


просто реализуйте NSUserNotificationCenterDelegate и определите этот метод:

- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification

пример:

это то, что я сделал в приложении "notifier".

- (void) userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
{
    NSRunAlertPanel([notification title], [notification informativeText], @"Ok", nil, nil);
}

- (void) userNotificationCenter:(NSUserNotificationCenter *)center didDeliverNotification:(NSUserNotification *)notification
{
    notifications=nil;
    [tableView reloadData];
    [center removeDeliveredNotification: notification];
}

когда уведомление активировано (нажмите пользователем), я просто сообщаю пользователю панель (я мог бы использовать окно hud).В этом случае я сразу удаляю доставленное уведомление, но это не то, что происходит обычно.Уведомление может оставаться там некоторое время и быть удалены после 1/2 часа (это зависит от приложения, которое вы разрабатываете).