iOS Push Notification

来源:互联网 发布:centos安装ant 编辑:程序博客网 时间:2024/04/30 18:03
最近在做推送消息的时候遇到一个问题,就是当程序在后台运行时,这时候收到推送消息后,点击应用图标后无法拿到这个消息,至今还未解决,如有能够解决办法的朋友,忘不吝赐教。

简单总结一下推送消息的相应情况
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种情况做响应处理:

第一种情况:

if (launchOptions) {

NSDictionary* pushNotificationKey = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

       if (pushNotificationKey){

          //这里定义自己的处理方式

       }

}

第二、三种情况:

if (application.applicationState == UIApplicationStateActive){

//第二种情况

       if([[userInfo objectForKey:@"aps"]objectForKey:@"alert"]!=NULL) {

          [WLHelper showAlert:@"推送消息" msg:[[userInfoobjectForKey:@"aps"]objectForKey:@"alert"]];

       }

} else {

//第三种情况

//这里定义自己的处理方式

}

第四种情况: 目前还不确定如何弄,忘各路朋友帮忙解答,不胜感激

0 0
原创粉丝点击