設備接到apns發來的通知,應用處理通知有以下幾種情況:
1. 應用還沒有加載
這時如果點擊通知的顯示按鈕,會調用didFinishLaunchingWithOptions,不會調用didReceiveRemoteNotification方法。
如果點擊通知的關閉按鈕,再點擊應用,只會調用didFinishLaunchingWithOptions方法。
2. 應用在前臺(foreground)
這時如果收到通知,會觸發didReceiveRemoteNotification方法。
3.應用在后臺
(1)此時如果收到通知,點擊顯示按鈕,會調用didReceiveRemoteNotification方法。
(2)點擊關閉再點擊應用,則上面兩個方法都不會被調用這時,只能在applicationWillEnterForeground或者applicationDidBecomeActive,根據發過來通知中的badge進行判斷是否有通知,然后發請求獲取數據
通過上面分析可以得知,如果app進程沒有啟動,當接收到通知的時候,點擊通知欄打開app不會調用didReceiveRemoteNotification方法,那么就需要在didFinishLaunchingWithOptions方法中獲取通知內容,代碼如下:
/** app進程被殺死后,啟動app獲取推送消息 */
NSDictionary * userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
如上,只要在didFinishLaunchingWithOptions方法中調用這一行代碼,獲取到的userInfo 就是 推送過來的內容。