Как я могу вызвать метод, когда приложение находится в фоновом режиме в iOS? - PullRequest
1 голос
/ 17 ноября 2011

У меня есть одно имя класса, поскольку myClassCalculate имеет следующий метод

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

NSLog(@"Accelerometer is called");

}

Я делаю объект в

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    


    // Override point for customization after app launch
       myObject = [[myClassCalculate alloc] init];

Теперь, когда приложение будет работать в фоновом режиме, я хочу это

    - (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

Что я могу сделать, чтобы этот метод вызывался в фоновом режиме приложения

Спасибо

Ответы [ 3 ]

7 голосов
/ 17 ноября 2011

Вы не можете, только VOIP, аудио и навигационные приложения могут работать в фоновом режиме.Таким образом, если ваше приложение не попадает ни в одну из них, оно приостанавливается и не получает никаких событий.

Подробнее о фоновом режиме: Состояния приложения и многозадачность

Объявление поддерживаемых фоновых задач вашего приложения

Поддержка некоторых типов фонового выполнения должна быть заранее объявлена ​​приложением, которое их использует.Приложение заявляет о поддержке службы, используя свой файл Info.plist.Добавьте ключ UIBackgroundModes в файл Info.plist и установите его значение в массиве, содержащем одну или несколько из следующих строк:

audio - приложение воспроизводит звуковой контент для пользователя в фоновом режиме.(Этот контент включает потоковое аудио или видео с использованием AirPlay.)

location - Приложение информирует пользователей об их местонахождении, даже когда оно работает в фоновом режиме.

voip - Приложение позволяет пользователю совершать телефонные звонки с использованием подключения к Интернету.

newsstand-content - это приложение для газетных киосков, которое загружает и обрабатывает содержимое журналов или газет в фоновом режиме.

external-accessory - Приложение работает с аппаратным аксессуаром, который должен доставлять обновления регулярно.

2 голосов
/ 17 ноября 2011

На WWDC в этом году они сказали, что обновления акселерометра можно наблюдать в фоновом режиме, но я не уверен, как это сделать.Я думаю, что это будет только iOS 5.

Для выполнения фоновых задач вам нужно добавить их в ваш info.plist в ключе UIBackgroundModes.Вот что доступно прямо сейчас.

audio Приложение воспроизводит звуковой контент в фоновом режиме.

location Приложение предоставляет пользователю информацию о местоположении и требует использования стандартных служб определения местоположения (в отличие от службы определения существенных изменений) для реализации этой функции.

voip Приложение предоставляет услуги Voice-over-IP.Приложения с этим ключом автоматически запускаются после загрузки системы, чтобы приложение могло восстановить службы VoIP.Приложениям с этим ключом также разрешается воспроизводить фоновое аудио.

newsstand-content Приложение обрабатывает контент, который недавно был загружен в фоновом режиме, с использованием инфраструктуры Newsstand Kit, поэтому контент готов, когда пользователь этого хочет.Это значение поддерживается в iOS 5.0 и более поздних версиях.

external-accessory Приложение связывается с аксессуаром, который доставляет данные через регулярные интервалы.

Попробуйте поместить местоположение в plist или использовать [UIApplication beginBackgroundTaskWithHandler:] Это значение поддерживается в iOS 5.0 и более поздних версиях.

0 голосов
/ 11 марта 2013

Когда приложение запускается в фоновом режиме, этот метод называется onUserLeaveHint()

...