2011-01-19 118 views
3

我有它的設計以特定的方式發揮作用,當它在前臺的運行鬧鐘應用程序,它收到一個本地通知,通過我的應用程序是日程。當用戶設置鬧鐘時,我的應用程序會創建本地通知。當本地通知觸發時,它會調用didReceiveLocalNotification方法來提醒用戶。問題是,如果我的應用程序在前臺運行,並且推送通知來自其他應用程序,則會顯示模式推送通知視圖,這會阻止我的應用程序在本地通知觸發時向用戶發出警報。只要我關閉推送通知模式視圖,那麼我的應用程序會觸發本地通知。有沒有解決的辦法?我問,因爲如果我的應用程序沒有在用戶安排它開火時發出警報,那麼它會違反設置警報的整個目的。iOS開發:推送通知,防止我的本地通知從發射

非常感謝你的智慧!

+0

不知道它要排隊與NSPostNow的NSNotificationQueue會工作。推送通知事件確實會觸發applicationDidResignActive,不是嗎? – Seyther 2011-03-08 07:23:26

回答

1

我不相信有辦法繞過它。您可能可以播放聲音或振動,但操作系統已經在使用推送通知提醒來要求​​用戶注意,因此,直到用戶處理第一個提示時才真正發佈另一個提示。當用戶同時安排兩個鬧鐘時,你如何處理事情?

4

有一個應用5種不同的狀態:

  • 前臺運行
  • 前景不活躍
  • Backgroung運行
  • Backgroung暫停
  • 沒有運行

當您啓動你的應用程序,它在「For eground Active「,那麼當顯示模態推送通知時,您的應用程序將轉到」Foreground Inactive「。

在本文檔中,蘋果表示(http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html):

如果它提供它的時候該應用程序在前臺處於非活動狀態,它會顯示警報,標記應用程序圖標或播放聲音 - 無論在UILocalNotification對象中指定。如果應用程序在前臺運行,則沒有警報,徽章或聲音;相反,如果委託實現它,應用程序將調用didReceiveLocalNotification:方法。

所以在前臺,application:didReceiveLocalNotification:被稱爲只有當你的應用程序SI活躍,而當您關閉模式通知它變得活躍。

這是邊界並沒有對這種情況下沒有解決方案。