Как сделать несколько локальных уведомлений на Swift? - PullRequest
0 голосов
/ 10 июля 2020

Суть в том, что я сделал одно локальное уведомление за временной интервал 10 секунд. Как добавить в этот код несколько уведомлений с разными задержками? То есть разные уведомления с разной задержкой (несколько часов, дней и так далее). Если это возможно, воспользуйтесь примером из моего кода. Мне сказали, что мне нужно поставить другой идентификатор: «контент» и разное время. Но я не понимаю, какие части кода мне нужно продублировать.

import UIkit
import UserNotifications

class ViewController UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let center = UNUserNotificationCenter.current()
        
        let content = UNMutableNotificationContent()
        
        content.title = "Hi"
        content.body = "Bear"
        content.sound = UNNotificationSound.default
        content.threadIdentifier = "local-notifications"
        
        let date = Date(timeIntervalSinceNow: 10)
        let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
        let request = UNNotificationRequest(identifier: "content", content: content, trigger: trigger)
        
        center.add(request) {(error) in 
            if error != nil {
                print (error)
            }
        }
    }
```

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете создать метод scheduleNotification(identifier:content:date:) в UNUserNotificationCenter extension,

extension UNUserNotificationCenter {
    func scheduleNotification(identifier: String, content: UNMutableNotificationContent, date: Date) {
        let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
        self.add(request) {(error) in
            if error != nil {
                print (error)
            }
        }
    }
}

Теперь вызовите этот метод для нескольких уведомлений с соответствующими параметрами, которые вы хотите использовать , т.е.

Пример-1:

let content1 = UNMutableNotificationContent()
content1.title = "Hi"
UNUserNotificationCenter.current().scheduleNotification(identifier: "content1", content: content1, date: Date(timeIntervalSinceNow: 10))

Пример-2:

let content2 = UNMutableNotificationContent()
content2.title = "Hello"
UNUserNotificationCenter.current().scheduleNotification(identifier: "content2", content: content2, date: Date(timeIntervalSinceNow: 20))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...