0

我正在尝试使用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);
}
4

2 回答 2

1

好的,我们有完全相同的错误。首先,我们联系了 Xamarin,他们已经在最新的代码中修复了它。其次,这是由于覆盖了 Delegate 代表(我知道的好名字)和 ShouldPresent 设置。如果您想覆盖 ShouldPresent 设置,请在您的 NSUserNotificationCenter.Delegate 中执行此操作。

我希望这很清楚。我们在https://bugzilla.xamarin.com/show_bug.cgi?id=11456有一个已解决的 bugzille 条目

于 2013-05-07T14:49:10.007 回答
0

现在可以在我的机器上更新 MonoMac、Mono 和 OS X 之间的某个地方。

于 2013-06-25T18:32:42.560 回答