IOS: Откриване на заключване, след като приложението е влязло във фонов режим?

Има ли начин да се открие заключване, след като приложението влезе във фонов режим? Например,

  1. Моето приложение (A) е отворено на преден план
  2. След това извеждам друго приложение (B) на преден план
  3. След това заключете екрана

Възможно ли е (A) да открие ключалката?


person Grace Shao    schedule 21.12.2015    source източник


Отговори (2)


Отговорът е „На теория да, но обикновено не“.

Приложенията всъщност имат повече състояния от активни и фонови.

Щатите са:

  1. Активен
  2. Фон (все още работи, но друго приложение е на преден план)
  3. Спряно (в паметта, но не получава никакво процесорно време)
  4. Не работи. (вече не се изпълнява или е в паметта.)

Когато потребителят смени приложенията, натисне бутона за начало или заключи устройството си, вашето приложение получава известие, че преминава във фонов режим, но всъщност работи във фонов режим само за МНОГО кратко време. Преминава към спряно почти веднага. След като бъдете спрян, можете да бъдете прекратен по всяко време без допълнително предизвестие.

Ако имате нужда от повече време, за да завършите дадена задача, когато получите известие, че сте преместени на заден план, можете да поискате това чрез извикването beginBackgroundTaskWithExpirationHandler. От момента на писане обаче получавате най-много 3 минути, след което манипулаторът ви за изтичане се задейства и приложението ви е спряно.

В резултат на това всъщност не можете да работите във фонов режим много дълго и е вероятно, докато потребителят заключи екрана (или той се заключи автоматично), вие вече сте спрени и не получавате известия.

person Duncan C    schedule 21.12.2015
comment
Моят случай на използване е, че потребителите могат да превключат към друго приложение за известно време (‹= 1 минута) само за промяна на нещата и да се върнат към нашето приложение. Ако задам нов таймер, когато приложението е поставено на заден план, смятате ли, че е възможно? Мислите ли, че Apple ще позволи? - person Grace Shao; 21.12.2015
comment
Вярвам, че ще го направят, стига да работите във фонов режим само за кратко време и по ясно дефинирана причина. Все пак не твърдя, че говоря от името на Apple. - person Duncan C; 22.12.2015

Възможно ли е (A) да открие ключалката?

Не, по две причини:

  • При никакви обстоятелства не можете да откриете, че екранът е заключен. Дори ако приложението ви е най-отпред, когато екранът е заключен, всичко, което вие научавате, е, че приложението ви е било на заден план, без да можете да научите защо .

  • Във вашият сценарий, докато екранът е заключен, вашето приложение дори не работи — то е спряно. Така че не може да "открие" нищо.

person matt    schedule 21.12.2015
comment
Що се отнася до първото ви твърдение, е възможно да откриете, че екранът е заключен. (Използвате notify_register_dispatch. Вижте тази нишка.) Втората ви причина обаче все още е валидна, което прави известието за заключване не много полезно, освен ако приложението ви не е настроено да работи във фонов режим. - person Duncan C; 21.12.2015