本地通知是基于时间行为的一种通知形式,例如闹钟定时、待办事项提醒,又或者一个应用在一段时候后不使用通常会提示用户使用此应用等都是本地通知。创建一个本地通知通常分为以下几个步骤:
创建UILocalNotification。
设置处理通知的时间fireDate。
配置通知的内容:通知主体、通知声音、图标数字等。
配置通知传递的自定义数据参数userInfo(这一步可选)。
调用通知:1)scheduleLocalNotification:按计划调度一个通知,
2)presentLocalNotificationNow立即调用通知。
通过本地通知创建一个具体的时间提醒具体流程如下:
注册通知的逻辑如下:
//如果已经获得发送通知的授权则创建本地通知,否则请求授权(注意:如果不请求授权在设置中是没有对应的通知设置项的,也就是说如果从来没有发送过请求,即使通过设置也打不开消息允许设置)
if ([[UIApplication sharedApplication]currentUserNotificationSettings].types!=UIUserNotificationTypeNone) {
}else{
[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
2.创建本地通知,当用户编写完备忘录成功后就需要创建一个通知
3.在预定时间内,通知的提示情况有两种
1)用户退出程序
2)程序停留在后台
所以针对程序在前台,需要我们自己进行弹框提示
一般,前面两种一般通知我们都会通过以下方式提示
这种一般点击需要跳转到应用内。那么两者处理的地方有所不同
前者在
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
后者在(
void)application:(UIApplication )application didReceiveLocalNotification:(UILocalNotification )notification方法里进行处理
当通知时应用处于前台时一般提示如下
同样这种处理需要在接收到通知的方法里,这种弹框一般会需要添加提示音和震动效果具体实现如下
此外处理小红点的方法
最后注意:
1.通知的声音是由iOS系统播放的,格式必须是Linear PCM、MA4(IMA/ADPCM)、µLaw、aLaw中的一种,并且播放时间必须在30s内,否则将被系统声音替换,同时自定义声音文件必须放到main boundle中。
2.本地通知的数量是有限制的,最近的本地通知最多只能有64个,超过这个数量将被系统忽略。
3.如果想要移除本地通知可以调用UIApplication的cancelLocalNotification:或cancelAllLocalNotifications移除指定通知或所有通知。