私の目標は、N秒後に最初に発生する通知を設定し、次にN秒ごとに繰り返すことです。即座にローカル通知がトリガーされる - 延期する方法?
ただし、繰り返し通知を作成すると、すぐにUNUserNotificationCenterDelegate
がトリガーされるようです。
アプリケーションデリゲート:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let center = UNUserNotificationCenter.current()
center.delegate = self
return true
}
func startRequest() {
let content = UNMutableNotificationContent()
content.body = bodyText
content.categoryIdentifier = categoryIdentifier
content.sound = UNNotificationSound.default()
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)
trigger.nextTriggerDate()
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request)
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// This callback received right after the request is made
completionHandler([.alert, .sound])
}
私は非繰り返し通知を作成し、それが期限切れになったときに通知を繰り返し起動することによってこの問題を回避することができます。しかし、私は最初のトリガの日付を指定する方法があることを期待していました。メモリが正しく機能するなら古い通知APIにこの機能があり、おそらく私はこの新しいAPIを誤解しています。
ありがとう!
それはバグかもしれません。私は以前に尋ねられたこの質問を見ました。 – matt
ここにアイデアがあります。 600のようにはるかに大きな間隔で試してみてください。 – matt
@mattそれでも非常に大きな間隔で起動します –