Как обрабатывать клики уведомлений о горных львах

Я просто хотел добавить уведомления в приложение Gyazo. Наконец-то я смог отправлять уведомления в центр уведомлений http://korniltsev.ru/p/jz6m3Nm.png однако, когда я нажимаю на него, а приложение не запускается, оно запускается каким-то странным образом: оно показывает пустое окно (даже если я установил для параметра visibleAtLaunch значение 0) и ничего не происходит;http://korniltsev.ru/p/jz6mvk0.png

код, который я пытаюсь использовать, находится здесь:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    NSUserNotification * clicked = [[aNotification userInfo]
            objectForKey:NSApplicationLaunchUserNotificationKey];
    if (clicked){
        [NSApp terminate:self];
        return;
    }
...

Я отправляю такие уведомления

NSUserNotificationCenter *manager = [NSUserNotificationCenter defaultUserNotificationCenter];
NSUserNotification *urlNotification = [[NSUserNotification alloc]init];
[urlNotification setTitle:appName];
[urlNotification setInformativeText:url];
[manager deliverNotification:urlNotification];

Что я делаю неправильно?


person Korniltsev Anatoly    schedule 27.07.2012    source источник


Ответы (1)


[NSApp terminate:self] имеет много побочных эффектов. Вы уверены, что эти побочные эффекты не создают ваше пустое окно? Пробовали ли вы немедленно вызвать [NSApp terminate:self] в applicationDidFinishLaunching и убедиться, что ваше приложение завершает работу корректно в каждом случае? Если это не так, вам, вероятно, придется посмотреть, что вы делаете в контроллере документов вашего приложения (если он у вас есть) и applicationShouldTerminate.

person torrey.lyons    schedule 29.07.2012
comment
Если я вызову [NSApp terminate:self] прямо в applicationDidFinishLaunching, приложение будет правильно завершено. Если я изменю завершение вызова на exit(0), результат будет таким же. У меня нет контроллера документов. - person Korniltsev Anatoly; 30.07.2012