Обновление модели из iOS push-уведомлений - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь обновить мою модель после push-уведомления.Поскольку моя полезная нагрузка может превышать 4 КБ, я хочу загрузить соответствующий контент с моего сервера.Есть много способов сделать это, но я не могу решить, какой из них лучше подходит для большинства сценариев.Я не хочу повторять себя вокруг приложения.Я нацеливаюсь на iOS 10 +

  • Использование Silent Push

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { }

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

  • Когда пользователь щелкает уведомление

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { }

Этотоже работает но с задержкой.Потому что, когда пользователь нажимает на уведомление, я должен получить полезную нагрузку, загрузить данные и показать связанный пользовательский интерфейс.Это чувствует себя медленным.

  • UNNotificationServiceExtension и UNNotificationContentExtension Я не уверен, какой из них или оба подходят для моего варианта использования.AFAIK, с UNNotificationServiceExtension я могу сделать некоторую работу, прежде чем представить уведомление пользователю.Также представляется возможным загружать данные в viewDidLoad() из UNNotificationContentExtension
...