2013-04-18 75 views
0

我正在嘗試使用NSUserNotificationCenter。我能夠成功發送通知。我在NSUserNotificationCenterDelegate上使用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

已解決bugzille條目現在可以在我的機器上更新MonoMac,Mono和OS X之間進行。

1

好了,我們有完全相同的錯誤。 首先,我們聯繫了Xamarin,並且他們已經修復了最新的代碼。 其次,這是因爲覆蓋委派代表(我知道的偉大名字)和ShouldPresent設置。 如果您想覆蓋ShouldPresent設置,請改爲在NSUserNotificationCenter.Delegate中執行此操作。

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

+0

嗨@penderi,謝謝你的回覆!我想你也在我的線程中回覆了Xamarin論壇上的一段時間:)我認爲我的問題有點不同......我的測試用例與寫入完全相同,我不覆蓋這兩個對象。它的工作原理與所有人期待的我的機器一樣! – TheNextman

+1

大聲笑!看到它,並認爲我可以幫助大聲笑!祝你好運! – penderi

相關問題