UserNotification in 3 days then repeat every day/hour - iOS 10

前端 未结 2 1699
死守一世寂寞
死守一世寂寞 2020-12-11 04:07

UILocalNotification has been depreciated so I would like to update my code to the UserNotification framework:

let alertDays = 3.0
let alertSeconds = alertDay         


        
2条回答
  •  轮回少年
    2020-12-11 04:40

    It seems like this is not supported, but to make a workaround you could use:

    let alertDays = 3.0
    let daySeconds = 86400
    let alertSeconds = alertDays * daySeconds
    
    let content: UNMutableNotificationContent = UNMutableNotificationContent()
    
    content.title = "Reminder Title"
    content.subtitle = "Reminder Subtitle"
    content.body = "Reminder Message"
    
    let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: (alertSeconds), repeats: false)
    
    let request = UNNotificationRequest(identifier: workoutAlarmIdentifier,
                                        content: content,
                                        trigger: trigger)
    
    UNUserNotificationCenter.current().add(request)
    {
        (error) in // ...
    }
    

    in combination with didReceive(_:withContentHandler:) you can use:

    let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: (daySeconds), repeats: false)
    

    I know this isn't optimal but it should work without using deprecated classes/methods. You use repeats: false since you are intercepting the notification just before the user receives it and creating a new notification. Additionally you can use it in combination with UNNotificationAction and UNNotificationCategory if you handle multiple notifications.

提交回复
热议问题