Skip to content

Commit 5de810f

Browse files
committed
Now ask for notification permissions
1 parent d8a1ef2 commit 5de810f

2 files changed

Lines changed: 22 additions & 5 deletions

File tree

BrickHack-Mobile/AlertMessage.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class MessageHandler {
3737
iconText: "⚠️")
3838

3939
// Tapping message will hide view
40-
view.tapHandler = { _ in SwiftMessages.hide() }
40+
view.tapHandler = { _ in SwiftMessages.hide() }
4141

4242
// Configure view properties
4343
// @TODO: Add progress bar timer, à-la Discord?
@@ -47,9 +47,7 @@ class MessageHandler {
4747
config.preferredStatusBarStyle = .lightContent
4848
config.duration = .automatic
4949

50-
5150
SwiftMessages.show(config: config, view: view)
52-
5351
}
5452

5553
static func showConnectionError() {
@@ -131,4 +129,11 @@ class MessageHandler {
131129
body: "Please try again later.",
132130
type: .error)
133131
}
132+
133+
static func showNotificationDisabledInfo() {
134+
print("INFO: Notification permissions denied, need to reset in Settings!")
135+
showAlertMessage(withTitle: "Notifications are disabled!",
136+
body: "Go to the Settings app to re-enable notifications.",
137+
type: .info)
138+
}
134139
}

BrickHack-Mobile/Controllers/ScheduleTableViewController.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,21 +235,22 @@ class ScheduleTableViewController: UITableViewController {
235235

236236
private func scheduleFavoriteNotification(forEvent timelineEvent: TimelineEvent) {
237237

238+
askForNotificationPermissionIfNeeded()
239+
238240
// Extract components and set trigger
239241
let components = Calendar.current.dateComponents(in: .current, from: timelineEvent.event.time)
240242
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
241243

242244
print(timelineEvent.event.uuid)
243245

244-
245246
let content = UNMutableNotificationContent()
246247
content.title = timelineEvent.event.title + " is starting!"
247248
content.body = timelineEvent.event.description
248249
let request = UNNotificationRequest(identifier: timelineEvent.event.uuid, content: content, trigger: trigger)
249250

250251
// Add request to local notification center
251252
UNUserNotificationCenter.current().add(request) { error in
252-
if let error = error {
253+
if error != nil {
253254
DispatchQueue.main.async {
254255
MessageHandler.showNotificationRegisterError(withEventTitle: timelineEvent.event.title)
255256
}
@@ -263,6 +264,17 @@ class ScheduleTableViewController: UITableViewController {
263264
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [identifier])
264265
}
265266

267+
private func askForNotificationPermissionIfNeeded() {
268+
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { (granted, error) in
269+
if !granted {
270+
271+
DispatchQueue.main.async {
272+
MessageHandler.showNotificationDisabledInfo()
273+
}
274+
}
275+
}
276+
}
277+
266278
// MARK: Section headers and view configuration
267279

268280
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

0 commit comments

Comments
 (0)