У меня есть тестовый код, который я использую, чтобы поддерживать мое приложение в фоновом режиме, которое хорошо работает на симуляторе iOS 5.1, но не ведет себя таким образом на самом устройстве.фоновая задача работает на iphone
Теперь я уже знаю требования, которые я должен соблюдать, , поэтому я установил «фоновые режимы» для voip и location.
В методе applicationDidEnterBackground моего делегата я звоню следующую функцию , который я называю «doBackgroundActivity()» запросить время для применения, чтобы завершить некоторые давно запущенной задачи в фоновом режиме:
-(void) threadedMethod{
while(true){
NSLog(@"looping");
[self showLocalNotification:@"This notification will come every 2 min. if the app is running in background. Close it!"];
[NSThread sleepForTimeInterval: (5)]; // 60 sec = 1 min
}
}
-(void) doBackgroundActivity{
self->_backgroundTask = [ [UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask: self->_backgroundTask];
self->_backgroundTask = UIBackgroundTaskInvalid;
}
];
[self threadedMethod];
[[UIApplication sharedApplication] endBackgroundTask:self->_backgroundTask];
self->_backgroundTask = UIBackgroundTaskInvalid;
}
Как вы видите, doBackgroundAcitivity() просто вызывает threadedMethod(), и все, что делает, запускает бесконечный цикл, который отправляет локальное уведомление каждые 5 секунд или около того.
Теперь в симуляторе, когда я запускаю это и сворачиваю приложение, я вижу уведомление каждые 5 секунд или около того. Приложение продолжает работать в фоновом режиме, даже когда я запускаю другие приложения, я вижу, что приложение отправляет уведомления.
Но этого не происходит на устройстве. Похоже, что ОС убивает приложение сразу после отправки первого уведомления, и я не вижу никаких последующих уведомлений, которые я ожидаю увидеть позже?
Есть ли что-то еще, что я должен сделать, чтобы приложение работало в фоновом режиме?
Apple, скорее всего, отклонит вас, если вы на самом деле не используете voip и местоположение ... – kevboh