Ежедневное локальное оповещение сработало на один день и затем остановилось - PullRequest
0 голосов
/ 13 марта 2020

Я написал код для ежедневного локального уведомления в своем приложении, которое будет отправляться каждый день в 13:00 (13:00). В день, когда я его написал, код работал нормально, а уведомление отправлено ровно в 13:00. По неизвестной причине он работал только отлично, но теперь он не работает, я не получаю никаких уведомлений.

(я написал код на странице регистрации приложения)

Код:

import UIKit
import FirebaseAuth
import Firebase

class SignUp: UIViewController {

    @IBOutlet weak var emailSignupTF: UITextField!
    @IBOutlet weak var passwordSignupTF: UITextField!
    @IBOutlet weak var errorLabel: UILabel!
    var message = ""

    override func viewDidLoad() {
        super.viewDidLoad()        
        navigationItem.setHidesBackButton(true, animated: true)

        //First Notification//
        let content = UNMutableNotificationContent()
        content.title = "תזכורת"
        content.body = "לא לשכוח לעדכן את מיקומך בתדריך הקרוב"

        // Configure the recurring date.
        var dateComponents = DateComponents()
        dateComponents.calendar = Calendar.current
        dateComponents.hour = 13
        dateComponents.minute = 0


        // Create the trigger as a repeating event.
        let trigger = UNCalendarNotificationTrigger(
                 dateMatching: dateComponents, repeats: true)

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

        // Schedule the request with the system.
        let notificationCenter = UNUserNotificationCenter.current()
        notificationCenter.add(request) { (error) in
           if error != nil {
              // Handle any errors.
           }
        }
}

1 Ответ

0 голосов
/ 13 марта 2020

Проблема здесь в том, что вы специально берете сегодняшнюю дату, произнося dateComponents.calendar = Calendar.current, а затем устанавливаете значение часа и минуты. Это означает, что уведомление будет отправляться каждый год, в эту дату в указанные часы и минуты. Чтобы это исправить, просто сделайте:

// Configure the recurring date.
var dateComponents = DateComponents()
dateComponents.hour = 13
dateComponents.minute = 0

Теперь уведомление будет отправляться каждый день, в 13:00. Справка: https://developer.apple.com/documentation/usernotifications/uncalendarnotificationtrigger

...