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




notifications calendar weekday (2)

आप प्रत्येक सोमवार दोपहर 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")
}

अपने ऐप डिलीएलेट में सूचनाओं को शेड्यूल करने के लिए उपयोगकर्ता से अनुमति पूछने के लिए मत भूलना:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) { granted, error in
        // your code
    }
    return true
}

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

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)

आप केवीओ (कुंजी मूल्य निरीक्षण) पर एक नज़र डाल सकते हैं। निश्चित नहीं है कि कोर डेटा एपीआई में बनाए गए रैपर हैं, लेकिन मुझे पता है कि यह उद्देश्य-सी का हिस्सा है।