ios - आईओएस अधिसूचना ट्रिगर:पखवाड़े और / या त्रैमासिक




swift notifications calendar (2)

मैं इस सटीक परिदृश्य के लिए किसी भी एप्पल दस्तावेज़ीकरण को ढूंढने में असमर्थ हूं, और मैंने ऐसा करने के विभिन्न तरीकों की कोशिश की है और मैं खाली आ रहा हूं

मैं एक दोहराए जाने वाले अधिसूचना ( iOS 10+ UNCalendarNotificationTrigger या समकक्ष) को शेड्यूल करना चाहता हूं।
ये स्थानीय सूचनाएँ नहीं पुश सूचनाएं हैं

मेरा लक्ष्य:

अनुसूची की सूचनाएं जो दोहराएँ:

  • एक बार पखवाड़े (जैसे, हर दूसरे मंगलवार)
  • एक बार एक तिमाही (जैसे, हर 3 महीने में 1 )

मेरा वर्तमान दृष्टिकोण:

ये ट्रिगर अच्छी तरह से काम करते हैं, और लागू करने के लिए सरल (एक स्विफ्ट खेल का मैदान में कोड चलाना)।

// Every day at 12pm
var daily = DateComponents()
daily.hour = 12
let dailyTrigger = UNCalendarNotificationTrigger(dateMatching: daily, repeats: true)
dailyTrigger.nextTriggerDate() // "Jan 4, 2017, 12:00 PM"

// Every Tuesday at 12pm
var weekly = DateComponents()
weekly.hour = 12
weekly.weekday = 3
let weeklyTrigger = UNCalendarNotificationTrigger(dateMatching: weekly, repeats: true)
weeklyTrigger.nextTriggerDate() // "Jan 10, 2017, 12:00 PM"

// The 1st of every month at 12pm
var monthly = DateComponents()
monthly.hour = 12
monthly.day = 1
let monthlyTrigger = UNCalendarNotificationTrigger(dateMatching: monthly, repeats: true)
monthlyTrigger.nextTriggerDate() // "Feb 1, 2017, 12:00 PM"

// Every 1st of February at 12pm
var yearly = DateComponents()
yearly.hour = 12
yearly.day = 1
yearly.month = 2
let yearlyTrigger = UNCalendarNotificationTrigger(dateMatching: yearly, repeats: true)
yearlyTrigger.nextTriggerDate() // "Feb 1, 2017, 12:00 PM"

परंतु...

मुझे सही ढंग से कार्य करने के लिए एक fortnightly या quarterly ट्रिगर नहीं मिल सकता है

// Every second Tuesday at 12pm
// ... There is no "date.fortnight", is this possible?

// The 1st of every quarter at 12pm
var quarterly = DateComponents()
quarterly.hour = 12
quarterly.day = 4
// Values: 1, 2, 3 or 4 all produce the same "nextTriggerDate" - why?
quarterly.quarter = 4 
let quarterlyTrigger = UNCalendarNotificationTrigger(dateMatching: quarterly, repeats: true)
quarterlyTrigger.nextTriggerDate()

तो, स्पष्ट होने के लिए, मेरे प्रश्न हैं:

  1. क्या हर पखवाड़े को दोहराता हुआ एक सूचना प्राप्त करना संभव है?
  2. हम एक तिमाही के लिए ट्रिगर कैसे प्राप्त कर सकते हैं?

चूंकि DateComponents() एक quarter इकाई है, मैं मानता हूं कि quarterly ट्रिगर संभव है। पखवाड़े से रिमाइंडर के लिए, मुझे यह भी यकीन नहीं है कि यह संभव है ...

किसी भी जानकारी की सराहना की जाएगी!


Answers

मुझे पखवाड़े अधिसूचना को चालू करने के लिए कोई सीधा विकल्प नहीं मिला। मेरे अंत से सलाह

1) क्या हर पखवाड़े को दोहराता हुआ एक सूचना प्राप्त करना संभव है?

मैं दो विकल्प प्रस्तावित कर रहा हूं:

  1. क्या हम दो सप्ताह के समय के अंतराल के साथ अधिसूचना दोहराने के लिए UNTimeIntervalNotificationTrigger नोटिफिकेशन का उपयोग कर सकते हैं? नीचे का उदाहरण

    let timeInterValFor2Weeks = 1190507.790425003
    
    let intervalTrigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInterValFor2Weeks, repeats: true)//"Jan 3, 2017, 5:24 PM"
    
    intervalTrigger.nextTriggerDate() //"Jan 17, 2017, 12:05 PM"
  2. दो UNCalendarNotificationTrigger ट्रिगर की अनुसूची करें, जिसे एक महीने के पहले और तीसरे दिन को ट्रिगर करना चाहिए। उदाहरण के लिए, यह पहली रविवार को सूचनाएं और एक महीने के तीसरे रविवार को आग लगाना चाहिए।

    var fortnightPart1 = DateComponents()
    fortnightPart1.weekday = 1 //(Day..here Sunday)
    fortnightPart1.weekdayOrdinal = 2 //= n == (nth Day in the month...here 2nd Sunday in every month month)
    fortnightPart1.hour = 12
    
    let fortnightTrigger = UNCalendarNotificationTrigger(dateMatching: fortnightPart1, repeats: true)
    fortnightPart1.nextTriggerDate()

2) हम एक तिमाही के लिए ट्रिगर कैसे प्राप्त कर सकते हैं?

यदि कोई सीधा विकल्प उपलब्ध नहीं है, तो मैं ऊपर के रूप में एक ही समाधान का सुझाव देता हूं


यदि आप segues का उपयोग कर रहे हैं तो आपको वही समस्याएं मिलेंगी यदि आप रेखा के संदर्भ को पास नहीं करते हैं। Segue शुरू करने वाली कक्षा के readyForSegue विधि में इस कोड का उपयोग करें:

[[segue destinationViewController] setManagedObjectContext:self.managedObjectContext];

यह मानता है कि आप अपने संदर्भ को "प्रबंधित ऑब्जेक्ट कॉन्टेक्स्ट" नामक संपत्ति में रखते हैं।





ios swift notifications calendar