Приложение запускается до того, как действие уведомления выполнится полностью - PullRequest
0 голосов
/ 14 июня 2019

Сводка: приложение запускается без получения новых данных, пока код действия уведомления .foreground все еще выполняется.

Правка для ясности: здесь я имею в виду только локальные уведомления.

ИтакПока у меня есть уведомления, которые нужно отображать вовремя, кнопки действий, которые будут отображаться под уведомлением, и данные словаря userInfo, которые нужно правильно передать из тела уведомления в функцию didRecieve в моем AppDelegate.

Однако кажется, что приложение запускается одновременно с кодом, выполняемым в операторе switch действия уведомления didRecieve, в результате чего UserDefaults (в который сохраняется функция didReceive) завершают сохранение с новыми значениями после того, как приложение уже запущеносо старыми значениями.

Есть ли способ отложить запуск приложения до тех пор, пока эти пользовательские значения не будут сохранены, или же существует лучший подход к этому вопросу.

Существует функция scheduleNotification(), которая устанавливаетcontent.userInfo.

Функция userNotificationCenter(_ center:didReceive:withCompletionHandler @escaping () -> Void) получает это через response.notification.request.content.userInfo и все в порядке.

Когда пользователь нажимает одну из кнопок действий с уведомлением, которая имеет опцию .foreground, он берет указанные выше данные userInfo и сохраняет их по умолчанию, используяUserDefaults.standard.set(:forKey).

Ожидаемое поведение на этом этапе: приложение при запуске должно прочитать недавно установленные данные UserDefaults и соответственно обновить свой пользовательский интерфейс.

Что происходит: приложение запускается безотносительночто бы ни было к недавно установленным User Defaults данным.Однако при запуске двух уведомлений после запуска второго уведомления приложение отображает пользовательский интерфейс, соответствующий первому уведомлению, что говорит мне о том, что функция уведомления didReceive выполняет свою работу, но только не до запуска приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...