1. 程式人生 > >iOS本地推送與取消本地通知—UILocalNotification的使用

iOS本地推送與取消本地通知—UILocalNotification的使用

1.首先我們初始化一個 UISwith

    self.swith = [[UISwitch alloc] initWithFrame:CGRectMake(80, 80, 160, 30)];
    [_swith addTarget:self action:@selector(doLocalNotifition) forControlEvents:UIControlEventValueChanged];
    [_swith setOn:NO];
    [self.view addSubview:_swith];

2.實現UISwith的方法
- (void)doLocalNotifition
{
    if (_swith.isOn==YES) {
        //初始化一個 UILocalNotification
        UILocalNotification * notification = [[UILocalNotification alloc] init];
        NSDate * pushDate = [NSDate dateWithTimeIntervalSinceNow:10.0];
        if (notification!=nil) {
            
            //設定 推送時間
            notification.fireDate= pushDate;
            //設定 時區
            notification.timeZone = [NSTimeZone defaultTimeZone];
            //設定 重複間隔
            notification.repeatInterval = kCFCalendarUnitDay;
            //設定 推送 時間
            notification.soundName = UILocalNotificationDefaultSoundName;
            //設定 推送提示語
            notification.alertBody = @"提示框內容5";
            //設定 icon 上 紅色數字
            notification.applicationIconBadgeNumber = 1;
            //取消 推送 用的 字典  便於識別
            NSDictionary * inforDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];
            notification.userInfo =inforDic;
            //新增推送到 Application
            [[UIApplication sharedApplication] scheduleLocalNotification:notification];
        }
        NSLog(@"開啟本地通知");
    }else if(_swith.isOn==NO){
        
        //拿到 存有 所有 推送的陣列
        NSArray * array = [[UIApplication sharedApplication] scheduledLocalNotifications];
        //便利這個陣列 根據 key 拿到我們想要的 UILocalNotification
        for (UILocalNotification * loc in array) {
            if ([[loc.userInfo objectForKey:@"key"] isEqualToString:@"name"]) {
                //取消 本地推送
                [[UIApplication sharedApplication] cancelLocalNotification:loc];
            }
        }

        NSLog(@"關閉本地通知");
    }
}

程式碼地址:http://download.csdn.net/detail/u012405234/6432113