zoukankan      html  css  js  c++  java
  • iOS极光推送 点击推送消息跳转页面

    文章来自:http://www.jianshu.com/p/eaf07c4372a8

    AppDelegate.m

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
            [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound | UIUserNotificationTypeAlert)     categories:nil];
        } else {
            [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)
    #else
       categories:nil];
            [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)
    #endif
          categories:nil];
        }
        [APService setupWithOption:launchOptions];
    if (launchOptions) {
            NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    //这个判断是在程序没有运行的情况下收到通知,点击通知跳转页面
            if (remoteNotification) {
                NSLog(@"推送消息==== %@",remoteNotification);
                [self goToMssageViewControllerWith:remoteNotification];
            }
        }
    }
    - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
        [application registerForRemoteNotifications];
    }
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
        [APService registerDeviceToken:deviceToken];
        NSLog(@"%@", [NSString stringWithFormat:@"Device Token: %@", deviceToken]);
    }
    // 当 DeviceToken 获取失败时,系统会回调此方法
    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
        NSLog(@"DeviceToken 获取失败,原因:%@",error);
    }
    //下面的这个方法也很重要,这里主要处理推送过来的消息
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
        NSLog(@"尼玛的推送消息呢===%@",userInfo);
       // 取得 APNs 标准信息内容,如果没需要可以不取
        NSDictionary *aps = [userInfo valueForKey:@"aps"];
        NSString *content = [aps valueForKey:@"alert"]; //推送显示的内容
        NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; 
        NSString *sound = [aps valueForKey:@"sound"]; //播放的声音
        // 取得自定义字段内容,userInfo就是后台返回的JSON数据,是一个字典
        [APService handleRemoteNotification:userInfo];
        application.applicationIconBadgeNumber = 0;
        [self goToMssageViewControllerWith:userInfo];
        }
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        [application setApplicationIconBadgeNumber:0];   //清除角标
        [application cancelAllLocalNotifications];
    }

    下面是所跳转页面中的一些操作,主要是一个返回操作

    -(void)viewWillAppear:(BOOL)animated{
        [self.navigationController setNavigationBarHidden:NO animated:YES];
        [super viewWillAppear:YES];
        NSUserDefaults*pushJudge = [NSUserDefaults standardUserDefaults];
        if([[pushJudge objectForKey:@"push"]isEqualToString:@"push"]) {
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"02_03f@2x.png"] style:UIBarButtonItemStylePlain target:self action:@selector(rebackToRootViewAction)];
        }else{
            self.navigationItem.leftBarButtonItem=nil;
        }
    }
    - (void)rebackToRootViewAction {
        NSUserDefaults * pushJudge = [NSUserDefaults standardUserDefaults];
        [pushJudge setObject:@""forKey:@"push"];
        [pushJudge synchronize];//记得立即同步
        [self dismissViewControllerAnimated:YES completion:nil];
    }

     

     

     

     

    上面5个图里面的代码都在AppDelegate.m里面

    下面一个图是在MessageVC里面,就是你要跳转的那个页面


    其实这样做是很nice的,上面写的有时候会出现bug,可以去试一下



    文/我就叫CC怎么了(简书作者)
    原文链接:http://www.jianshu.com/p/eaf07c4372a8
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/wlsxmhz/p/5604913.html
Copyright © 2011-2022 走看看