我正在尝试使用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);
}
答案 0 :(得分:1)
好的,我们有完全相同的错误。 首先,我们联系了Xamarin,他们已经在最新的代码中修复了它。 其次是由于覆盖了代表代表(我知道的名字)和ShouldPresent设置。 如果要覆盖ShouldPresent设置,请在NSUserNotificationCenter.Delegate中执行此操作。
我希望这很清楚。我们在https://bugzilla.xamarin.com/show_bug.cgi?id=11456
处已经解决了bugzille条目答案 1 :(得分:0)
现在可以在我的机器上更新MonoMac,Mono和OS X之间。