2017-04-12 13 views
0

毎日繰り返されるときにローカル通知のメッセージを更新する方法を調べようとしています。iOS 10で毎日のローカル通知メッセージを更新するにはどうすればよいですか?

現在、私は私のAppDelegateに次のコードを持っている:

func scheduler(at date: Date, numOfNotes: Int) 
{ 
    let calendar = Calendar(identifier: .gregorian) 

    let components = calendar.dateComponents(in: .current, from: date) 

    let newComponents = DateComponents(calendar: calendar, timeZone: .current, hour: components.hour, minute: components.minute) 

    let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: true) 

    content.badge = numOfNotes as NSNumber 

    content.body = "REMINDER: " + String(numOfNotes) + " needs to be looked at!" 

    content.sound = UNNotificationSound.default() 

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

    UNUserNotificationCenter.current().delegate = self 

    UNUserNotificationCenter.current().add(request) {(error) in 

    } 
} 

私はUserDefaultsnumOfNotesを格納しています。指定した時刻に毎日通知リピートを持つようにtruerepeatsパラメータを設定する場合は、しかし、

func remindMeSwitch(_ remindMeSwitch: UISwitch) 
{ 
    numOfNotes = UserDefaults.standard.integer(forKey: "Notes") 

    let delegate = UIApplication.shared.delegate as? AppDelegate 

    delegate?.scheduler(at: time, numOfNotes: numOfNotes) 
} 

numOfNotesはわずかです:私はそうのような呼び出しscheduler機能オンされると、私のUITableViewCellUISwitch、それを持っています私はUISwitchをトグルしています。

通知を毎日警告するように設定することはできますが、必要に応じて通知メッセージを引き続き更新するにはどうすればよいですか。

ありがとうございました。

+1

あなたがこれを達成するために適切なメッセージで個々の非繰り返し通知をスケジュールする必要があるだろうと思われます。 – Losiowaty

+0

@ Losiowaty、私はそれが当てはまると思うだろうが、私はカウントを変更するたびに再スケジュールする必要はないと考えていた。 – Pangu

+0

通知サービスのアプリケーション拡張を追加することはできますが、ローカル通知。また、iOS 10からのみ利用可能です。 – Losiowaty

答えて

0

一般に、ローカル通知を変更する可能性はありません。 一方通行のみ - 古い通知を削除/キャンセルし、新しい通知を作成します。しかし、あなたはコピー機能を使うことができます。例えば

、あなたは通知の内容を変更する場合:

// create new content (based on old) 
if let content = notificationRequest.content.mutableCopy() as? UNMutableNotificationContent { 
    // any changes  
    content.title = "your new content's title" 
    // create new notification 
    let request = UNNotificationRequest(identifier: notificationRequest.identifier, content: content, trigger: notificationRequest.trigger) 
    UNUserNotificationCenter.current().add(request) 
} 
関連する問題