У меня возникают проблемы с отображением локального уведомления в установленное время на симуляторе XCode - PullRequest
0 голосов
/ 26 января 2020

Я довольно новичок в кодировании, и мне было интересно, как это сделать или проблема в моем коде. У меня изначально было установлено значение go через десять секунд после того, как симулятор принял уведомления, но фактическое уведомление там также не будет go.

import UIKit
import UserNotifications

class ViewController: UIViewController {

  override func viewDidLoad() {
      super.viewDidLoad()

     // Do any additional setup after loading the view.
      let center = UNUserNotificationCenter.current()
      center.requestAuthorization(options: [.alert, .sound])
          { (granted, error) in

      }
      let content = UNMutableNotificationContent()
      content.title = "Prevent nosocomial infections!"
      content.body = "Make sure to do hand hygiene"
      content.sound = .default

      var dateComponents = DateComponents ()
      dateComponents.hour = 9
      dateComponents.minute = 30

      let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
      let uuidString = UUID().uuidString
      let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)

      center.add(request) { (error) in
      }
    }
}

1 Ответ

0 голосов
/ 26 января 2020

У меня изначально было установлено значение go через десять секунд после того, как симулятор принял уведомления

Нет, это не то, что вы делаете. center.requestAuthorization возвращает свое значение асинхронно. Таким образом, вы пытаетесь запланировать уведомление до , когда пользователь принял уведомления: диалоговое окно все еще работает, спрашивает об уведомлениях, и тем временем вы просто go прямо включаете свой код. Очевидно, что это не сработает, потому что уведомления еще не были приняты. Вам нужно переместить этот код в (в настоящее время пустой) обработчик завершения для requestAuthorization.

...