问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用UILocalNotification是不是需要用真机才能测试的

发布网友 发布时间:2024-10-22 20:28

我来回答

1个回答

热心网友 时间:2024-10-23 22:54

iOS下的Notification的使用
Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程。本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notification的方法就完成了整个Notification流程了。
本地Notification所使用的对象是UILocalNotification,UILocalNotification的属性涵盖了所有处理Notification需要的内容。UILocalNotification的属性有fireDate、timeZone、repeatInterval、repeatCalendar、alertBody、 alertAction、hasAction、alertLaunchImage、applicationIconBadgeNumber、 soundName和userInfo。
UILocalNotification的调度
其中fireDate、timeZone、repeatInterval和repeatCalendar是用于UILocalNotification的调度。fireDate是UILocalNotification的激发的确切时间。timeZone是UILocalNotification激发时间是否根据时区改变而改变,如果设置为nil的话,那么UILocalNotification将在一段时候后被激发,而不是某一个确切时间被激发。 repeatInterval是UILocalNotification被重复激发之间的时间差,不过时间差是完全根据日历单位(NSCalendarUnit),例如每周激发的单位,NSWeekCalendarUnit,如果不设置的话,将不会重复激发。 repeatCalendar是UILocalNotification重复激发所使用的日历单位需要参考的日历,如果不设置的话,系统默认的日历将被作为参考日历。
UILocalNotification的提醒内容
alertBody、alertAction、hasAction和alertLaunchImage是当应用不在运行时,系统处理
UILocalNotification提醒是需要的内容。alertBody是一串现实提醒内容的字符串(NSString),如果 alertBody未设置的话,Notification被激发时将不现实提醒。alertAction也是一串字符(NSString),alertAction的内容将作为提醒中动作按钮上的文字,如果未设置的话,提醒信息中的动作按钮将显示为“View”相对文字形式。alertLaunchImage是在用户点击提醒框中动作按钮(“View”)时,等待应用加载时显示的图片,这个将替代应用原本设置的加载图片。hasAction是一个控制是否在提醒框中显示动作按钮的布尔值,默认值为YES。
UILocalNotification的其他部分
applicationIconBadgeNumber、soundName和userInfo将使UILocalNotification更完整。applicationIconBadgeNumber是显示在应用图标右上角的数字,这样让用户直接了解到应用需要处理的 Notification。soundName是另一个UILocalNotification用来提醒用户的手段,在Notification被激发之后将播放这段声音来提醒用户有Notification需要处理(有声音设置时,声音名称要加上扩展名,如sound1.mp3),如果不设soundName的话,Notification被激发是将不会有声音播放,除去应用特制的声音以外,也可以将soundName设为UILocalNotificationDefaultSoundName来使用系统默认提醒声音。userInfo是Notification用来传递数据的NSDictionary。
登记UILocalNotification
在设置完UILocalNotification对象之后,应用需要在系统Notification处理队列中登记已设置完的UILocalNotification对象。登记UILocalNotification * localNotification的方式为:
[[UIApplication sharedApplication] scheleLocalNotification:localNotification];
在有些时候,应用可能需要直接激发一个Notification而不是等一段时间在激发,应用可以以下的方式直接触发已设好的Notification:
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
处理UILocalNotification
在提醒框动作按钮被点击后,应用开始运行时,可以在 -(BOOL)application:didFinishLaunchingWithOptions:这个Application delegate方法中处理。可以通过以下方式来加载为最近未处理的Notification:
UILocalNotification * localNotif=[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
如果应用正在运行时,可以通过覆盖在Application Delegate中的方法-(void)application:didReceiveLocalNotification:来处理 Notification。作为方法的第二个参数为UILocalNotification对象,只需处理对象携带的userInfo来处理响应的动作。
取消UILocalNotification
可以使用以下两个方式来取消一个已经登记的Notification,第一个方式可以直接取消一个指定的Notification,第二个方式将会把该应用已登记的Notification一起取消
[[UIApplication sharedApplication] cancelLocalNotification:localNotification];

[[UIApplication sharedApplication] cancelAllLocalNotification];

一般需要应用程序后台运行时才会显示提示,前台运行时一般不显示提示。如果想要当应用程序前台应行时也显示提示,则可以通过将下面函数加到appDelegate中实现:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{

UIApplicationState state = application.applicationState;
// NSLog(@"%@,%d",notification,state);
if (state == UIApplicationStateActive) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提醒"
message:notification.alertBody
delegate:self
cancelButtonTitle:@"Close"
otherButtonTitles:@"OK",nil];
[alert show];
[alert release];
}
}

