我是靠谱客的博主 疯狂世界,最近开发中收集的这篇文章主要介绍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];

最后

以上就是疯狂世界为你收集整理的iOS推送、3D touch、分享等进入APP的不同跳转方式的全部内容,希望文章能够帮你解决iOS推送、3D touch、分享等进入APP的不同跳转方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部