本地推送UILocalNotification
- 获取每天的9点的时间
NSDate
NSDate *date = [NSDate date];
NSTimeZone *gmt = [NSTimeZone systemTimeZone];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
[gregorian setTimeZone:gmt];
NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: date];
[components setHour:9];
[components setMinute:0];
[components setSecond: 0];
NSDate *newDate = [gregorian dateFromComponents:components]; - 增加一个本地推送
notification.
fireDate
= newDate;设置推送时间
notification.timeZone
=[NSTimeZone defaultTimeZone];设置时区
notification.soundName
= UILocalNotificationDefaultSoundName;推送声音
noti.applicationIconBadgeNumber = 1;显示在icon上的红色圈中的数子
NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];
noti.userInfo = infoDic;设置userinfo 方便在之后需要撤销的时候使用
notification.repeatInterval
= kCFCalendarUnitDay;设置重复间隔
notification.alertBody
= @"推送内容
";
[[UIApplication sharedApplication] scheduleLocalNotification:notification];添加推送到UIApplication
- 程序运行时接收到本地推送消息
-(void)application:(UIApplication )application didReceiveLocalNotification:(UILocalNotification)notification{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"接收到本地提醒 in app" message:notification.alertBody delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
//这里,你就可以通过notification的useinfo,干一些你想做的事情了
application.applicationIconBadgeNumber -= 1;
} - 取消一个本地推送
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;
}