NotificationManager.swift
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//
// NotificationManager.swift
// Pro-Seecurity-VPN
//
// Created by Artem Talko on 29.11.2023.
//
import UIKit
import UserNotifications
final class NotificationManager {
private let notificationInterval: TimeInterval = 60 * 4 * 60
init() {
chechForPermission()
}
private func chechForPermission() {
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.getNotificationSettings { settings in
switch settings.authorizationStatus {
case .authorized:
self.dispatchNotification()
case .notDetermined:
notificationCenter.requestAuthorization(options: [.alert, .sound]) { didAllow, error in
if didAllow {
self.dispatchNotification()
}
}
case .denied:
return
default:
return
}
}
}
private func generateRandomNotificationBody() -> String {
return StringConstants.notificationMessages.randomElement() ?? ""
}
private func dispatchNotification() {
let identifier = StringConstants.notificationIdentifier
let notificationCenter = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = StringConstants.notificationTitle
content.body = generateRandomNotificationBody()
content.sound = .default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: notificationInterval, repeats: true)
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
notificationCenter.removePendingNotificationRequests(withIdentifiers: [identifier])
notificationCenter.add(request)
}
}