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

Другие вопросы по тегам