我正在尝试发送本地通知,它看起来像这样:
NSUserNotification *notification = [[NSUserNotification alloc] init];
//set title, subtitle, and sound
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
但是通知没有出现。我知道,如果应用程序位于最前面,但有时会发送通知,但在交付时则不会。在系统首选项中,我确保允许来自我的应用程序的通知,我甚至覆盖了userNotificationCenter:shouldPresentNotification:方法以始终返回YES,但它仍然不会显示通知。
最令人困惑的是,在我更新到Mavericks之前,一切正常。我想在更新中发生了一些变化,但我无法弄清楚是什么。
感谢您的帮助。
答案 0 :(得分:4)
我的猜测是nil
。确保您要分配(有效和非零)title
或informativeText
。
我认为其他属性(例如otherButtonTitle
)的值无效可能会阻止通知显示。
您的控制台中是否有任何错误消息?
使用调试器或NSLog()
语句来评估分配给通知的值。如果NSUserNotification
指针为零,您也可以看到此问题(不是您发布的代码的情况,但值得一提)。
以下是适用于Mac OS X 10.9(Mavericks)的app委托的最小测试:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSUserNotificationCenter* unc = [NSUserNotificationCenter defaultUserNotificationCenter];
unc.delegate = self;
NSUserNotification* notice = [[NSUserNotification alloc] init];
notice.title = @"title"; // notifications need a title, or informativeText at minimum to appear on screen
//notice.informativeText = @"informativeText";
NSLog(@"notification: %@, notification center:%@", notice, unc);
[unc deliverNotification:notice];
}
// The notifications will always dispaly even if we are in the foreground
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification
{
return YES;
}