Шаг 1:
Когда приложение запущено и ранее не находилось в фоновом режиме (приостановлено), сначала выполняется application:didFinishLaunchingWithOptions:
. Этот метод содержит параметр launchOptions
- когда он равен nil
, приложение запускается с помощью значка в Springboard. В противном случае launchOptions
будет указывать причину, по которой было запущено приложение (URL-схема, Push-уведомление и т. Д. Подробнее в документации ).
Шаг 2:
Все идет нормально. Теперь давайте позаботимся о возобновлении. Когда приложение возобновляется (или запускается), в какой-то момент оно вызовет applicationDidBecomeActive
в делегате приложения. Хитрость в том, что этот метод вызывается после того, как все возможные причины, связанные с обслуживанием приложения, могут быть возобновлены (запущены). Поэтому все, что вам нужно сделать, это ввести флаг BOOL
, который вы установите в методах, обслуживающих причину возобновления работы вашего приложения, и проверьте его позже в applicationDidBecomeActive
относительно ожидаемого значения.
Список (я полагаю, неполных) методов, в которых необходимо установить ваш флаг:
application:handleOpenURL:
application:openURL:sourceApplication:annotation:
application:didReceiveLocalNotification:
application:didReceiveRemoteNotification:
Остальные методы вы найдете в документации , упомянутой выше. И помните, что applicationDidBecomeActive
для Шаг 1 также будет вызван.
Удачи!