0

私はユーザーにいくつかのタスクを思い出させるためにカスタムローカル通知を設定できるようにするいくつかのコードを書こうとしています。 私はユーザー通知フレームワークを使用しています。 基本的に、ユーザーは毎週何らかの石鹸を購入するか、毎年誕生日の願いをするか、毎月何かをチェックするように通知する通知を設定することができます(これは単なる例です)。ユーザーが選択した迅速な3回の繰り返しでのローカル通知

これまでのところ、繰り返し間隔なしでローカル通知を設定することができました。

func scheduleNotif() { 
    let dateformatter = DateFormatter() 
    dateformatter.dateStyle = DateFormatter.Style.medium 
    dateformatter.timeStyle = DateFormatter.Style.short 
    let dateFromString = dateformatter.date(from: selectDateTextField.text!) 
    let fireDateOfNotification: Date = dateFromString! 

    //if notif are allowed 
    let content = UNMutableNotificationContent() 
    content.title = notifTitleTextField.text! 
    content.body = notifNoteTextView.text 
    content.sound = UNNotificationSound.default() 
    content.badge = UIApplication.shared.applicationIconBadgeNumber + 1 as NSNumber 

    let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: fireDateOfNotification) 
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, 
               repeats: false) 
    //Schedule the Notification 
    let titleNospace = notifTitleTextField.text?.replacingOccurrences(of: " ", with: "") 
    let identifier = titleNospace 
    let request = UNNotificationRequest(identifier: identifier!, content: content, trigger: trigger) 
    self.center.add(request, withCompletionHandler: { (error) in 
     if let error = error { 
      print(error.localizedDescription) 
     } 
    }) 
} 

日付は、日付ピッカーから選択されます。 別のピッカーから、繰り返し間隔(なし、毎日、毎週、毎月、毎年、特定の日)を選択するようにします。 これをどのように達成できるかわかりません。 if else if文を使用する必要がありますか? (それは私には本当に正しいとは思われません) これを達成するより良い方法はありますか? ありがとうございました!

let dateformatter = DateFormatter() 
dateformatter.dateStyle = .medium 
dateformatter.timeStyle = .short 
let dateFromString = dateformatter.date(from: selectDateTextField.text!) 
let fireDateOfNotification: Date = dateFromString! 

var trigger: UNCalendarNotificationTrigger 
var triggerDate: DateComponents 
var repeatInterval = Bool() 

if repeatingInterval == "Hourly" { 
    triggerDate = Calendar.current.dateComponents([.minute], from: fireDateOfNotification) 
    repeatInterval = true 
} else if repeatingInterval == "Daily" { 
    triggerDate = Calendar.current.dateComponents([.hour, .minute], from: fireDateOfNotification) 
    repeatInterval = true 
} else if repeatingInterval == "Weekly" { 
    triggerDate = Calendar.current.dateComponents([.weekday, .hour, .minute], from: fireDateOfNotification) 
    repeatInterval = true 
} else if repeatingInterval == "Monthly" { 
    triggerDate = Calendar.current.dateComponents([.day, .hour, .minute], from: fireDateOfNotification) 
    repeatInterval = true 
} else if repeatingInterval == "Yearly" { 
    triggerDate = Calendar.current.dateComponents([.month, .day, .hour, .minute], from: fireDateOfNotification) 
    repeatInterval = true 
} else { 
    triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: fireDateOfNotification) 
    repeatInterval = false 
} 

trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: repeatInterval) 

//Schedule the Notification 
...... 

はまだ異なる間隔(例えば隔週、一日おきに、半年ごとなど)のためにそれをスケジュールする方法を見つけることがあります:私はそれをこのように修正した瞬間のために

答えて

0

。 私はまだそれを調べます。 :)

関連する問題