我有一個UILocalNotification成立,而據我可以看到它我有5個不同的場景:如何查看通知結果中的應用程序狀態?
- 的應用程序沒有運行,用戶選擇查看的通知,所以啓動應用程序。
- 該應用程序未運行,用戶選擇關閉通知,然後在稍後的日期打開應用程序。
- 該應用程序正在後臺運行,用戶選擇查看通知,因此它將應用程序置於前臺。
- 該應用程序正在後臺運行,用戶選擇關閉通知,然後打開該應用程序,以便在稍後的日期將其顯示在前臺。
- 該應用程序在前臺運行。
我該如何處理這5種不同的場景?
我有一個UILocalNotification成立,而據我可以看到它我有5個不同的場景:如何查看通知結果中的應用程序狀態?
我該如何處理這5種不同的場景?
把你的代碼放到application:didFinishLaunchingWithOptions:
。在 的行動NSDictionary
中,您將找到有關 通知的信息。
如果本地 通知仍處於活動狀態並採取相應措施,您可以再次檢查application:didFinishLaunchingWithOptions:
。
把你的代碼放到applicationWillEnterForeground:
再次在同一地點,只是檢查是否有活動的本地通知。
在這裏您可以檢查application:didReceiveLocalNotification:
並通知用戶與否。
不完全確定你在做什麼,但以下可能會回答你的問題。
當系統提供了一個本地通知,有幾個事情都可能發生,這取決於應用程序狀態和通知的類型。如果應用程序不是最前面和可見的,則系統將顯示警報消息,標記應用程序並播放聲音 - 無論通知中是否指定。如果通知是警報,並且用戶點擊操作按鈕(或者,如果設備被鎖定,拖動打開操作滑塊),則啓動應用程序。在application:didFinishLaunchingWithOptions:方法中,應用程序委託可以使用UIApplicationLaunchOptionsLocalNotificationKey鍵從傳入的選項字典中獲取UILocalNotification對象。委託可以檢查通知的屬性,並且如果通知在其userInfo字典中包含自定義數據,則它可以訪問該數據並相應地處理它。另一方面,如果本地通知僅標記應用程序圖標,並且用戶作爲響應啓動應用程序,則應用程序:didFinishLaunchingWithOptions:方法被調用,但選項字典中不包含UILocalNotification對象。
如果應用程序是最重要的,並且在系統傳遞通知時可見,則不顯示警報,不會顯示圖標,也不會播放聲音。但是,應用程序:didReceiveLocalNotification:如果應用程序委託實現它,則會被調用。將UILocalNotification實例傳遞給此方法,委託可以檢查其屬性或訪問userInfo字典中的任何自定義數據。