Pull to refresh

Comments 6

я свифт никогда не изучал, но кажется что метод scheduleMLTrain() из второго примера нигде не вызывается
Хорошее замечание — сам не увидел этой проблемки. Вышеуказанный метод должен вызываться из метода AppDelegate, а конкретно — applicationDidEnterBackground.
Интересно, а возможно из хендлера пуш-уведомления регистрировать задачу процессинга? Или всё упрётся в тайминги запуска ОС и регистрацию в делегате приложения?

BGTaskScheduler.shared.register(
    forTaskWithIdentifier: "pl.snowdog.example.train",
    using: DispatchQueue.global()
  ) { task in
       self.handleMLTrain(task)
     }


К примеру, отдать через скрытый пуш новые данные для обучения ML и только после этого зарегистрировать задачу на обучение.
Registration of all launch handlers must be complete before the end of applicationDidFinishLaunching(_:).

Important

Register each task identifier only once. The system kills the app on the second registration of the same task identifier.
Методы application(_:performFetchWithCompletionHandler:) и setMinimumBackgroundFetchInterval(_:), например.
Sign up to leave a comment.

Articles