NSUserNotification - как открыть приложение при нажатии
Я использую NSUserNotification для отображения уведомлений. Это работает нормально. Проблема в том, что при нажатии на уведомление:
- уведомления приложений не удаляются из центра уведомлений.
- приложение (при сворачивании) не открывается.
кто-нибудь знаком с 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 часа (это зависит от приложения, которое вы разрабатываете).