美文网首页
本地通知UILocalNotification

本地通知UILocalNotification

作者: 颖颖颖火的虫 | 来源:发表于2015-07-06 18:02 被阅读95次

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

          本文链接:https://www.haomeiwen.com/subject/htvyqttx.html