iOS开发 极光推送收到通知后跳转到指定页面
来源:互联网 发布:ipad程序员必备app 编辑:程序博客网 时间:2024/05/29 04:13
iOS在开放中,会使用到极光推送,然后收到推送时,往往需要跳转指定的界面,而跳转到指定界面时,又分为程序未杀死情况下的跳转和程序已杀死的跳转,即离线状况下的跳转:
当程序未杀死状况下的条状方法很简单:
// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
// Required
//LXPMessageBoxViewController是要跳转到的目的页面
//LXPTabBarController是根视图
LXPMessageBoxViewController *ctl = [[LXPMessageBoxViewControlleralloc] init];
LXPTabBarController *tabBar = (LXPTabBarController *)self.window.rootViewController;//获取window的跟视图,并进行强制转换
if ([tabBarisKindOfClass:[UITabBarControllerclass]]) {//判断是否是当前根视图
UINavigationController *nav = tabBar.selectedViewController;//获取到当前视图的导航视图
[nav.topViewController.navigationControllerpushViewController:ctl animated:YES];//获取当前跟视图push到的最高视图层,然后进行push到目的页面
}
NSDictionary * userInfo = response.notification.request.content.userInfo;
if([response.notification.request.triggerisKindOfClass:[UNPushNotificationTriggerclass]]) {
[JPUSHServicehandleRemoteNotification:userInfo];
}
completionHandler(); //系统要求执行这个方法
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
LXPMessageBoxViewController *ctl = [[LXPMessageBoxViewControlleralloc] init];
LXPTabBarController *tabBar = (LXPTabBarController *)self.window.rootViewController;
if ([tabBarisKindOfClass:[UITabBarControllerclass]]) {
UINavigationController *nav = tabBar.selectedViewController;
[nav.topViewController.navigationControllerpushViewController:ctl animated:YES];
}
// Required,For systems with less than or equal to iOS6
[JPUSHServicehandleRemoteNotification:userInfo];
}
当程序杀死的情况下,又是另一种方法进行跳转到指定页面:
程序杀死时,进入程序肯定会走
AppDelegate的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法
那么我们首先在这个方法里面判断字典,是经过哪种形式进入的程序
如果是经过推送启动的程序,那么使用这个方法:([LXPAppContext context].notificationUserInfo是把启动返回的字典保存到本地,是一个字典接收)
[LXPAppContextcontext].notificationUserInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
也就是我们在这里获取到了是经过什么启动的程序,接下来,我们只需要在首页读取上面获取到的字典,如果字典不为空,则进行指定操作:
比如我们的首页是
#import "LXPBaseHomeViewController.h"
那我们就在这个视图出现时调用以下方法
- (void)viewDidAppear:(BOOL)animated
{
[superviewDidAppear:animated];
if ([LXPAppContextcontext].notificationUserInfo) {//如果是从推送通知唤醒
[LXPAppContextcontext].notificationUserInfo =nil;//进入这里后要把保存的字典重新设置为nil吧,不然那会不听的执行这个方法
LXPMessageBoxViewController *ctl = [[LXPMessageBoxViewControlleralloc] init];
[self.navigationControllerpushViewController:ctl animated:YES];//跳转到指定页面
}
}
- iOS开发 极光推送收到通知后跳转到指定页面
- 151224收到推送通知后页面跳转
- iOS收到推送后,跳转到某一页面
- iOS收到推送后,跳转到某一页面
- 收到推送通知后页面跳转,当程序在后台,无论进入后台之前在哪个界面,点击收到的推送,跳转到指定界面的2个思路:
- iOS推送详解(二)收到通知跳到指定页面的处理办法
- 【iOS开发】iOS极光推送 点击推送消息跳转页面
- iOS开发中点击推送跳转到指定页面
- iOS - 收到远程推送后的页面跳转
- 极光推送怎么点击通知跳转页面?
- 极光推送-点击通知栏跳到指定页面
- ios推送 程序未启动,收到推送消息,打开应用后跳转到相应的活动页面的代码。
- iOS 远程推送(极光推送) 根据后台推送内容的不同跳转指定页面(不断更新)
- 收到推送后,处理页面跳转
- ionic集成极光推送之点击推送跳转到指定页面
- iOS 收到推送通知点击进入时 页面的跳转处理操作
- iOS APNS 极光推送 点击通知栏跳转应用相应页面
- 推送跳转到指定页面
- 享元模式 Flyweight Pattern
- 最大流——Luogu2762 [网络流24题]太空飞行计划问题
- Android开发之--上传图片到七牛云存储
- TableLatyou仿58得点击展开选择框
- kafka gc日志导致比较累赘的低端线下测试环境磁盘被写满了的处理方案
- iOS开发 极光推送收到通知后跳转到指定页面
- MYSQL SELECT SUM(IF()) CI框架使用SUM(IF())出错
- Oculus关闭VR电影制作部门,却留下如此美好的作品
- JRE与JDK的区别
- 案例—新闻客户端
- Hibernate_day04
- auc
- 把RecyclerView撸成 马 蜂 窝
- iOS 获取网络图片的尺寸