В настоящее время я создаю музыкальное приложение, которое берет управление из центра управления iOS7. Одна из особенностей, которую я заметил, заключается в том, что если я нажму кнопку управления «воспроизведение», мое приложение запустится, даже если оно было убито. Это не то, чего я хочу, поэтому я добавил return NO
в didFinishLaunchingWithOptions
, если приложение запускается в фоновом режиме, чтобы предотвратить процесс инициализации.
К сожалению, это не меняет того факта, что приложение все еще запущено, и didFinishLaunchingWithOptions
больше не вызывается (и ничего не инициализируется). Поскольку я не могу принудительно убить приложение, когда я не хочу, чтобы оно запускалось, есть ли способ предотвратить запуск приложения? Я думал, что возврат NO
поможет, но, похоже, это не так.
The return value is ignored if the app is launched as a result of a remote notification
developer.apple.com/library/ios/documentation/uikit/reference/: - person Adam   schedule 16.12.2013didFinishLaunchingWithOptions:
уничтожит приложение. Шучу, не рекомендую этого делать :) - person TotoroTotoro   schedule 16.12.2013UIApplicationDelegate
с помощьюapplicationDidEnterBackground:
. Если вы не можете сделать это изUIApplicationDelegate
, вы всегда можете подписаться на уведомлениеUIApplicationDidEnterBackgroundNotification
и удалить подписку на уведомление о воспроизведении в этом объекте. - person Adam   schedule 16.12.2013didFinishLaunchingWithOptions
? Насколько я понимаю, этот метод вызывается только при первом запуске приложения. - person loadedion   schedule 16.12.2013not running
— это запуск в фоновом режиме. Проверьтеapplication.applicationState
вapplication:didFinishLaunchingWithOptions:
дляUIApplicationStateInactive
при запуске на переднем плане илиUIApplicationStateBackground
при запуске в фоновом режиме. Затем вместоapplicationDidBecomeActive:
вызываетсяapplicationDidEnterBackground:
. - person nekno   schedule 17.12.2013running state
с какой-либо точностью? Я запускаю свое приложение, а затем сразу же убиваю его. Предполагая, что приложение находится в состоянииnot running
, я пытаюсь нажатьplay
черезcontrol center
, но оно игнорируется (как я изначально и предполагал).play
не принимается последовательно, что делает тестирование немного запутанным. - person loadedion   schedule 17.12.2013Not running
›Inactive
›Active
. Нажатие кнопки «Домой» отправляет приложение черезInactive
›Background
. Уничтожение приложения затем отправляет приложение наNot running
. При нажатии кнопки воспроизведения в Центре управления будет отправлено уведомление, если ваше приложение было последним приложением, воспроизводящим мультимедиа в состоянииActive
илиBackground
. Если бы вы не были последним воспроизводящим медиафайлом, я бы не ожидал, что он будет запущен в фоновом режиме при нажатии кнопки воспроизведения в CC, хотя я не нашел точных документов по этому поводу. - person nekno   schedule 17.12.2013applicationWillEnterForeground
вызвано. Там я могу начать инициализацию и сбросить флаг - person loadedion   schedule 17.12.2013