iOS开发中点击推送跳转到指定页面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53320460

消息推送在现在的App中很常见,但同一个App中推送的消息可能有多种类型,点击推送需要跳转到不同的指定页面。

做法:

我们在接收到推送的时候发送通知,每个页面都接收通知,如果有通知就在当前页面进行页面的跳转跳转到指定页面。

如果在每个页面中都添加接收通知的代码会很麻烦,我们可以将接收通知的代码添加到基类中,这样就简单、方便了许多。可有些项目中的代码中可能没有基类,就像我们公司中的这个项目,那也没问题,我们可以为视图控制器添加一个分类,将接收通知的代码添加到分类中,再在pch文件中导入此分类。

接收推送发送通知的代码:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

//关闭友盟自带的弹出框

    [UMessage setAutoAlert:NO];

    [UMessage didReceiveRemoteNotification:userInfo];

     [[NSNotificationCenter defaultCenter] postNotificationName:@"pushNoti" object:nil];

}

接收通知进行页面跳转的代码,此代码在视图控制器的分类中:

+ (void)load

{

Method m1;

Method m2;

// 运行时替换方法

    m1 = class_getInstanceMethod(self, @selector(statisticsViewWillAppear:));

    m2 = class_getInstanceMethod(self, @selector(viewWillAppear:));

method_exchangeImplementations(m1, m2);

    m1 = class_getInstanceMethod(self, @selector(statisticsViewWillDisappear:));

    m2 = class_getInstanceMethod(self, @selector(viewWillDisappear:));

method_exchangeImplementations(m1, m2);

}

- (void) statisticsViewWillAppear:(BOOL)animated

{

    [self statisticsViewWillAppear:animated];

    [MobClick beginLogPageView:NSStringFromClass([self class])];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(push) name:@"pushNoti" object:nil];

}

-(void) statisticsViewWillDisappear:(BOOL)animated

{

    [self statisticsViewWillDisappear:animated];

    [MobClick endLogPageView:NSStringFromClass([self class])];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"pushNoti" object:nil];

}

- (void)push{

NotificationVC * notiVC = [[NotificationVC alloc] init];

    notiVC.hidesBottomBarWhenPushed = YES;

    [self.navigationController pushViewController:notiVC animated:YES];

}

该项目中之前的友盟统计就添加到了该分类中.

好了,本篇博客的主要内容就这些,谢谢阅读。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏娱乐心理测试

小程序,公众号,App的微信支付详解

9346
来自专栏py+selenium

linux 安装weblogic12.1.3.0步骤

需注意:fmw_12.1.3.0.0_wls.jar     需要jdk1.7.0_15以上的版本

1.1K5
来自专栏ionic3+

ng-zorro-mobile,踩坑记

ionic3和ionic4差别是比较大的,所以ionic3二次封装的组件基本是不能直接用在ionic4上。ng-zorro-mobile并不是依赖ionic的组...

1.1K3
来自专栏Netkiller

PHP高级编程之守护进程

PHP高级编程之守护进程 http://netkiller.github.io/journal/php.daemon.html 摘要 2014-09-01 发表...

3947
来自专栏陈满iOS

报错笔记:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

https://stackoverflow.com/questions/24337791/exc-bad-instruction-code-exc-i386-i...

2.1K2
来自专栏ShaoYL

代理和通知

2115
来自专栏AILearning

Apache Zeppelin 中 JDBC通用 解释器

概述 JDBC解释器允许您无缝地创建到任何数据源的JDBC连接。 在运行每个语句后,将立即应用插入,更新和升级。 到目前为止,已经通过以下测试: ...

3447
来自专栏bboysoul

如何黑入安卓手机(ezsploit)

安装很简单clone git clone https://github.com/rand0m1ze/ezsploit.git cd ezsploit ch...

1532
来自专栏沃趣科技

ASM 翻译系列第三十六弹:ACFS磁盘组的重平衡操作

原作者:Bane Radulovic 译者: 魏兴华 审核: 魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy....

36711
来自专栏LinXunFeng的专栏

iOS - FTPManager的简单使用及常见问题

1734

扫码关注云+社区

领取腾讯云代金券