如何在祷告时间不同的时间设置本地通知重复间隔?

在本地通知中有repeatInterval属性,我们可以将单位重复间隔分为时,分,日,周,年等

我希望祷告时间和每一天都有同样的过程。

所以每个祷告时间都会有本地通知。

祈祷时间每天都是不同的时代

你不能重复。 在接下来的30天内,制作一系列不同的通知 – 每天一个通知。 当用户打开应用程序,然后重新创build他们的未来30。

您可以设置重复间隔为一天,并通过不同时间的本地通知数组。

myapp.scheduledLocalNotifications = arrayOfNOtifications; 

这可能会帮助你: 如何创build多个本地通知

我做了这样的应用程序试试这个。

 func scheduleNotification() { let dateString = "2017-04-04 09:00:00" let dateFormatter = DateFormatter() var localTimeZoneName: String { return TimeZone.current.identifier } var secondsFromGMT: Int { return TimeZone.current.secondsFromGMT() } dateFormatter.timeZone = TimeZone(secondsFromGMT: secondsFromGMT) dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let dateObj:Date = dateFormatter.date(from: dateString)! let triggerDaily = Calendar.current.dateComponents([.hour,.minute,.second,], from: dateObj) let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDaily, repeats: true) let content = UNMutableNotificationContent() content.title = "mIdeas" content.body = getRandomMessage() content.sound = UNNotificationSound.default() content.categoryIdentifier = "myCategory" let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger) UNUserNotificationCenter.current().delegate = self //this commented code is to remove the pre-seted notifications so if you need multiple times don't use this line of code //UNUserNotificationCenter.current().removeAllPendingNotificationRequests() UNUserNotificationCenter.current().add(request) {(error) in if let error = error { print("Uh oh! i had an error: \(error)") } } } 

调用这个函数来设置通知你可以修改这个func并添加参数来传递时间

是的,您可以通过重复选项在特定的时间和date推送通知。

按照下面的代码:

 //1. catch the notif center UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; //2. I prefer removing any and all previously pending notif [center removeAllPendingNotificationRequests]; //then check whether user has granted notif permission [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { if (settings.authorizationStatus != UNAuthorizationStatusAuthorized) { // Notifications not allowed, ask permission again [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (!error) { //request authorization succeeded! } }]; } }]; //3. prepare notif content UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init]; content.title = [NSString localizedUserNotificationStringForKey:NSLocalizedString(@"Hello! Today's Sunday!!",nil) arguments:nil]; content.body = [NSString localizedUserNotificationStringForKey:NSLocalizedString(@"Sleep tight!",nil) arguments:nil]; content.sound = [UNNotificationSound defaultSound]; content.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1); //4. next, create a weekly trigger for notif on every Sunday NSDate* sundayDate = startDate; NSDateComponents *components = [[NSDateComponents alloc] init]; while(true){ NSInteger weekday = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday fromDate:sundayDate]; if(weekday == 1){//sunday, stay asleep reminder . LOL components.weekday = 1; components.hour = 9; components.minute = 0; break; }else{//keep adding a day [components setDay:1]; sundayDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:sundayDate options:0]; } } //5. Create time for notif on Sunday unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comps = [calendar components:unitFlags fromDate:sundayDate]; comps.hour = 9; comps.minute = 0; sundayDate = [calendar dateFromComponents:comps]; NSDateComponents *triggerWeekly = [[NSCalendar currentCalendar] components:NSCalendarUnitWeekday + NSCalendarUnitHour + NSCalendarUnitMinute fromDate:sundayDate]; UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:triggerWeekly repeats:YES]; //6. finally, add it to the request UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"LocalIdentifier" content:content trigger:trigger]; [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { if (!error) { NSLog(@"Local Notification succeeded"); } else { NSLog(@"Local Notification failed"); } }]; 

如果您正在寻找通知上的可操作项目。 你应该把它添加到中心的某个地方。

 UNNotificationAction *snoozeAct = [UNNotificationAction actionWithIdentifier:@"Snooze" title:NSLocalizedString(@"Snooze",nil) options:UNNotificationActionOptionNone]; UNNotificationAction *deleteAct = [UNNotificationAction actionWithIdentifier:@"Delete" title:NSLocalizedString(@"Delete",nil) options:UNNotificationActionOptionDestructive]; UNNotificationCategory *category = [UNNotificationCategory categoryWithIdentifier:identifier actions:@[snoozeAct,deleteAct] intentIdentifiers:@[] options:UNNotificationCategoryOptionNone]; NSSet *categories = [NSSet setWithObject:category]; [center setNotificationCategories:categories]; content.categoryIdentifier = @"ActionIdentifier"; 

确保为通知请求设置了不同的标识符!