當server向client投送通知時,client有如下幾種狀況:app
1. 應用程序處於關閉狀態,這時通知被顯示;不管是點擊應用圖標仍是點擊通知,系統都會啓動應用,並調用其代理方法,(application:didFinishLaunchingWithOptions:),經過launchOptions來傳遞通知。函數
if (launchOptions) {代理
NSDictionary* pushNotificationKey = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];server
if (pushNotificationKey) {對象
//這裏定義本身的處理方式it
}io
}cli
2. 應用程序處於background狀態,這時通知被顯示。若是點擊通知,應用調用application:didReceiveRemoteNotification:方法或application:didReceiveLocalNotification:方法,若是點擊應用圖標,則不會自動執行上面的方法。object
3. 應用程序處於foreground狀態,這時通知不會被顯示。應用程序直接調用(由於應用在前臺)其代理函數application:didReceiveRemoteNotification:方法或application:didReceiveLocalNotification:方法,傳遞響應的通知對象。程序