|
@@ -19,7 +19,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|
|
var window: UIWindow?
|
|
|
var appIsInForeground = false
|
|
|
|
|
|
- func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
|
|
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
|
|
// explicitly ignore SIGPIPE to avoid crashes, see https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/CommonPitfalls/CommonPitfalls.html
|
|
|
// setupCrashReporting() may create an additional handler, but we do not want to rely on that
|
|
|
signal(SIGPIPE, SIG_IGN)
|
|
@@ -65,6 +65,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|
|
} catch {
|
|
|
print("Unable to start notifier")
|
|
|
}
|
|
|
+
|
|
|
+ // Push Notifications
|
|
|
+ // Check if launched from notification
|
|
|
+ let notificationOption = launchOptions?[.remoteNotification]
|
|
|
+ print(notificationOption)
|
|
|
+
|
|
|
+ registerForPushNotifications()
|
|
|
+
|
|
|
|
|
|
return true
|
|
|
}
|
|
@@ -259,6 +267,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|
|
// MARK: - PushNotifications
|
|
|
|
|
|
func registerForPushNotifications() {
|
|
|
+ print("register push")
|
|
|
UNUserNotificationCenter.current().delegate = self
|
|
|
|
|
|
UNUserNotificationCenter.current()
|
|
@@ -267,14 +276,47 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|
|
guard granted else { return }
|
|
|
self.getNotificationSettings()
|
|
|
}
|
|
|
+ UNUserNotificationCenter.current()
|
|
|
+ .requestAuthorization(options: [.alert, .sound, .badge]) {
|
|
|
+ [weak self] granted, error in
|
|
|
+
|
|
|
+ print("Permission granted: \(granted)")
|
|
|
+ guard granted else { return }
|
|
|
+ self?.getNotificationSettings()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private func getNotificationSettings() {
|
|
|
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
|
|
logger.info("Notification settings: \(settings)")
|
|
|
+ guard settings.authorizationStatus == .authorized else { return }
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ UIApplication.shared.registerForRemoteNotifications()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ func application(
|
|
|
+ _ application: UIApplication,
|
|
|
+ didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
|
|
|
+ ) {
|
|
|
+ let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
|
|
|
+ let token = tokenParts.joined()
|
|
|
+ print("Device Token: \(token)")
|
|
|
+ }
|
|
|
|
|
|
+ func application(
|
|
|
+ _ application: UIApplication,
|
|
|
+ didFailToRegisterForRemoteNotificationsWithError error: Error) {
|
|
|
+ print("Failed to register: \(error)")
|
|
|
+ }
|
|
|
+
|
|
|
+ func application(
|
|
|
+ _ application: UIApplication,
|
|
|
+ didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
|
|
|
+ print("notification", userInfo)
|
|
|
+ }
|
|
|
+
|
|
|
private func userNotificationCenter(_: UNUserNotificationCenter, willPresent _: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
|
|
|
logger.info("forground notification")
|
|
|
completionHandler([.alert, .sound])
|