mirror of
https://github.com/Mueller-Patrick/DHBW-Service-App.git
synced 2026-04-28 18:30:09 +00:00
✨ RaPla parser is now aware of recurring events
- Also some small improvements and basic implementation of Notifications
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// SettingsPushNotifications.swift
|
||||
// DHBW-Service
|
||||
//
|
||||
// Created by Patrick Müller on 16.02.21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsPushNotifications: View {
|
||||
@State private var notificationsEnabled = false
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Toggle(isOn: $notificationsEnabled) {
|
||||
Text("Receive push notifications")
|
||||
}
|
||||
.frame(maxWidth: 500, alignment: .center)
|
||||
|
||||
Button(action: {
|
||||
scheduleTestNotification()
|
||||
}){
|
||||
Text("Test Notification")
|
||||
}
|
||||
}
|
||||
.onChange(of: notificationsEnabled) { newVal in
|
||||
if(newVal) {
|
||||
enablePushService()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension SettingsPushNotifications {
|
||||
private func enablePushService() {
|
||||
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { (allowed, error) in
|
||||
//This callback does not trigger on main loop be careful
|
||||
if allowed {
|
||||
print("Allowed")
|
||||
|
||||
// Get token
|
||||
DispatchQueue.main.async {
|
||||
UIApplication.shared.registerForRemoteNotifications()
|
||||
}
|
||||
} else {
|
||||
print("Error")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func scheduleTestNotification() {
|
||||
let content = UNMutableNotificationContent()
|
||||
content.title = "Upcoming Exam"
|
||||
content.subtitle = "Your exam in theoretical computer science 3 is one week from now."
|
||||
content.sound = UNNotificationSound.default
|
||||
|
||||
// show this notification five seconds from now
|
||||
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
|
||||
|
||||
// choose a random identifier
|
||||
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
|
||||
|
||||
// add our notification request
|
||||
UNUserNotificationCenter.current().add(request)
|
||||
}
|
||||
}
|
||||
|
||||
struct SettingsPushNotifications_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
SettingsPushNotifications()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user