美文网首页
UILocalNotification 学习笔记

UILocalNotification 学习笔记

作者: raydang | 来源:发表于2016-03-08 17:20 被阅读866次

    简介:

    UILocalNotification(本地推送通知),是通知的一种,属于UIKit。它是一种基于时间行为的通知形式,系统能在具体的时间触发它,而不用app来触发。本地通知触发后,会显示在通知中心中,并根据配置,显示横幅和播放声音,然后再对应的app的icon上显示通知的条数。 

    本地推送通知在项目中的运用很有特点,大多都和时间相关。如:备忘录、闹钟(自定义闹钟)、生日提醒等等。

    如果实现了通知,用户在第一次打开app的时候,会提示是否打开通知,如果用户选不允许,就不能使用通知这个功能,除非用户去设置中再次进行设置。虽然本地通知能够提示用户来使用app,但是也不要频繁的通知,对本地通知的数量限制是最多数量64个。超过限制的本地通知将被iOS忽略。

    使用:

    1、创建本地推送;- (instancetype)init

    2、设置属性;

    3、注册授权;- (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings;// ios8后,需要添加这个注册,才能得到授权

    4、执行调度;

    //在规定的日期触发通知  [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

    //立即触发一个通知 [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

    5、接收本地推送消息;

    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification;创建交互式通知,需要iOS 8提供的3个新类:UIUserNotificationSettings, UIUserNotificationCategory, UIUserNotificationAction 以及它们的变体。

    6、取消本地推送;

    有一点需要注意,如果我们的应用程序给系统发送的本地通知是周期性的,那么即使把程序删了重装,之前的本地通知在重装时依然存在(没有从系统中移除)。例如,我们在viewDidLoad方法中启动添加本地通知的方法,多跑几次,然后把程序在模拟器中删除,再重新跑本地通知一直滞留在系统中。

    因此我们需要取消通知的方法,当然该对象也会在scheduledLocalNotifications数组中移除。

    第一种比较暴力,直接取消所有的本地通知:[[UIApplication sharedApplication] cancelAllLocalNotifications];这个适合在app重装时第一次启动的时候,或还原程序磨人设置等场合下使用。

    第二种针对某个特定通知:- (void)cancelLocalNotification:(UILocalNotification *)notification;

    基本属性:

    @property(nullable, nonatomic,copy) NSDate *fireDate;设置通知的提醒时间

    @property(nullable, nonatomic,copy) NSTimeZone *timeZone;设置时间的时区

    @property(nonatomic) NSCalendarUnit repeatInterval;   设置重复间隔的单位,(天、周、月、年,0表示不重复)  

    @property(nullable, nonatomic,copy) NSCalendar *repeatCalendar;重复激发通知所使用的日历单位需要参考的日历,如果不设置的话,系统默认的日历将被作为参考日历。

    //    NSString *const NSGregorianCalendar; 公历

    //    NSString * const NSChineseCalendar;   农历

    @property(nullable, nonatomic,copy) CLRegion *region;设置触发通知的地理区域

    @property(nonatomic,assign) BOOL regionTriggersOnce;是否穿越通知地理区域时再次触发通知

    警报属性

    @property(nullable, nonatomic,copy) NSString *alertBody; 通知提示中显示的消息,内容。

    @property(nonatomic) BOOL hasAction;  控制该通知是否显示或隐藏警报动作。

    @property(nullable, nonatomic,copy) NSString *alertAction; 设置通知动作按钮的标题。

    @property(nullable, nonatomic,copy) NSString *alertLaunchImage;设置通知动作按钮的图像。

    @property(nullable, nonatomic,copy) NSString *alertTitle; 设置通知原因的简短描述。

    @property(nullable, nonatomic,copy) NSString *soundName;通知提示音,可以自定义

    @property(nonatomic) NSInteger applicationIconBadgeNumber;应用程序icon上的提醒个数

    信息属性

    @property(nullable, nonatomic,copy) NSDictionary *userInfo; 设置应用自定义信息

    类别属性

    @property (nullable, nonatomic, copy) NSString *category ;设置通知的分类标示

    实现发送基于位置的通知方法(iOS8+):

    1、无需编码,如果设备用户打开了定位,系统会给用户当前的位置来决定是否要给用户发送通知;

    2、需要获取用户定位权限CLLocation;

    3、精准度一般般。

    相关文章

      网友评论

          本文标题:UILocalNotification 学习笔记

          本文链接:https://www.haomeiwen.com/subject/gfjokttx.html