Repeating local notification daily at a set time with swift

前端 未结 4 1572
小鲜肉
小鲜肉 2020-11-29 03:58

I am new to iOS development, but have created the app and I am trying to create a daily notification for a set time. Currently the notification executes once for the given d

相关标签:
4条回答
  • 2020-11-29 04:42

    var repeatInterval: NSCalendarUnit

    => the docs say "The calendar interval at which to reschedule the notification."

    so: use NSCalendarUnit.CalendarUnitDay

    0 讨论(0)
  • 2020-11-29 04:44

    You have to provide an NSCalendarUnit value like “HourCalendarUnit” or “DayCalendarUnit” for repeating a notification.

    Just add this code to repeat the local notification daily :

    notification.repeatInterval = NSCalendarUnit.CalendarUnitDay
    
    0 讨论(0)
  • 2020-11-29 04:58

    So, had to modify the @vizllx's above code slighty. Here is the new line:

    notification.repeatInterval = NSCalendarUnit.Day 
    

    Here is a full working example I used:

    let notification = UILocalNotification()
    
      /* Time and timezone settings */
      notification.fireDate = NSDate(timeIntervalSinceNow: 8.0)
      notification.repeatInterval = NSCalendarUnit.Day
      notification.timeZone = NSCalendar.currentCalendar().timeZone
      notification.alertBody = "A new item is downloaded."
    
      /* Action settings */
      notification.hasAction = true
      notification.alertAction = "View"
    
      /* Badge settings */
      notification.applicationIconBadgeNumber =
      UIApplication.sharedApplication().applicationIconBadgeNumber + 1
      /* Additional information, user info */
      notification.userInfo = [
        "Key 1" : "Value 1",
        "Key 2" : "Value 2"
      ]
    
      /* Schedule the notification */
      UIApplication.sharedApplication().scheduleLocalNotification(notification)
    }
    
    0 讨论(0)
  • 2020-11-29 05:00

    The other answers show how to use the old, pre iOS 10 local notifications. With iOS 10 and later, you must use UNNotificationCenter as follows:

        let content = UNMutableNotificationContent()
        content.title = "This will appear in bold, on it's own line."
        content.subtitle = "This will appear in bold, on it's own line, below the title."
        content.body = "This will appear as normal text, below the title and subtitle."
    
        let triggerInputForHourlyRepeat = Calendar.current.dateComponents([.minute], from: intendedFireDateVariable)
        let trigger = UNCalendarNotificationTrigger.init(dateMatching: triggerInput, repeats: true)
    
        let request = UNNotificationRequest(identifier: "someUniqueID", content: content, trigger: trigger)
        let unc = UNUserNotificationCenter.current()
        unc.add(request, withCompletionHandler: { (error) in
            /// Handle error
        })
    

    Helpful tutorials:

    1. https://www.techotopia.com/index.php/An_iOS_10_Local_Notification_Tutorial
    2. https://makeapppie.com/2016/11/21/manage-delete-and-update-notifications-in-ios-10/
    0 讨论(0)
提交回复
热议问题