作者:Pikacode

原文链接:http://www.jianshu.com/p/67864e1c2085

本文获作者授权转载

或许很多童鞋还不知道,在 iOS 中收到推送通知时,如果 App 处于前台运行的情况下,推送的顶部弹窗是不会弹出来的。

然而就是有很多**的产品经理都会提出类似这样的**需求:

那就是在 App 处于前台时一样要弹出推送的窗口,而且还要能点击,能跳转到指定页面,甚至这一需求还涉及到了产品的核心功能。

今天 Pikacode 就跟大家分享一下自己写的小插件,仅仅只需 1、2 行代码,即可搞定这一需求。

EBForeNotification

在 App 处于前台时展示跟系统完全一样的推送弹窗和声音。获取推送内容,并且处理点击事件。

支持 iOS 7~10 beta,支持模拟器和真机运行。

效果

实际效果如下:

跟系统推送弹窗 UI 效果完全相同

可以自动获取 App 的应用名称,应用图标

弹窗时会自动隐藏系统状态栏、收起后自动显示系统状态栏

自带推送声音

时间及下方收拉条的颜色跟当前页面的背景颜色相同

自带点击事件,点击可获取推送内容,进行相应页面跳转

自带上滑手势,快速收起

自动在处于最前端的 controller 上进行弹窗

安装

1. 下载并在 Xcode 中 拖拽拷贝 EBForeNotification 文件夹至 Xcode 工程。

2. targets --> Build Settings --> 搜 other link --> 添加 -ObjC。

本地弹窗

在任意方法内调用以下任 1 行代码即可弹窗

#import "EBForeNotification.h"

