IOS本地消息推送(UILocalNotification)

  IOS本地的Notification由iOS下NotificationManager统一管理,只须要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notification的方法就完成了整个Notification流程了。数组

 IOS本地的Notification有UILocalNotification对象完成。它包括的主要属性有:fireDate、timeZone、repeatInterval、repeatCalendar、alertBody、 alertAction、hasAction、alertLaunchImage、applicationIconBadgeNumber、 soundName和userInfo。app

   UILocalNotification的调度ui

  fireDate UILocalNotification的激发的确切时间。spa

 timeZone:肯定UILocalNotification激发时间是否根据时区改变而改变,若是设置为nil的话,那么UILocalNotification将在一段时候后被激发,而不是某一个确切时间被激发。设计

 repeatInterval:是UILocalNotification被重复激发之间的时间差,不过期间差是彻底根据日历单位(NSCalendarUnit)的,例如每周激发的单位,NSWeekCalendarUnit,若是不设置的话,将不会重复激发。对象

 repeatCalendar:是UILocalNotification重复激发所使用的日历单位须要参考的日历,若是不设置的话,系统默认的日历将被做为参考日历。队列

soundName:设置UILocalNotification消息推送时的声音,例如:UILocalNotificationDefaultSoundName,也可指定开发

UILocalNotification的提醒内容it

 alertBody、alertAction、hasAction、alertLaunchImageio

alertBody:推送内容。

applicationIconBadgeNumber:角标数字。

alertAction:待机界面的滑动动做提示

//设置userinfo 方便在以后须要撤销的时候使用

 userinfo同时也是:绑定到通知上的其余附加信息

NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];

 noti.userInfo = infoDic;

 

添加一个本地推送

//添加推送到uiapplication

UIApplication *app = [UIApplication sharedApplication];

[app scheduleLocalNotification:noti];

 

取消一个本地推送 

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].applicationIconBadgeNumber=0;

这个0能够随意设置。开发人员根据状况去处理。

 

两种方式取消注册的本地通知,一种是取消指定的通知,第二种是取消全部的注册通知:

[[UIApplication sharedApplication] cancelLocalNotification:localNotification];

[[UIApplication sharedApplication] cancelAllLocalNotification];

 

注册消息通知:

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

          {

                    // iOS 8 Notifications

                    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

                    [application registerForRemoteNotifications];

          }

          else

          {

                    // iOS < 8 Notifications

                    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

          }

相关文章
相关标签/搜索