本地通知UILocalNotification

本地推送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;
    }

你可能感兴趣的:(本地通知UILocalNotification)