Локальное уведомление с различным основным текстом каждый день - PullRequest
0 голосов
/ 30 октября 2019

Моя цель - создать локальное уведомление, которое должно срабатывать каждый день. Тело уведомления должно быть другим каждый день. Это строковый массив, одна строка которого должна быть показана в уведомлении. Неважно, будет ли String выбран случайным образом или в последовательности упорядочен массив.

var arrayText: [String] = ["text1",  
                           "text2",  
                           "text3",  
                           "text4",  
                           "text5"]  

Это то, как далеко я дошел. Просто обычное локальное уведомление, каждый раз с одним и тем же основным текстом.

func scheduleNotifications()
    {

              let center = UNUserNotificationCenter.current()

              center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
                  if !granted {
                      print("Something went wrong")
                  }
              }

              let content = UNMutableNotificationContent()
              content.title = "Test"
              content.body = "test"
              content.sound = UNNotificationSound.default

              let gregorian = Calendar(identifier: .gregorian)
              let now = Date()
              var components = gregorian.dateComponents([.year, .month, .day, .hour, .minute, .second], from: now)

              components.hour = 18
              components.minute = 42
              components.second = 10

              let date = gregorian.date(from: components)!   

              let triggerDaily = Calendar.current.dateComponents([.hour, .minute, .second], from: date)    

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

              let uuidString = UUID().uuidString
              let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)

              center.add(request, withCompletionHandler: { (error) in
                  if let error = error {
                      // Something went wrong
                  }
              })
    }

}

Справка будет потрясающей. И спасибо за каждый полезный ответ. Искренне Ваш. Relbot

1 Ответ

0 голосов
/ 30 октября 2019

Просто измените content.body = "test" на content.body = arrayText[Int(arc4random_uniform(5))]. Это сделает так, что content.body будет равен случайному элементу в arrayText.

...