swift3 - ट्रिगर अधिसूचना साप्ताहिक स्विफ्ट 3



notifications calendar (1)

आप प्रत्येक सोमवार को दोपहर 1:05 बजे दोहराने के लिए अपना ट्रिगर सेट कर सकते हैं:

import UserNotifications

let trigger = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 1, minute: 5, weekday: 2), repeats: true)
print(trigger.nextTriggerDate() ?? "nil")

let content = UNMutableNotificationContent()
content.title = "title"
content.body = "body"
// make sure you give each request a unique identifier. (nextTriggerDate description)
let request = UNNotificationRequest(identifier: "identify", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
    if let error = error {
        print(error)
        return
    }
    print("scheduled")
}

अधिसूचना को शेड्यूल करने का प्रयास करने से पहले उपयोगकर्ता को सूचनाओं को शेड्यूल करने की अनुमति देना न भूलें:

UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) { granted, error in
    if granted {
        print("authorized")
    }
}

मैं एक शेड्यूल बनाने की कोशिश कर रहा हूं, जिसमें मुझे उन सभी हफ्तों को याद रखने की जरूरत है जो मेरे पास हैं जैसे कि निश्चित समय पर सोमवार। समस्या यह है कि अगर मैं कार्यदिवस = 1 (रविवार) को असाइन करता हूं, जब मैं चर ट्रिगर को प्रिंट करता हूं। मुझे यह जानने की जरूरत है कि ऐसा क्यों होता है

let weekday = 1 //Sunday 19 Mar 
let calendar = NSCalendar.current
var date = DateComponents()
date.weekday = weekday
date.hour = 1
date.minute = 5

let ultimateDate = calendar.date(from: date)

let triggerWeekly = Calendar.current.dateComponents([.weekday, .hour, .minute], from:
ultimateDate!)

print(triggerWeekly) // hour: 1 minute: 5 second: 0 weekday: 2 isLeapMonth: false 
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerWeekly, repeats: true)
let identifier = "curso\(String(Index))"
let request = UNNotificationRequest(identifier: identifier,
                                        content: content, trigger: trigger)