{...

//普通弹窗(系统声音)

[EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示内容"}} soundID:1312];

//普通弹窗(指定声音文件)

[EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示内容"}} customSound:@"my_sound.wav"];

//带自定义参数的弹窗(系统声音)

[EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示内容"}, @"key1":@"value1", @"key2":@"value2"} soundID:1312];

//普通弹窗(指定声音文件)

[EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示内容"}, @"key1":@"value1", @"key2":@"value2"} customSound:@"my_sound.wav"];

...}

接收远程/本地推送后弹窗

接收远程/本地推送后,自动在前台展示推送弹窗及声音。

在 AppDelegate.m 中添加代码

//AppDelegate.m

#import "EBForeNotification.h"

//ios7 before

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

...

//系统声音弹窗

[EBForeNotification handleRemoteNotification:userInfo soundID:1312];

//指定声音文件弹窗

[EBForeNotification handleRemoteNotification:userInfo customSound:@"my_sound.wav"];

...

}

//ios7 later

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

...

//系统声音弹窗

[EBForeNotification handleRemoteNotification:userInfo soundID:1312];

//指定声音文件弹窗

[EBForeNotification handleRemoteNotification:userInfo customSound:@"my_sound.wav"];

...

completionHandler(UIBackgroundFetchResultNewData);

}

soundID 参数

iOS 系统自带的声音 id,系统级的推送服务默认使用的是三全音,id = 1312

监听并处理点击事件

添加 Observer 监听 EBBannerViewDidClick,获取推送内容,通过推送时自定义的字段处理自己逻辑,如:跳转到对应页面等。

接收到的推送内容类似以下:

{

"aps":

{

"alert":"推送内容",

"sound":"sound",

"badge":"3"

},

"key1":"跳转页面1"  //自定义此字段以跳转到相应页面

}

添加 Observer 获取自定义的字段,并处理:

#import "EBForeNotification.h"

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(eBBannerViewDidClick:) name:EBBannerViewDidClick object:nil];

-(void)eBBannerViewDidClick:(NSNotification*)noti{

if(noti[@"key1" == @"跳转页面1"]){

//跳转到页面1

}

}

ios10前台收到推送_IOS - 前台时的推送弹窗效果相关推荐

  1. php推送amp到百度,phpcms添加百度主动推送功能(发布时自动推送URL到百度站长平台)教程...

    百度最近取消了JS自动推送URL到站长平台的功能,用户只能使用主动推送,不过主动推送大多需要手动来实现,或是使用API接口对小白来说不太友好,这里小编整理了关于phpcms添加百度主动推送功能(发布时 ...

  2. ios10前台收到推送_iOS 13 beta 2 推送 | iOS 13 热门疑问解答

    朋友们周二早,今天这期分享主要是给大家解答几个 iOS 13 相关的热门问题. 今天的头条推送的是 HFP 的面膜,靠谱产品,有需求的朋友可以去他们的天猫旗舰店或者小程序商场看下. 是否可以直接升级 ...

  3. 极光推送flutter插件,前台收到推送后没有通知弹窗

    在激光推送Flutter插件中,有如下一个API: applyPushAuthority,注释原话是这样的:申请推送权限,注意这个方法只会向用户弹出一次推送权限请求(如果用户不同意,之后只能用户到设置 ...

  4. 个推推送,APP接收到推送后的操作(前台与非前台的处理不同)

    图1 个推推送服务框架图 原创作者http://www.jianshu.com/p/a9acc30e9ba6 首先,按照个推SDK集成指南配置好一个完整的工程.或者直接下载现有工程(需要修改bundl ...

  5. 推送通知/传感器/UIDynamic仿真(推送通知已适配iOS10)

    推送通知/传感器/UIDynamic 一.推送通知 1.推送通知简介 什么是推送通知 此处的推送通知与NSNotification没有任何关系 可以理解为,向用户推送一条信息来通知用户某件事情 作用: ...

  6. Bigdecimal 在从数据库获取数据后 和从前台获取的数据作比较时(值相等)

    1.做数值校验 ,Bigdecimal 在从数据库获取数据后 和从前台获取的数据作比较时(小数) 会出现 数据库取出的数据进度丢失 得到的结果是 false 解决方案 :先进行小数位保留 然后再作比较 ...

  7. 在项目推送到heroku时,执行命令heroku login出现press any key to open up the browser to login or q to exit这个,是怎么回事?

    press any key to open up the browser to login or q to exit在推送到heroku时,执行命令heroku login出现这个,是怎么回事?

  8. Web终端连接资产支持重新连接等操作,支持创建授权时自动推送账号,JumpServer堡垒机v3.1.0发布

    2023年3月20日,JumpServer开源堡垒机正式发布v3.1.0版本.在这一版本中,JumpServer支持对Web终端会话进行重新连接,用户可以在Web终端界面快速打开已经连接超时的会话,或 ...

  9. 信鸽 ios tag推送 php,iOS 关于信鸽推送点击推送通知的处理

    最近的项目中使用了推送模块,使用的是企鹅帝国的信鸽推送服务,关于具体怎么推送的,证书如何设置,我不再赘述,一来开发文档中已经讲的非常清楚,二来在网上一搜的话也能搜到一大堆:在这里主要写下关于推送的通知 ...

最新文章

  1. maven的仓库:本地和远程
  2. mysql数据库导入后莫名丢失,oracle导入丢失数据库
  3. leetcode103JAVA_[LeetCode] 103. Binary Tree Zigzag Level Order Traversal Java
  4. 信息孤岛影响_企业专访:以“信息化”冲破信息孤岛
  5. SQL Server-【知识与实战VIII】触发器(上)
  6. mysql 修改数据库密码
  7. 如何从JFrog Artifactory下载资源到本地
  8. cpu压力测试 Android,测试CPU和GPU性能压力(StressMyPC)
  9. js登录界面使用ajax连接数据库,js用ajax连接数据库数据
  10. vcpkg:If you are sure you want to rebuild the above packages, run the command with the --recurse opt
  11. 超五类网线和超六类网线的区别
  12. 【Word】双栏论文尾页文字齐平排版的实现
  13. 思维方式-《学会提问》书中的精髓:批判性思维是人类对抗人工智能的最后阵地。
  14. 网络中的IP地址(包括私网地址)
  15. 机器学习实战-决策树 java版代码开发实现
  16. 【Devc++】战斗1.0.2
  17. 【QT】linux下alsa库的移植和QT中音视频的处理笔记
  18. 硬件艺术家Cauchy吉林省机器人大赛智能无人仿真车竞速比赛赛后总结
  19. SVG进阶-SMIL动画
  20. 基于HBuilder 开发 项目之微信支付

热门文章

  1. 剑指offer - 二维数组中的查找
  2. 20140617 数组和链表的区别
  3. 提高HTML5 canvas性能的几种方法
  4. 条款三 : 操作符is或as优于强制转型
  5. echarts柱状图,改变柱状颜色
  6. (转)Nutz | Nutz项目整合Spring实战
  7. Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
  8. eclipse在Windows7 64 位下出现Unhandled event loop exception No more handles
  9. ApacheCN 捐赠名单 2019
  10. 《Scikit-Learn与TensorFlow机器学习实用指南》 第3章 分类