仅在一台计算机上不调用NSUserNotificationCenterDelegate方法

时间:2013-04-18 18:48:52

标签: mono monomac xamarin.mac nsusernotificationcenter

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

2 个答案:

答案 0 :(得分:1)

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

我希望这很清楚。我们在https://bugzilla.xamarin.com/show_bug.cgi?id=11456

处已经解决了bugzille条目

答案 1 :(得分:0)

现在可以在我的机器上更新MonoMac,Mono和OS X之间。