我正在嘗試使用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);
}
嗨@penderi,謝謝你的回覆!我想你也在我的線程中回覆了Xamarin論壇上的一段時間:)我認爲我的問題有點不同......我的測試用例與寫入完全相同,我不覆蓋這兩個對象。它的工作原理與所有人期待的我的機器一樣! – TheNextman
大聲笑!看到它,並認爲我可以幫助大聲笑!祝你好運! – penderi