[iuud8]ios不同版本下推送本地通知
“推送很重要,无论是本地还是服务器”。虽然我看不出来,但毕竟产品经理强烈那么说,那就当他很重要好了。。。。
本地推送之前首先需要申请权限,在ios8以后与ios8以后是两套不同的API
//推送if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0){if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeSound];}}else{if ([[UIApplication sharedApplication]currentUserNotificationSettings].types==UIUserNotificationTypeNone) {[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];}}
把这段话注册到
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
函数中去,这样,在程序第一次启动的时候,如果没有通知权限,就是弹出提示,向用户来请求权限;
以上就是请求权限的不同版本处理!!!
发送推送的时候就不需要在区别系统版本了,可以一套代码解决
//定义本地通知对象UILocalNotification *notification=[[UILocalNotification alloc]init];//设置调用时间NSDate *now = [NSDate date];notification.fireDate=[now dateByAddingTimeInterval:10.0];//通知触发的时间,10s以后//使用本地时区notification.timeZone=[NSTimeZone defaultTimeZone];//通知重复次数notification.repeatInterval=1;//设置通知属性notification.alertBody=@"殿下,您的体力回满了。"; //通知主体notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数notification.alertAction=@"打开应用"; //待机界面的滑动动作提示
// notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片notification.soundName= UILocalNotificationDefaultSoundName;//通知声音notification.applicationIconBadgeNumber = [[[UIApplication sharedApplication] scheduledLocalNotifications] count]+1;//设置用户信息//add key 给这个通知增加key 便于半路取消。nfkey这个key是我自己随便起的。// 假如你的通知不会在还没到时间的时候手动取消 那下面的两行代码你可以不用写了。NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:100],@"nf_powerFull",nil];[notification setUserInfo:dict];//调用通知[[UIApplication sharedApplication] scheduleLocalNotification:notification];[notification release];
很简单的代码;两点需要注意的
notification.applicationIconBadgeNumber
就是应用图标上右上角那个小红点,表示收到的推送数量,因为,我们在启动游戏或者从后台激活游戏的时候,需要重新设置它为0
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];
第二点:
[notification setUserInfo:dict];
如果还没开始推送的时候,用户就主动点开应用了,此时如果想主动取消该条推送的话就该用到这条设置的属性了
NSArray *narry=[[UIApplication sharedApplication] scheduledLocalNotifications];NSUInteger acount=[narry count];if (acount<1) {return;}for (int i=0; i<acount; i++) {UILocalNotification *myUILocalNotification = [narry objectAtIndex:i];NSDictionary *userInfo = myUILocalNotification.userInfo;NSNumber *obj = [userInfo objectForKey:@"nf_powerFull"];int mytag=[obj intValue];if (mytag==100) {[[UIApplication sharedApplication] cancelLocalNotification:myUILocalNotification];return;}}
这样,我们就可以移除指定的一条推送。当然还有一种简单粗暴的方法:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
直接移除掉所有的本地推送。
以上!
[iuud8]ios不同版本下推送本地通知相关推荐
- android每日定时推送通知,Android使用JobScheduler定期推送本地通知实例代码
Android5.0之后提供了JobService和JobScheduler,用于在稍后的某个时间点或者当满足某个特定的条件时执行一个任务.使用JobScheduler,我们可以在用户一段时间没有使 ...
- Android,ios,安卓app推送消息通知,java后台向手机推送app的通知教程
文章目录 一.业务介绍 1.1 产品简介 1.2 名词解释 1.3 消息推送流程 二.应用创建 三.客户端 SDK 集成 3.1 Android 3.2 iOS 四.服务端推送 4.1 服务端消息下发 ...
- iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送、本地推送
iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送本地推送 2015-05-03 14:12 3510人阅读 评论(0) 收藏 举报 本文章已收录于: iOS知识库 分类: [IO ...
- 在Unity3D中实现安卓平台的本地通知推送
[前言] 对于手游来说,什么时候需要推送呢?玩过一些带体力限制的游戏就会发现,我的体力在恢复满后,手机会收到一个通知告诉我体力已完全恢复了.这类通知通常是由本地的客户端发起的,没有经过服务端. 在安卓 ...
- iOS实现本地通知(local notification)的方法
iOS 的本地通知(local notification)用于基于时间行为的通知,比如有关日历或者 todo 列表的小应用.另外应用如果在后台执行,iOS 允许它在受限的时间内运 行,它也会发现本地通 ...
- iOS 远程通知(Remote Notification)和本地通知(Local Notification)
ios通知分为远程通知和本地通知,远程通知需要连接网络,本地通知是不需要的,不管用户是打开应用还是关闭应用,我们的通知都会发出,并被客户端收到 我们使用远程通知主要是随时更新最新的数据给用户,使用本地 ...
- iOS监听模式系列之本地通知Notification
本地通知 本地通知是由本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟定时.待办事项提醒,又或者一个应用在一段时候后不使用通常会提示用户使用此应用等都是本地通知.创建一个本地通知通常分为以下几 ...
- iOS开发---本地通知(UILocalNotification)
iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知. 本地通知是由本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟定时.待办事项提醒,又或者一个应用在一段 ...
- iOS app处于后台/被杀死的状态仍可进行语言播报(iOS12.1以上在后台或者被杀死无法语音播报的解决方案)【适配iOS15的本地通知功能】
文章目录 前言 I iOS App处于后台/被杀死的状态仍可进行语言播报的实现 II 验证测试 2.1 测试工具 2.2 测试报文 2.3 测试方法 III 消息推送进阶指南:对即时性和送达率有要求的 ...
- 信鸽 ios tag推送 php,iOS 关于信鸽推送点击推送通知的处理
最近的项目中使用了推送模块,使用的是企鹅帝国的信鸽推送服务,关于具体怎么推送的,证书如何设置,我不再赘述,一来开发文档中已经讲的非常清楚,二来在网上一搜的话也能搜到一大堆:在这里主要写下关于推送的通知 ...
最新文章
- git和其他版本控制系统的区别
- Oracle 10g R2 数据库的克隆---物理拷贝克隆
- matlab imaqhwinfo
- Spark精华问答:DataFrame与RDD的主要区别在哪?
- Jenkins系列四通过脚本方式部署maven项目,maven聚合项目,前端VUE的springboot项目
- layui 动态添加的表单元素--select
- 左神直通BAT算法(进阶篇)-上
- jeDate日期控件 时间最大值最小值禁用的bug修改
- 分享PHP多功能在线工具箱网站源码,安装教程详解
- 利用Android9.0虚拟机的JVMTI技术实现一些黑科技
- 鸿蒙系统可以微信吗,鸿蒙系统可以用微信吗?微信鸿蒙版本下载-游戏大玩家...
- C++ Programming Basic acknowledge
- HKUST-Aerial-Robotics /grad_traj_optimizationPublic
- 教育知识与能力·中学
- from标签,label标签
- C语言学习———函数
- python怎么算数据平均数,python怎样求10个数的平均数
- Erlang快速入门(一)
- 计算机科学与技术专业考博课程,清华计算机科学与技术系 攻读博士学位研究生培养课程...
- Failed to process import candidates for configuration class [com.wjm.springcloud.Application]; neste
热门文章
- usage.txt-2
- Unity TextMesh Pro标记
- DeepFool论文翻译---DeepFool: a simple and accurate method to fool deep neural networks
- 我的八年硕博士生涯——CMU王赟写在入职Facebook之前
- LaTeX的下载安装及使用教程
- A+B,氵题一道,84种解法!大佬羡慕
- 微软代码签名证书使用指南(SignTool)
- U盘制作成启动盘后容量变小
- java公众号图片上传_调用微信公众号接口上传图片素材
- 解决MAC系统Big Sur 11无法安装cad注册机无权限 奔溃 闪退问题 AutoCAD 2021 for Mac CAD2021 中文版安装注册激活教程