当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:方法,传递响应的通知对象。程序