zoukankan      html  css  js  c++  java
  • ios之极光推送消息收到以后对消息的处理总结

    当我们的APP收到推送消息后,通常需要根据推送内容点击消息进入到指定的页面

    这里讲一下收到推送消息后的处理,分为三种情况 :1.APP处于前台运行情况下

                                                      2.APP处于后台挂起情况下

                              3.APP未启动情况下

    前两种相对好处理一点,我是在didReceiveRemoteNotification方法里接受到消息后发一个通知给MainViewController,跳转界面

    具体如下:

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
        
        // Required, iOS 7 Support
        [JPUSHService handleRemoteNotification:userInfo];
        completionHandler(UIBackgroundFetchResultNewData);
        //    NSLog(@"%@",userInfo);
        _notDic = [NSMutableDictionary dictionary];
        [_notDic setObject:userInfo[@"ID"] forKey:@"myID"];
        [_notDic setObject:userInfo[@"PICPATH"] forKey:@"myPic"];
        //判断应用是在前台还是后台
        if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
            
            //第一种情况前台运行
            NSString *apnCount = userInfo[@"aps"][@"alert"];
            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"推送信息" message:apnCount delegate:self cancelButtonTitle:@"查看" otherButtonTitles:@"取消", nil];
            alert.delegate = self;
            [alert show];
            
        }else{
    
          //第二种情况后台挂起时
            [[NSNotificationCenter defaultCenter]postNotificationName:KJPUSHNOT object:nil userInfo:_notDic];
        }
        
    }
    

    第三种程序未启动时情况下,需要在didFinishLaunchingWithOptions方法里处理,而不能通过通知跳转页面,因为这时MainViewController还没有走viewDidLoad方法,是没办法接受通知的,具体代码如下:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        //判断是否是通过点击推送消息进入的APP
        NSDictionary *resultDic = launchOptions[@"UIApplicationLaunchOptionsRemoteNotificationKey"];
        if (resultDic) {//推送进入APP 
         self.window.rootViewController = wantVC;
        }else{//正常进入APP
        self.window.rootViewController = mainVC;
        }
          
        return YES;
    }
    
  • 相关阅读:
    CentOS6.5 安装 tomcat
    CentOS6.5 安装 jdk1.7
    CentOS6.5 mysql 5.5安装
    java使用split切割字符串的时候,注意转义字符
    hibernate中设置BigDeCimal的精度
    powerdesinger中建立一个表后,出现Existence of index的警告
    MySQL数据库一个字段对应多个值得模糊查询
    系统收到了多个不同的 Content-Disposition 标头。为了避免遭到 HTTP 响应拆分攻击,这种情况是不允许的。
    下载的文件名字当前时间(精确到秒)+ 随机数
    简单的poi导出excel文件
  • 原文地址:https://www.cnblogs.com/zk1947/p/6080722.html
Copyright © 2011-2022 走看看