2013-04-18 4 views
0

NSUserNotificationCenter을 사용하려고합니다. 알림을 성공적으로 전달할 수 있습니다. 앱이 포 그라운드에서 실행 중일 때도 에 ShouldPresentNotification 콜백을 사용하여 알림을 표시합니다.NSUserNotificationCenterDelegate 메서드가 하나의 컴퓨터에서만 호출되지 않습니다.

내 컴퓨터 중 하나를 제외하고는 훌륭합니다.

나는이 코드를 가장 기본적인 예제에서 제외했다. 내 컴퓨터는 모두 10.8.3 및 Mono 2.10.12를 실행 중입니다. 내 2008 맥북 프로와 동료의 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

입니다. 이제는 내 컴퓨터에서 MonoMac, Mono 및 OS X를 업데이트하는 중입니다.

1

좋아. 먼저 Xamarin에 연락하여 가장 최근 코드에서 수정했습니다. 둘째, 위임 대리인 (내가 아는 위대한 이름)과 ShouldPresent 설정 모두를 재정의 할 예정이었습니다. ShouldPresent 설정을 덮어 쓰려면 NSUserNotificationCenter.Delegate에서 대신이 작업을 수행하십시오.

나는 분명히 희망합니다. 해결 된 bugzille 항목은 https://bugzilla.xamarin.com/show_bug.cgi?id=11456

+0

안녕하세요 @penderi 답장을 보내 주셔서 감사합니다! 나는 당신이 잠시 전에 Xamarin 포럼에서 내 스레드에서 대답했다고 생각합니다. 내 문제는 조금 다르다고 생각합니다 ... 나의 테스트 케이스는 정확히 쓰여졌 고, 나는 두 객체를 모두 덮어 쓰지 않습니다. 그리고 그것은 내 컴퓨터 중 하나를 기대하는 모든 사람들에게 예상대로 정확하게 작동합니다! – TheNextman

+1

롤! 그것을 보았고 내가 권 해낼 수 있다고 생각했다! 행운을 빌어 요! – penderi