Post

Replies

Boosts

Views

Activity

Silent Push Notification not working
Hi, I try to including push notifications to my app. It worked well if I use normal push notifications. If I send a notification with content-available : 1 nothing happened. It doesn't matter if the app is in foreground or background. I enabled remote notifications. I don't know if I something miss. Perhaps you can give me an advice. Here is the code from the AppDelegate Class. Thanks in advanced! func application(         _ application: UIApplication,         didFailToRegisterForRemoteNotificationsWithError error: Error     ) {         print("Failed to register: \(error)")     }          func application(         _ application: UIApplication,         didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data     ) {         let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }         let token = tokenParts.joined()          }     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {         // Override point for customization after application launch.         print(Realm.Configuration.defaultConfiguration.fileURL!)         ConnectionManager.sharedInstance.observeReachability()         do {             let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)             _ = try Realm(configuration: config)                      }catch {             print ("Error initializing realm. \(error)")         }         UNUserNotificationCenter.current().delegate = self         registerForPushNotifications()         return true     }     func getNotificationSettings() {       UNUserNotificationCenter.current().getNotificationSettings { settings in           guard settings.authorizationStatus == .authorized else { return }           DispatchQueue.main.async {             UIApplication.shared.registerForRemoteNotifications()           }       }     }     func registerForPushNotifications() {         UNUserNotificationCenter.current()           .requestAuthorization(             options: [.alert, .sound, .badge]) { [weak self] granted, _ in             print("Permission granted: \(granted)")             guard granted else { return }             self?.getNotificationSettings()           }     }          func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { print(userInfo)         guard let aps = userInfo["aps"] as? [String: AnyObject] else {             completionHandler(.failed)             return         }     }     // MARK: UISceneSession Lifecycle          func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {         // Called when the user discards a scene session.         // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.         // Use this method to release any resources that were specific to the discarded scenes, as they will not return.     }          // MARK: - Core Data stack          lazy var persistentContainer: NSPersistentContainer = {         /*          The persistent container for the application. This implementation          creates and returns a container, having loaded the store for the          application to it. This property is optional since there are legitimate          error conditions that could cause the creation of the store to fail.          */         let container = NSPersistentContainer(name: "TestFetchData")         container.loadPersistentStores(completionHandler: { (storeDescription, error) in             if let error = error as NSError? {                 // Replace this implementation with code to handle the error appropriately.                 // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.                                  /*                  Typical reasons for an error here include:                  * The parent directory does not exist, cannot be created, or disallows writing.                  * The persistent store is not accessible, due to permissions or data protection when the device is locked.                  * The device is out of space.                  * The store could not be migrated to the current model version.                  Check the error message to determine what the actual problem was.                  */                 fatalError("Unresolved error \(error), \(error.userInfo)")             }         })         return container     }()          // MARK: - Core Data Saving support          func saveContext () {         let context = persistentContainer.viewContext         if context.hasChanges {             do {                 try context.save()             } catch {                 // Replace this implementation with code to handle the error appropriately.                 // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.                 let nserror = error as NSError                 fatalError("Unresolved error \(nserror), \(nserror.userInfo)")             }         }     }      } // MARK: - UNUserNotificationCenterDelegate extension AppDelegate: UNUserNotificationCenterDelegate {     func userNotificationCenter(         _ center: UNUserNotificationCenter,         didReceive response: UNNotificationResponse,         withCompletionHandler completionHandler: @escaping () -> Void     ) {         print("userNotiCenter")         completionHandler()     } }
1
0
764
Nov ’22