2011-08-21 43 views
1

我有一個UILocalNotification成立,而據我可以看到它我有5個不同的場景:如何查看通知結果中的應用程序狀態?

  1. 的應用程序沒有運行,用戶選擇查看的通知,所以啓動應用程序。
  2. 該應用程序未運行,用戶選擇關閉通知,然後在稍後的日期打開應用程序。
  3. 該應用程序正在後臺運行,用戶選擇查看通知,因此它將應用程序置於前臺。
  4. 該應用程序正在後臺運行,用戶選擇關閉通知,然後打開該應用程序,以便在稍後的日期將其顯示在前臺。
  5. 該應用程序在前臺運行。

我該如何處理這5種不同的場景?

回答

2
  1. 把你的代碼放到application:didFinishLaunchingWithOptions:。在 的行動NSDictionary中,您將找到有關 通知的信息。

  2. 如果本地 通知仍處於活動狀態並採取相應措施,您可以再次檢查application:didFinishLaunchingWithOptions:

  3. 把你的代碼放到applicationWillEnterForeground:

  4. 再次在同一地點,只是檢查是否有活動的本地通知。

  5. 在這裏您可以檢查application:didReceiveLocalNotification:並通知用戶與否。

0

不完全確定你在做什麼,但以下可能會回答你的問題。

documentation

當系統提供了一個本地通知,有幾個事情都可能發生,這取決於應用程序狀態和通知的類型。如果應用程序不是最前面和可見的,則系統將顯示警報消息,標記應用程序並播放聲音 - 無論通知中是否指定。如果通知是警報,並且用戶點擊操作按鈕(或者,如果設備被鎖定,拖動打開操作滑塊),則啓動應用程序。在application:didFinishLaunchingWithOptions:方法中,應用程序委託可以使用UIApplicationLaunchOptionsLocalNotificationKey鍵從傳入的選項字典中獲取UILocalNotification對象。委託可以檢查通知的屬性,並且如果通知在其userInfo字典中包含自定義數據,則它可以訪問該數據並相應地處理它。另一方面,如果本地通知僅標記應用程序圖標,並且用戶作爲響應啓動應用程序,則應用程序:didFinishLaunchingWithOptions:方法被調用,但選項字典中不包含UILocalNotification對象。

如果應用程序是最重要的,並且在系統傳遞通知時可見,則不顯示警報,不會顯示圖標,也不會播放聲音。但是,應用程序:didReceiveLocalNotification:如果應用程序委託實現它,則會被調用。將UILocalNotification實例傳遞給此方法,委託可以檢查其屬性或訪問userInfo字典中的任何自定義數據。

相關問題