В iOS 13 какие события я получаю, когда пользователь перемещает мое приложение в переключателе приложений? - PullRequest
1 голос
/ 26 октября 2019

Мне очень трудно классифицировать и учитывать, какие события я получаю (или не получаю), когда пользователь перелистывает мое приложение в переключателе приложений на iOS 13. Похоже, это связано с изменениями, вызваннымиподдержка нескольких сцен. Какие события я получаю в этой ситуации?

1 Ответ

3 голосов
/ 26 октября 2019

Предположим, что ваше приложение поддерживает оконные сцены. Так что то, что пользователь пролистывает в переключателе приложений, на самом деле является сценой , а не вашим приложением в целом. Тогда возможности выглядят следующим образом:

На iPhone

Если сцена была самой передней:

  • sceneDidEnterBackground
  • applicationWillTerminate(_:)

Но если сцена не была первой, вы ничего не получите;вы уже получили sceneDidEnterBackground, и вы не получите applicationWillTerminate(_:) сейчас, потому что приложение не запущено.

На iPad, если приложение не поддерживает несколько окон

Если сцена была самой передней:

  • sceneDidDisconnect(_:)
  • application(_:didDiscardSceneSessions:)
  • applicationWillTerminate(_:)

Но если сцена не была передовой, вы ничего не получите;вы уже получили sceneDidEnterBackground, и вы не получите applicationWillTerminate(_:) сейчас, потому что приложение не запущено.

На iPad, если приложение поддерживает , поддерживает несколько окон

Если сцена была самой передней:

  • sceneDidEnterBackground
  • applicationWillTerminate(_:) (возможно)

Но если сцена не была самой переднейвы ничего не получите;вы уже получили sceneDidEnterBackground, и вы не получите applicationWillTerminate(_:) сейчас, потому что либо приложение не запущено, либо приложение не завершается (если есть другое окно). Если приложение все еще работает, вы можете получить sceneDidDisconnect(_:) и, возможно, application(_:didDiscardSceneSessions:) позже.


Выводы

Что здесь странного? Это тот случай, когда мы работаем на iPad и поддерживаем сцены, но , а не несколько окон. Мы не получаем sceneDidEnterBackground! Я считаю это бессвязным. Поскольку мы не поддерживаем несколько окон, это в основном приложение для iPhone, и оно должно вести себя как приложение для iPhone. Мне не нужно удваивать код только потому, что мое приложение работает на iPhone и iPad.

...