我正在尝试使用NSUserNotificationCenter
. 我能够成功发送通知。我正在使用ShouldPresentNotification
回调NSUserNotificationCenterDelegate
来显示通知,即使应用程序在前台运行也是如此。
这很好用,除了在我的一台机器上!
我已将代码精简为最基本的示例。我所有的机器都运行 10.8.3 和 Mono 2.10.12。在我的 2008 Macbook Pro 和同事的 2012 rMBP 上,一切正常。但是,在我相同的 2012 rMBP 上,如果应用程序在前台,则不会显示通知。事实上,在这台机器上,并且仅在这台机器上,没有NSUserNotificationCenterDelegate
调用任何方法。
请注意,通知仍然在这台机器上传递 - 通知有效 - 当应用程序处于前台时它不会呈现(因为从不调用委托方法)。
如果有人对可能导致此行为的设置或配置有所了解,或者是否有某种机制可以用来调试此行为,我将不胜感激。
这是我的代码:
UNCShouldPresentNotification ShouldPresent = (a, b) => { return true; };
// Shared initialization code
void Initialize()
{
NSUserNotificationCenter.DefaultUserNotificationCenter.ShouldPresentNotification = this.ShouldPresent;
}
partial void notify(NSObject sender)
{
DoNotify();
}
[Export("doNotify")]
private void DoNotify()
{
NSUserNotification notification = new NSUserNotification();
notification.Title = notificationText.StringValue;
NSUserNotificationCenter.DefaultUserNotificationCenter.DeliverNotification(notification);
}