2013-04-18 6 views
0

Я пытаюсь использовать NSUserNotificationCenter. Я могу успешно отправлять уведомления. Я использую обратный вызов ShouldPresentNotification на NSUserNotificationCenterDelegate для представления уведомлений, даже если приложение работает на переднем плане.NSUserNotificationCenterDelegate методы, не вызываемые только одной машиной

Это отлично работает, за исключением одной из моих машин!

Я лишил код до его основного примера. Все мои машины работают 10.8.3 и Mono 2.10.12. На моем Macbook Pro 2008 и rMBP коллеги 2012 года все работает как исключение. Однако, на моем идентичном 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

Это теперь работает где-то между обновлением MonoMac, Mono и OS X на моей машине.

1

Ok мы имели точно такую ​​же ошибку. Сначала мы связались с Xamarin, и они исправили его в последнем коде. Во-вторых, это произошло из-за того, что Делегат делегата (отличное имя, которого я знаю) и параметр ShouldPresent делегировали. Если вы хотите переопределить параметр ShouldPresent, сделайте это вместо этого в своем NSUserNotificationCenter.Delegate.

Я надеюсь, что это ясно. У нас есть разрешенная запись в bugzille по адресу https://bugzilla.xamarin.com/show_bug.cgi?id=11456

+0

Привет, @penderi, спасибо за ответ! Я думаю, вы тоже ответили в моей теме на форумах Xamarin некоторое время назад :) Я думаю, что моя проблема немного другая ... Мой тестовый пример точно так же написан, я не переписываю оба объекта. И он работает точно так, как ожидалось, все ожидают одной из моих машин! – TheNextman

+1

lol dah! Видел это и думал, что смогу помочь LOL! Удачи! – penderi