总结
本地Notification的机制在应用开发中非常有效,可以很好的帮助开发者管理一些指定时间需要发生的事件,例如闹钟类的应用。而且因为系统统一对Notification的管理,让同样的任务可以非常简单得被处理,而无需让应用浪费资源去等待事件的触发
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网络宣传文案心碎,句句获赞! 关于朋友圈上万人点赞转发的说说 人生看的很透彻的经典句子 超现实超扎心的说说大全2019最新 心脏血管堵塞吃什么食物 投资理财有什么前景 pp理财什么情况 P2P理财行业的前景如何? 中国目前的财富管理现状是什么情况? 呼吸皮沙发寿命多久 “皮沙发的呼吸寿命” 呼吸皮沙发寿命多久 ...请问各位朋友 有什么 星座图鉴 或者天文网介绍下 老公婚前有2套房,不是用他的名义贷款,婚后无共同房屋(我们俩从未有贷款... 硕岑(上海)物业管理有限公司怎么样? 上海庆威物业管理有限公司怎么样? 为啥注册个搜狐邮箱都说Ip被封? 上海益尚物业管理有限公司怎么样? 上世纪80年代,工人中高级技术职称由什么单位考评发证 名人的好词好句 给小孩子红包的数目多少才合适? 胸前,脖子,和背后长了很多痘痘怎么回事?还是大颗的那种,连成一片... 脖子上长了很多红痘痘怎么去除 丽娅·波拉洛的人物经历 请问高手,我为什么注册不了搜狐邮箱 脖子背上长痘痘怎么办 80年单位成立劳动服务公司,这种单位属于什么性质的,我85年进单位劳 病恹恹的解释 七年级数学题 好心人来呀谢谢撒、、急急急啊 要过程哈!! 最近老是受到房地产中介的电话骚扰,有什么办法可以耳根清净。。 《木兰歌》与《木兰诗》有什么相似之处? 木兰者 古时一民间女子也。本文与《木兰诗》在写作上异同之处有... 攻受因为一些原因分手,分手后受被致幻药迷惑拍了xx的照片,拍照片... ...战队赛季结算规则及奖励全说明介绍_球球大作战战队赛季结算规则及... 晚上和男朋友逛福州市,哪里好推荐的 野外被蜘蛛咬伤时的现场自救措施 野外被蜘蛛咬了怎么急救 ...生活,想找个人合租节省下开销,想知道58同城上房子挺多的,有在上面... 花岗岩的面层包括哪些 任务栏右键没有属性 找不到: 将任务栏保持在其他窗口的前端 这个选项... 花岗岩面层的多样工艺与适用场景 我电脑怎么没有 将任务栏保持在其他窗口的前端这个选项是为什么啊 win... ...到任务栏了,没有“将任务栏保持在其他窗口的前端”的选项,怎么办... 梁元帝才子皇帝 梁元帝生平简介 才子皇帝,表里不一,梁元帝萧绎 南朝诗歌第三阶段 残奥会金牌和奥运会金牌一样吗 奥运会金牌几百万,请问谁知道残奥会金牌多少钱呀???国家有没有歧视残疾... 大专生当火箭兵容易吗 黄丹功效与作用 吹喉珍珠生肌散