Как определить состояние хост-приложения в расширении службы уведомлений?

Расширение службы уведомлений загружает файл мультимедиа, чтобы отобразить его как вложение файла UNNotification. Однако, когда основное приложение находится на переднем плане, уведомление не отображается, поэтому расширению уведомления не нужно загружать медиафайл.

Как можно предотвратить загрузку в зависимости от состояния приложения?


person Manuel    schedule 05.06.2018    source источник
comment
Я с той же проблемой. Даже когда я не показываю уведомление, оно вызывает didReceiveNotificationRequest и дважды загружает изображение!! Трата денег разработчиков на плохой дизайн Apple. Apple по-прежнему берет комиссию в размере 30% от App Store.   -  person coolcool1994    schedule 19.09.2020


Ответы (1)


Сначала из ios 10 вы можете представить его с помощью метода делегата UNUserNotificationCenterDelegate

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

      completionHandler([.alert, .sound])


}

во-вторых, это может быть странно, но вы можете поделиться состоянием приложения с userDefaults, если у вас есть группы приложений, включенные с расширением

person Sh_Khan    schedule 05.06.2018
comment
Использование NSUserDefaults для обмена состоянием приложения звучит как ненадежный взлом. Любые другие предложения? - person Manuel; 05.06.2018