iOS推送、3D touch、分享等进入APP的不同跳转方式

一、当前以极光推送为例,如何从通知栏点击进入到APP的不同页面

APPDelegate.m文件

实现接受到远程推送的通知方法,在我们点击通知栏的时候,这个方法仍然会走一次(这里介绍的方法是改变root后进行跳转,也可直接跳转)

//IOS 7 Support Required --》接受到远程通知
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    // IOS 7 Support Required
    if (application.applicationState ==UIApplicationStateActive) {
       // 转换成一个本地通知,显示到通知栏,你也可以直接显示出一个alertView,只是那样稍显aggressive:)
        UILocalNotification *localNotification = [[UILocalNotificationalloc] init];
        localNotification.userInfo = userInfo;
        localNotification.soundName =UILocalNotificationDefaultSoundName;
        localNotification.alertBody = [[userInfoobjectForKey:@"aps"]objectForKey:@"alert"];
//        localNotification.fireDate = [NSDate date];

        [[UIApplicationsharedApplication] scheduleLocalNotification:localNotification];

    } else {

        [JPUSHServicehandleRemoteNotification:userInfo];

        [[AccountManagersharedInstance]changeRootViewControllerWithHome]; //改变rootviewController为主页面(我这里为tabbar的第一个页面)

       MyNavigationViewController *myNavi = self.window.rootViewController.childViewControllers[0]; 拿到当前controller

        if ([AccountManagersharedInstance].isLogin) {

            //传入一个消息的model
            MessageListModel *model = [[MessageListModelalloc] init];
            [model setValuesForKeysWithDictionary:userInfo];
            [selfaddNotification:model]; //在这个方法中设置不同的跳转

        } else {

            UserLoginViewController *login = [[UserLoginViewControlleralloc] init];
            [myNavi pushViewController:loginanimated:YES]; //未登录是的跳转
        }
    }
    completionHandler(UIBackgroundFetchResultNewData);

    [self.rootViewControlleraddNotificationCount];
}   

二、3D touch进入到APP的不同页面(这里简单的只有一个跳转,如果需要,可通过shoratitem字段判断)

pragma mark — 3D Touch 入口方法
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{

    [[AccountManagersharedInstance] changeRootViewControllerWithHome];

    MyNavigationViewController *myNavi =self.window.rootViewController.childViewControllers[0];

    if ([AccountManagersharedInstance].isLogin) {

        ExpandViewController *expandVC = [[ExpandViewControlleralloc] init];
        [myNavi pushViewController:expandVCanimated:YES];

    } else {

        UserLoginViewController *login = [[UserLoginViewControlleralloc] init];
        [myNavi pushViewController:loginanimated:YES];
    }
}

另外,
也可直接在当前的页面进行不同跳转
只需将以上的rootViewController.childViewControllers[0]改为rootViewController.selectedViewController

eg:
//跳到登录页面

      UserLoginViewController *loginVC = [[UserLoginViewControlleralloc] init];
      [((UINavigationController *)tabBarController.selectedViewController)pushViewController:loginVC animated:YES];
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sailip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值