简单总结一下推送消息的相应情况
1. 当程序处于关闭状态收到推送消息时,点击图标会调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 这个方法,那么消息给通过launchOptions这个参数获取到。
2. 当程序处于前台工作时,这时候若收到消息推送,会调用- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法
3. 当程序处于后台运行时,这时候若收到消息推送,如果点击消息或者点击消息图标时,也会调用- (void)application:(UIApplication*)application
didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法
4. 当程序处于后台运行时,这时候若收到消息推送,如果点击桌面应用图标,则不会调用didFinishLaunchingWithOptions和didReceiveRemoteNotification方法,所以无法获取消息
下面是针对以上4种情况做响应处理:
第一种情况:
1 2 3 4 5 6 |
if (launchOptions) { NSDictionary* pushNotificationKey = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; if (pushNotificationKey) { //这里定义自己的处理方式 } } |
第二、三种情况:
1 2 3 4 5 6 7 8 9 |
if (application.applicationState == UIApplicationStateActive) { //第二种情况 if ([[userInfo objectForKey:@"aps"] objectForKey:@"alert"]!=NULL) { [WLHelper showAlert:@"推送消息" msg:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]; } } else { //第三种情况 //这里定义自己的处理方式 } |
第四种情况: 目前还不确定如何弄