在iOS中,本地通知非常适用于基于时间的行为.例如,有一个需求是让用户专注做某件事情一段时间. 时间到了后给个通知告知.实现这样一个功能可以使用本地通知
实现如下效果:
本地通知实现步骤:
1.创建本地通知对象 ( UILocalNotification )
2.设置通知的属性
3.让应用程序调用通知,使用UIApplication对象调用scheduleLocalNotification:方法
4.在iOS8.0之后,在调度通知之前需要使用 UIApplication的对象方法registerUserNotificationSettings:来请求用户授权
代码实现
定义本地通知对象属性
/** 创建本地通知对象*/
@property (nonatomic,strong) UILocalNotification *lNotification;
懒加载
//懒加载
- (UILocalNotification *)lNotification{
if (!_lNotification) {
_lNotification = [[UILocalNotification alloc] init];
}
return _lNotification;
}
设置通知的属性
/** 设置通知的内容*/
self.lNotification.alertBody = @"时间到了";
/** 设置通知触发开始的时间*/
self.lNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:3];
/** 设置时区*/
self.lNotification.timeZone = [NSTimeZone defaultTimeZone];
/** 设置应用图标右上角的数字*/
self.lNotification.applicationIconBadgeNumber = 1;
/** 设置通知的音效(只有真机有效)*/
self.lNotification.soundName = UILocalNotificationDefaultSoundName;
让应用程序调用通知
/** 让应用程序调用通知*/
[[UIApplication sharedApplication] scheduleLocalNotification:self.lNotification];
更新显示徽章数方法
/** 更新显示徽章数*/
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
在iOS8.0之后,在调度通知之前需要使用 UIApplication的对象方法registerUserNotificationSettings:来请求用户授权,该方法需要在application: didFinishLaunchingWithOptions: 中实现
/**
* 在iOS8.0之后,在调度通知之前需要使用 UIApplication的对象方法registerUserNotificationSettings:来请求用户授权
UIUserNotificationType:
UIUserNotificationTypeBadge 接收到通知可更改程序的应用图标
UIUserNotificationTypeSound 接收到通知可播放声音
UIUserNotificationTypeAlert 接收到通知提示内容
*/
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge |UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
到此,可以实现本地通知功能.