Local Notification的作用

Local Notification的作用  
Local Notification(本地通知) :是根据本机状态做出的通知行为,因此,凡是仅需依赖本机状态即可判断需要发出通知的行为都可以或者说应该使用Local Notification来处理。比方说:iBeacon中进入了某个Beacon region,或者说自定义的一些定时提醒等。 

构建Local Notification  
在iOS中,构建LocalNotification非常简单,只需要掌握好NSLocalNotification这个类就够用了,基本步骤如下: 

1. 创建并初始化 UILocalNotification对象 
2. 配置该对象的属性: 

* 触发时间(fireDate,timeZone,repeatInterval,repeatCalendar),如果你想根据时间来触发。 
* 通知行为(alertAction,hasAction),定义查看通知的操作名。 
* 触发通知时的启动画面(alertLaunchImage) 
* 通知的正文内容(alertBody), 
* 通知的背景声(soundName) 
* 通知消息数的展示(applicationIconBadgeNumber),就是强迫症们最讨厌的App图标上左上角的那个小数字 
* 其它(userInfo),可以给通知绑定一些处理通知时需要的额外信息。 

3.展示通知,展示通知有两个方式: 

* - (void)scheduleLocalNotification:(UILocalNotification *)notification:根据触发时间的配置展示通知消息, 
* - (void)presentLocalNotificationNow:(UILocalNotification *)notification:立即发送通知到本机 

栗子: 
Object-c代码   收藏代码
  1. - (void)showNotificationWithAction:(NSString *)action andContent:(NSString *)content  
  2. {  
  3.     UILocalNotification *notification = [[UILocalNotification alloc] init];  
  4.     notification.alertBody = content;  
  5.     notification.alertAction = action;  
  6.     notification.soundName = UILocalNotificationDefaultSoundName;  
  7.     [[UIApplication sharedApplication] presentLocalNotificationNow:notification];  
  8. }  
  9.   
  10. - (void)scheduleNotificationWithItem:(ToDoItem *)item interval:(int)minutesBefore {  
  11.     NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];  
  12.     NSDateComponents *dateComps = [[NSDateComponents alloc] init];  
  13.     [dateComps setDay:item.day];  
  14.     [dateComps setMonth:item.month];  
  15.     [dateComps setYear:item.year];  
  16.     [dateComps setHour:item.hour];  
  17.     [dateComps setMinute:item.minute];  
  18.     NSDate *itemDate = [calendar dateFromComponents:dateComps];  
  19.    
  20.     UILocalNotification *localNotif = [[UILocalNotification alloc] init];  
  21.     if (localNotif == nil)  
  22.         return;  
  23.     localNotif.fireDate = [itemDate dateByAddingTimeIntervalInterval:-(minutesBefore*60)];  
  24.     localNotif.timeZone = [NSTimeZone defaultTimeZone];  
  25.    
  26.     localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ in %i minutes.", nil),  
  27.          item.eventName, minutesBefore];  
  28.     localNotif.alertAction = NSLocalizedString(@"View Details", nil);  
  29.    
  30.     localNotif.soundName = UILocalNotificationDefaultSoundName;  
  31.     localNotif.applicationIconBadgeNumber = 1;  
  32.    
  33.     NSDictionary *infoDict = [NSDictionary dictionaryWithObject:item.eventName forKey:ToDoItemKey];  
  34.     localNotif.userInfo = infoDict;  
  35.    
  36.     [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];  
  37. }  


处理Local Notification  

在处理本地通知时,我们需要考虑三种情况: 

1. App没有启动, 

这种情况下,当点击通知时,会启动App,而在App中,开发人员可以通过实现*AppDelegate中的方法:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,然后从lauchOptions中获取App启动的原因,若是因为本地通知,则可以App启动时对App做对应的操作,比方说跳转到某个画面等等。栗子: 
Object-c代码   收藏代码
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     NSLog(@"Start App....");  
  4.     ....  
  5.     UILocalNotification *localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];  
  6.     if ([self isWelcomeNotification:localNotification]) {  
  7.         NSLog(@"start with welcome notification");  
  8.         [self.mainViewController showOfficeIntroduction];  
  9.     }  
  10.     return YES;  
  11. }  


2. App运行在后台 
3. App运行在前台 

上面的2种情况的处理基本一致, 不同点只有当运行再后台的时候,会有弹窗提示用户另外一个App有通知,对于本地通知单的处理都是通过*AppDelegate的方法:- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification来处理的。 栗子: 
Object-c代码   收藏代码
  1. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification  
  2. {  
  3.     if ([self isWelcomeNotification:notification]) {  
  4.        [self.mainViewController showOfficeIntroduction];   
  5.     }if ([self isCustomerDataNotification:notification]) {  
  6.         [self.mainViewController showCustomerDataIntroduction];  
  7.     }  
  8. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值