通知呢,就是想闹钟一样弹出横幅或则弹出提示框提醒你什么您已经多久没有使用某某某软件啦您该做某某某件事啦等等的,然后点击通知可以直接进入到app中啦,例如微信、qq等消息提醒就是用的通知啦
通知分为两种,一种是本体通知,第二种是推送通知,也叫远程通知,本地通知通过调用创建通知中心(UILocalNotification),设置一系列属性等就可以实现,远程通知有现成的第三方可以用,灰常好用的有极光推送,个推等等。今天我们来说一说本地通知。
本地通知是由本地应用触发的通知,想闹钟、待办事项提醒就是用的本地通知实现的。可以通过定时使它在某一时间提醒你,也可以选择过了多久提醒你。
使用本地通知一般分为以下几步走:
1.当然是先创建一个对象了,
UILocalNotification *notification = [[ UILocalNotification alloc] init];
2.设置调用时间,这里我设定的是当前时间10秒后提醒我
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
3.设置通知重复的次数,这里我设置的是每天提醒,当然还可以设置其他的
notification.repeatInterval = <span style="white-space: pre;"><span style="white-space: pre;">kCFCalendarUnitDay</span> </span>;
kCFCalendarUnitMonth, 每月提醒
kCFCalendarUnitDay, 每日提醒
kCFCalendarUnitHour, 每小时提醒
kCFCalendarUnitMinute, 每分钟提醒
kCFCalendarUnitSecond 每秒提醒(我感觉这个应该不支持吧,每秒提醒一次啊,这不成流氓软件了嘛 苹果系统应该不支持这个属性。。。。。。没试过,你萌可以试试呦)
4,开始设置通知主题 body,就是你想要提醒的话notification.alertBody = @"好久没来玩人家了,快戳我快戳我!";
5.应用程序左上角显示的消息数字
notification.applicationIconBadgeNumber += 1;
6.待机界面滑动动作提示
notification.alertAction = @"打开应用";
7.点击通知时打开应用的启动图片,这里用默认的,也可以是自定义的
notification.alertLaunchImage = @"Default";
8.收到通知时播放的声音,默认系统通知的声音,自定义的声音后面是@“sound。caf”
notification.soundName = UILocalNotificationDefaultSoundName;
9.设置用户信息,可以绑定一些其他的附加信息,也是为了方便撤销通知用
notification.userInfo = @{@"ID" : @1, @"user" : @"Visars"};
10.调用通知
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
当程序进入前台要取消应用消息的图标
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
// 进入前台取消应用消息图标
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
程序运行时接收本地消息的方法
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification
{
<span style="white-space:pre"> </span>NSLog(@“啊啊啊啊”);
}
取消一个本地通知,有两种方法,第一种,根据key取消相应的通知
UIApplication *app = [UIApplication sharedApplication];
//获取本地推送数组
NSArray *localArr = [app scheduledLocalNotifications];
//声明本地通知对象
UILocalNotification *localNoti;
if (localArr) {
for (UILocalNotification *noti in localArr) {
NSDictionary *dict = noti.userInfo;
if (dict) {
NSString *inKey = [dict objectForKey:@"key"];
if ([inKey isEqualToString:key]) {
if (localNoti){
[localNoti release];
localNoti = nil;
}
localNoti = [noti retain];
break;
}
}
}
//判断是否找到已经存在的相同key的推送
if (!localNoti) {
//不存在 初始化
localNoti = [[UILocalNotification alloc] init];
}
if (localNoti && !state) {
//不推送 取消推送
[app cancelLocalNotification:localNoti];
[localNoti release];
return;
}
}
第二种就是暴力取消所有的通知
[[UIApplication sharedApplication] cancelLocalNotification:localNotification];
[[UIApplication sharedApplication] cancelAllLocalNotification];
本地通知基本上就这些了,网上的教学也好多,大家跟着做就能实现通知了
我发现了个好玩的,就是本地通知如果不取消通知它是会一直存在的呦,即使你卸载了程序也不会消失,哈哈,脑洞大的盆友可以试试写个每小时通知一次的程序安装到损友的手机里,然后不取消。。。。。。(嗯哼,我可啥都没说)
最后还是一则小段子:
睡觉经常做梦,老是觉得梦里自己发现了世界级的秘密,但是醒来就是什么也记不住了,于是这次睡觉前准备了纸和笔,趁着似醒非醒的时候在纸上写下梦到的秘密。醒来赫然的看到纸上写到:“香蕉大则香蕉皮也大。”