Обновление модели из iOS push-уведомлений

Я пытаюсь обновить мою модель после 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

0 ответов

Другие вопросы по тегам