1

私はosxネイティブ通知を機能させるために働いています。通知を作成することはできますが、didActivateNotificationを機能させることができません。didActivateNotificationを使用して、ウィンドウにフォーカスを合わせ、通知センターから通知を削除できるようにします。

これが私のコードです:notice.m

#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];
}

これは適切に発火しています:

NSLog(@"Notification - Show it");

しかし、これはそうではありません:

NSLog(@"Notification - Clicked");

助言がありますか?ありがとう

4

1 に答える 1

6

おそらく、デリゲートをNSUserNotificationCenter次のように設定する必要があります。

NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
center.delegate = self;

Noticeまた、クラスがNSUserNotificationCenterDelegateプロトコルを実装していることを確認する必要があります。

于 2012-11-03T00:21:33.757 に答える