#ios #swift #xcode #unnotificationserviceextension
Вопрос:
Я использую расширение службы уведомлений в своем приложении для обработки push-уведомлений, когда приложение находится в фоновом режиме:
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -gt; Void) { self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) if let bestAttemptContent = bestAttemptContent { if let userInfo = request.content.userInfo as? [String: AnyObject] { if UIApplication.shared.applicationState == .background { // error 'shared' is unavailable in application extensions for iOS: Use view controller based solutions where appropriate } PushNotificationHelper.handleNotification(userInfo: userInfo, context: persistentContainer.viewContext) contentHandler(bestAttemptContent) } else { contentHandler(bestAttemptContent) } } }
Однако я замечаю, что это также вызывается, когда приложение находится на переднем плане, чего я не хочу.
Я хотел вернуться из этой функции, ничего не делая, когда приложение находится на переднем плане, но когда я пытаюсь «если UIApplication.shared.ApplicationState == .background», я получаю сообщение об ошибке, включенное выше.
Как я могу проверить состояние приложения с помощью этого расширения?
Комментарии:
1. Расширение работает в другом контексте. Вы можете поделиться набором пользовательских настроек по умолчанию между вашим приложением и вашим расширением и установить/очистить логическое значение, когда ваше приложение выходит на передний план/фон
2. Я попробую это сделать. большое спасибо