NSUserNotificationCenterDelegate методы, не вызываемые только на одной машине
Я пытаюсь использовать NSUserNotificationCenter
, Я могу доставлять уведомления успешно. Я использую ShouldPresentNotification
обратный звонок на NSUserNotificationCenterDelegate
представлять уведомления, даже когда приложение работает на переднем плане.
Это прекрасно работает, кроме как на одной из моих машин!
Я сократил код до самого простого примера. Все мои машины работают 10.8.3 и Mono 2.10.12. На моем Macbook Pro 2008 года и rMBP коллеги 2012 года все работает как положено. Однако на моем идентичном rMBP 2012 года уведомление не отображается, если приложение находится на переднем плане. На самом деле, на этой машине, и только на этой машине, ни один из 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 ответа
Теперь это работает, где-то между обновлением MonoMac, Mono и OS X на моей машине.
Хорошо, у нас была точно такая же ошибка. Сначала мы связались с Xamarin, и они исправили это в самом последнем коде. Во-вторых, это произошло из-за переопределения ОБА делегата-делегата (большое имя, которое я знаю) и настройки ShouldPresent. Если вы хотите переопределить параметр ShouldPresent, вместо этого сделайте это в NSUserNotificationCenter.Delegate.
Надеюсь, это понятно. У нас есть исправленная запись об ошибке на https://bugzilla.xamarin.com/show_bug.cgi?id=11456