如何迅速启动本地通知?

时间:2019-06-21 06:45:51

标签: ios swift

目前,我正在快速处理一个项目5。我正在尝试在特定日期和时间推送本地通知。我试过下面的代码,当我设置60.0间隔,然后它的工作找到,但当我设置特定的日期和时间,然后不工作。

我搜索并检查了很多问题,但仍然没有找到解决方案。我已经检查了以下问题

get current date from [NSDate date] but set the time to 10:00 am

UNUserNotificationCenter Swift - Local Notification Not Firing in specific cases


      let app = UIApplication.shared


      let notificationSettings = UIUserNotificationSettings(types: [.alert, .sound], categories: nil)
      app.registerUserNotificationSettings(notificationSettings)
      let calendar = NSCalendar.current

      let date = NSDateComponents()
      print("before date get ::=> \(date)")
      date.hour = 16
      date.minute = 52
      date.month = 6
      date.day = 20
      date.year = 2019
      date.timeZone = NSTimeZone.system
      print("after custom date get ::=> \(date)")


      let alarm = UILocalNotification()
      alarm.fireDate = calendar.date(from: date as DateComponents)
      alarm.timeZone = NSTimeZone.default
      alarm.alertTitle = "Data success"
      alarm.alertBody = "successfuly"
      alarm.soundName = "Sound.wav"
      app.scheduleLocalNotification(alarm)
      app.scheduleLocalNotification(alarm)

      let content = UNMutableNotificationContent()
      content.title = NSString.localizedUserNotificationString(forKey: "Elon said:", arguments: nil)
      content.body = NSString.localizedUserNotificationString(forKey: "Hello Tom!Get up, let's play with Jerry!", arguments: nil)
      content.sound = UNNotificationSound.default
      content.badge = UIApplication.shared.applicationIconBadgeNumber + 1 as NSNumber;
      content.categoryIdentifier = "com.elonchan.localNotification"
      // Deliver the notification in 60 seconds.
      let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 60.0 , repeats: false)
      let request = UNNotificationRequest.init(identifier: "FiveSecond", content: content, trigger: trigger)
      // Schedule the notification.
      let center = UNUserNotificationCenter.current()
      center.add(request)


  }

我希望设置特定的日期和时间来触发本地通知。

2 个答案:

答案 0 :(得分:1)

此代码将帮助您每天如何发送本地通知。您可以设置小时和分钟。

func setUpLocalNotification(_ hour: Int, _ minute: Int) {
    print("Local Notification Setup")

    let calendar = NSCalendar(identifier: .gregorian)!;

    var dateFire = Date()

    // if today's date is passed, use tomorrow
    var fireComponents = calendar.components( [NSCalendar.Unit.day, NSCalendar.Unit.month, NSCalendar.Unit.year, NSCalendar.Unit.hour, NSCalendar.Unit.minute], from:dateFire)

    if (fireComponents.hour! > hour
        || (fireComponents.hour == hour && fireComponents.minute! >= minute) ) {

        dateFire = dateFire.addingTimeInterval(86400)  // Use tomorrow's date
        fireComponents = calendar.components( [NSCalendar.Unit.day, NSCalendar.Unit.month, NSCalendar.Unit.year, NSCalendar.Unit.hour, NSCalendar.Unit.minute], from:dateFire);
    }

    /// -> If you want to get tomorrow date you can use this code.
    /*
    dateFire = dateFire.tomorrow!
 */

    // set up the time
    fireComponents.hour = hour
    fireComponents.minute = minute

    // schedule local notification
    dateFire = calendar.date(from: fireComponents)!

    let localNotification = UILocalNotification()
    localNotification.fireDate   = dateFire
    localNotification.alertBody  = "alert body"
    localNotification.alertTitle = "alert title"
    localNotification.repeatInterval = NSCalendar.Unit.day
    localNotification.soundName = UILocalNotificationDefaultSoundName;

    UIApplication.shared.scheduleLocalNotification(localNotification);
}

extension Date {

    var tomorrow: Date? {
        return Calendar.current.date(byAdding: .day, value: 1, to: self)
    }
}

答案 1 :(得分:0)

您必须使用<?php $id = $_POST['id']; echo $id; //// rest of process according to id ?> 而不是UNCalendarNotificationTrigger并且不赞成使用UILocalNotificaion

UNTimeIntervalNotificationTrigger