Повторите Локальное уведомление, используя UserNotifications в Swift 4 - PullRequest
0 голосов
/ 30 августа 2018

Мне нужно повторить local notification в определенное время и в определенные дни, например, 10:30 в воскресенье и пятницу или в определенные дни недели (понедельник и суббота).

switch repeatDays {
    case .never:
        dateComponents = Calendar.current.dateComponents([.hour, .minute], from: date)
        flag = false
    case .everyDay:
        dateComponents = Calendar.current.dateComponents([.hour, .minute], from: date)
    case .everyWeek:
        dateComponents = Calendar.current.dateComponents([.weekday, .hour, .minute], from: date)
    case .everyMonth:
        dateComponents = Calendar.current.dateComponents([.day, .hour, .minute], from: date)
    case .everyYear:
        dateComponents = Calendar.current.dateComponents([.month, .day, .hour, .minute], from: date)
    } 

let notificationTrigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: flag)
    let request = UNNotificationRequest(identifier: uuid, content: content, trigger: notificationTrigger)

    let notiCurrent = UNUserNotificationCenter.current()
    notiCurrent.add(request) { (error) in
        if let error1 = error {
            print(error1.localizedDescription)
        }
    }

Но это повторное уведомление еженедельно не повторяется Sunday и Wednesday или в некоторые другие конкретные дни

Ответы [ 2 ]

0 голосов
/ 30 августа 2018
func scheduleNotification(date:Date, body: String, titles : String)  {
    let trigger = UNTimeIntervalNotificationTrigger(
        timeInterval: 1.0,
        repeats: true)
    let content = UNMutableNotificationContent()
    content.title = body
    content.body = titles
    content.sound = UNNotificationSound.default()
    content.categoryIdentifier = "todoList"
    content.setValue("YES", forKeyPath: "shouldAlwaysAlertWhileAppIsForeground") //Update is here

    let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger)

    UNUserNotificationCenter.current().delegate = self
    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    UNUserNotificationCenter.current().add(request) {(error) in
        if let error = error {
            print(" We had an error: \(error)")
        }
    }
}
0 голосов
/ 30 августа 2018
 let calendar = Calendar.current
    let components = DateComponents(year: 2018, month: 05, day: 06, hour: 20, minute: 22) // Set the date here when you want Notification
    let date = calendar.date(from: components)
    let comp2 = calendar.dateComponents([.year,.month,.day,.hour,.minute], from: date!)
    let trigger = UNCalendarNotificationTrigger(dateMatching: comp2, repeats: true)

    let content = UNMutableNotificationContent()
    content.title = "Notification Demo"
    content.subtitle = "Demo"
    content.body = "Notification on specific date!!"

    let request = UNNotificationRequest(
        identifier: "identifier",
        content: content,
        trigger: trigger
    )

    UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in
        if error != nil {
            //handle error
        } else {
            //notification set up successfully
        }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...