Обновление модели из 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