2012-09-24 39 views
1

我有一個基本的鬧鐘功能的應用程序。在我的applicationWillResignActive:方法中,我設置了創建通知以啓動警報。這項工作非常好,我相信這是做到這一點的正確方法(讓我知道如果你認爲有更好的方法)。iOS 6本地通知失敗,當手機鎖定應用程序打開

只有在特定情況下,僅在iOS 6上,當應用程序未「退出」(主鍵永不按下),但用戶僅鎖定電話或手機自動鎖定時,通知不會關閉。

我已經通過代碼追蹤,並確實正在創建的通知和它的iOS 5

這裏工作完全是我的代碼:

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    [UIApplication sharedApplication].idleTimerDisabled = NO; 

    [alarm setupForBackground]; 
    if ([alarm isRunning]) { 
     [alarm stop]; 
    } 
} 

這裏是通知的創建方法:

- (void)setupForBackground 
{ 
    UILocalNotification* alarmNotification = [[UILocalNotification alloc] init]; 
    if (alarmNotification) { 
     alarmNotification.fireDate = alarmDate; 
     alarmNotification.timeZone = [NSTimeZone defaultTimeZone]; 
     alarmNotification.repeatInterval = 0; 
     alarmNotification.soundName = @"NotificationSound.aif"; 
     [[UIApplication sharedApplication] scheduleLocalNotification:alarmNotification]; 
    } 
} 

我一直在尋找一個答案,我找不到任何關於通知變化的事情。謝謝你的幫助。

回答

1

我有一個半解決方案。顯然,如果您將警報體添加到通知中,那麼它就可以工作。

我的看法是,這是iOS 6中的一個錯誤。正如我所提到的,它在iOS 5中工作,文檔沒有提及有這樣的要求,並且如果應用程序退出,通知在沒有AlertBody的情況下工作主頁按鈕被按下)。

仍然好奇我的理解是否正確,如果我應該向蘋果提交錯誤報告。

想到有人嗎?

+0

由於關閉應用程序和將應用程序鎖定在應用程序打開狀態之間的功能不同,我認爲它是一個錯誤並向Apple提交了一個錯誤報告。 – Luke

+0

我將此標記爲解決方案,因爲我還沒有發現任何其他解決方案,並且Apple尚未響應該錯誤報告。 – Luke

+0

由於該應用程序仍處於活動狀態,因此我認爲它正在觸發,但不會看到屏幕上彈出的內容,您的AppDelegate正在接收'didReceiveLocalNotification'調用。嘗試用你的AppDelegate的方法實現某些東西。 –

相關問題