UILocalNotification的使用

转载 2012年03月22日 14:51:51

Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程。本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notification的方法就完成了整个Notification流程了。

本地Notification所使用的对象是UILocalNotificationUILocalNotification的属性涵盖了所有处理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需要处理,如果不设soundName的话,Notification被激发是将不会有声音播放,除去应用特制的声音以外,也可以将soundName设为UILocalNotificationDefaultSoundName来使用系统默认提醒声音。userInfo是Notification用来传递数据的NSDictionary。


登记UILocalNotification

在设置完UILocalNotification对象之后,应用需要在系统Notification处理队列中登记已设置完的UILocalNotification对象。登记UILocalNotification * localNotification的方式为:

   [[UIApplication sharedApplication]  scheduleLocalNotification: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];

总结

本地Notification的机制在应用开发中非常有效,可以很好的帮助开发者管理一些指定时间需要发生的事件,例如闹钟类的应用。而且因为系统统一对Notification的管理,让同样的任务可以非常简单得被处理,而无需让应用浪费资源去等待事件的触发。

      转自:http://hi.baidu.com/%CB%BC%C3%F4%D3%EA/blog/item/173ee25032b4d301367abe8a.html


UILocalNotification详解

Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notificati...
  • liangliang2727
  • liangliang2727
  • 2015年04月09日 10:19
  • 858

用UILocalNotification实现闹钟的坑

感觉,用UILocalNotification来实现一个闹钟完
  • gaoyp
  • gaoyp
  • 2014年11月04日 10:57
  • 909

iOS --- 本地推送通知 UILocalNotification

本地推送UILocalNotification常用于定期提醒用户使用该APP,如AirBrush的定期提醒用户拍照,运动锻炼工具的每天锻炼提醒。不同于远程推送RemoteNotification,本地...
  • icetime17
  • icetime17
  • 2016年02月11日 11:25
  • 1378

iOS 10.0之前和之后的Local Notification有神马不同

在iOS 10.0之前apple还没有将通知功能单独拿出来自成一系.而从10.0开始原来的本地通知仍然可用,只是被标记为过时.于是乎我们可以使用10.0全新的通知功能.别急…让我们慢慢来,先从iOS ...
  • mydo
  • mydo
  • 2016年10月13日 17:28
  • 1849

关于UILocalNotification 的soundName问题(通知的自定义声音问题)

最近写闹钟项目.设置了通知的soundName,但还是提醒的是系统声音. 1.声音文件必须在项目的mainBundle中.将文件拖入项目的时候默认没有 添加到target中. 所以要勾选add t...
  • soindy
  • soindy
  • 2015年03月19日 11:51
  • 2669

UILocalNotification 本地推送 周一到周五重复提醒

本文章实现周一到周五上下班打卡提醒。 -(void)setRemindTime {     //取得系统的时间,并将其一个个赋值给变量     NSDate* now = [NSDatedat...
  • u010964503
  • u010964503
  • 2016年08月17日 14:57
  • 1660

本地通知 UILocalNotification

1. - (void)viewDidLoad {     [super viewDidLoad];     [self  SendLocalNotification]; } -(v...
  • chenyongkai1
  • chenyongkai1
  • 2016年07月18日 15:45
  • 3460

记录下自己是怎么实现本地推送(LocalNotification)的,以及播放声音、振动的实现

本地推送scheduleLocalNotification 播放系统声音+振动,循环播放-----停止播放
  • u012877287
  • u012877287
  • 2017年01月12日 17:45
  • 775

UILocalNotification在 iOS8中无效问题

UILocalNotification在 iOS8中无效,这是因为Apple改变了策略,需要开发者申请注册推送,然后才 可能正常使用 只要在- (BOOL)application:(UIAppli...
  • reylen
  • reylen
  • 2016年07月14日 12:00
  • 1127

iOS开发——在特定时间、任意时间做本地推送UILocalNotification

当需要发送一个本地推送的时候,我们需要为其设置fireTime即发送时间,网上好多示例代码只是简单地将一个类似10秒之后的时间设上去,但我们可能更需要在自定义或用户定义的某个特定的时间发送,其实这也不...
  • u013604612
  • u013604612
  • 2014年12月30日 22:40
  • 5154
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UILocalNotification的使用
举报原因:
原因补充:

(最多只允许输入30个字)