Контролируйте приложение и блокируйте изменения состояния в фоновом режиме на iOS - PullRequest
0 голосов
/ 11 октября 2018

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

Я не могу понять, как отслеживать такие изменения состояния, даже после того, как телефон заблокирован на некоторое время. Нет «фона»режимы », охватывающие этот вариант использования, поэтому я ожидаю, что приложение будет приостановлено через некоторое время в фоновом режимеТем не менее, такие приложения, как Forest, делают это успешно.Нужен ли обходной путь, чтобы приложение не спало, или я упускаю какой-то подход, который вообще не требует фонового выполнения?

Помощь очень ценится!

1 Ответ

0 голосов
/ 11 октября 2018

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

  1. Используйте обычные обратные вызовы делегата приложения для переходов состояния приложения, чтобы определить, может ли приложение все еще выполнять код.Это легкая часть.
  2. Вы могли бы что-то сделать с обработкой строк и регулярных выражений журналов консоли, чтобы определить, когда другие приложения открываются, закрываются и т. Д., И другой деятельностью, которая позволит вам обнаружить активность на устройстве, приходящую из других мест, кроме вашего приложения.
  3. Вам нужно использовать некую платформу, которую Apple говорит, что может получать данные даже в фоновом режиме.Одним из таких каркасов является Core Motion .Также могут быть и другие, которые лучше соответствуют конкретным потребностям вашего приложения.

См. Состояния выполнения для приложений .

См. Фоновое выполнение .

См. Кокоанетика: доступ к системному журналу iOS .

См. Сохранить приложение iOS в состоянии готовности к отслеживанию движения .

См. Средство системного журнала Apple .

...