Как я могу проверить, находится ли мое приложение SwiftUI в фоновом режиме с расширением NotificationService?

#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. Я попробую это сделать. большое спасибо