設(shè)備接到apns發(fā)來的通知痘系,應(yīng)用處理通知有以下幾種情況:
1. 應(yīng)用還沒有加載
這時如果點擊通知的顯示按鈕,會調(diào)用didFinishLaunchingWithOptions,不會調(diào)用didReceiveRemoteNotification方法锡溯。
如果點擊通知的關(guān)閉按鈕,再點擊應(yīng)用哑姚,只會調(diào)用didFinishLaunchingWithOptions方法祭饭。
2. 應(yīng)用在前臺(foreground)
這時如果收到通知,會觸發(fā)didReceiveRemoteNotification方法叙量。
3.應(yīng)用在后臺
(1)此時如果收到通知倡蝙,點擊顯示按鈕,會調(diào)用didReceiveRemoteNotification方法绞佩。
(2)點擊關(guān)閉再點擊應(yīng)用寺鸥,則上面兩個方法都不會被調(diào)用這時,只能在applicationWillEnterForeground或者applicationDidBecomeActive,根據(jù)發(fā)過來通知中的badge進行判斷是否有通知品山,然后發(fā)請求獲取數(shù)據(jù)
通過上面分析可以得知胆建,如果app進程沒有啟動,當接收到通知的時候肘交,點擊通知欄打開app不會調(diào)用didReceiveRemoteNotification方法,那么就需要在didFinishLaunchingWithOptions方法中獲取通知內(nèi)容笆载,代碼如下:
/** app進程被殺死后,啟動app獲取推送消息 */
NSDictionary * userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
如上涯呻,只要在didFinishLaunchingWithOptions方法中調(diào)用這一行代碼凉驻,獲取到的userInfo 就是 推送過來的內(nèi)容。